現在ではルート認証局ではなく中間認証局が署名することが多い。よって中間証明書も必要。 シマンテック、ジオトラストなどは、ルート認証局のほかに中間認証局も運営している。
.pem
にする場合が多い) .csr
) .crt
)秘密鍵のパーミッションはオーナー以外に操作権限のない600です。
ブラウザーは公開鍵を取得してSSLの通信を開始する。 その後は共通鍵で暗号化する。
初めにSSLの仕組みについて、おおまかにですが説明しておきます。 SSLではクライアント、サーバー間でデータを暗号化して送受信を行う際に、共通鍵暗号化方式を使用します。 共通鍵暗号化方式は、データの暗号化と復号化に同じ鍵が使用されるようになっており、SSLではクライアントとサーバーで同じ鍵を共有することで、暗号化されたデータの送受信が行われるのですが、この鍵を安全にクライアントとサーバーで共有するために、公開鍵暗号化方式が使用されます。 公開鍵暗号化方式は、データの暗号化と復号化に異なる鍵が使用されるようになっており、SSLではサーバーが暗号化用の鍵と復号化用の鍵の組み合わせを作成し、復号化用の鍵は秘密鍵としてサーバーが保持し、暗号化用の鍵は公開鍵としてサーバーからクライアントに送信されます。 この公開鍵を送信する際には、サーバーの正当性を証明するために、認証局が作成した証明書が使用されます。 ここではサーバーを認証局とした、自己署名の証明書を作成します。 公的な認証局で証明書を作成する場合は、その認証局のホームページに秘密鍵と、証明書の作成依頼となるCSRの作成方法が公開されているかと思いますので、そちらをご参照ください。主な流れとしては、ここで紹介しているものと同様かと思います。
ファイル:SSLによるセキュアな通信.jpg - Wikipedia
サーバーで秘密鍵と公開鍵証明書を作成します。
公開鍵はサーバー証明書の一部となります。
電子署名
+ 公開鍵
pem
)です。OpenSSLで自己証明書を作成できます。
http://postd.cc/https-on-nginx-from-zero-to-a-plus-part-1/
ここではCentOS7.1 64bitでOpenSSLを使用して、SSLを使用する際に必要となる秘密鍵と証明書を作成する方法を以下に示します。
$ mkdir /etc/nginx/ssl
$ cd /etc/nginx/ssl
$ openssl req -new -x509 -sha256 -newkey rsa:2048 -days 365 -nodes -out /etc/nginx/ssl/nginx.pem -keyout /etc/nginx/ssl/nginx.key
基本的なSSL3向けのNginxの設定部分も簡単です。以下の設定をnginxファイルに追加します。
.pen
が公開鍵証明書(ブラウザに渡る)、.key
が秘密鍵(サーバが保持)。
server {
# [...]
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/nginx.pem;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
# [...]
}
pem 認証ファイル X.509証明書の拡張子 .pemは、Base64で符号化された証明書です。.pem SSL サーバ証明書(連結SSLサーバ証明書)では複数のサーバ証明書を1ファイルに連結させることができ、SSLサーバ証明書のインストール用によく使われます。 .pemファイルを使うサービスによって、必要とされる内容が異なります。.pemファイルに必要な内容については、利用するサービス(アプリケーション)のインストールガイドを参照ください。
https://www.digicert.ne.jp/howto/basis/pem-ssl-creation.html
http://qiita.com/kunichiko/items/12cbccaadcbf41c72735
PKI(Public-Key Infrastructure)は公開鍵暗号※1を利用した認証基盤です。 https://www.nic.ad.jp/ja/newsletter/No23/080.html
http://www.slideshare.net/kenjiurushima/qpstudy-20151114-ssltls?from_m_app=android
公開鍵認証のための暗号化アルゴリズムです。
改竄防止のため使われます。
HMAC (Hash-based Message Authentication Code) とは、メッセージ認証符号 (MAC; Message Authentication Code) の一つであり、秘密鍵とメッセージ(データ)とハッシュ関数をもとに計算される。 Wikipedia
メッセージ認証のための暗号化アルゴリズムです。
共通鍵のための暗号化アルゴリズムです。
Advanced Encryption Standard(AES:高度暗号化標準) はアメリカ合衆国の新暗号規格として規格化された共通鍵暗号方式である。 wiki
http://d.hatena.ne.jp/kasei_san/touch/20120329/p1
クライアントは、公開鍵証明書をサーバから受けとるクライアントは、公開鍵証明書から、公開鍵を取得。それを使って乱数を暗号化してサーバに送るサーバは、乱数を元にした共通鍵を作って、クライアントに送る共通鍵で通信する通信が終わったら共通鍵を破棄する
こういう、秘密鍵と共通鍵を組み合わせた方法を、ハイブリッド暗号化方式というらしい。
澤井 乱数はクライアントしか知らないないので共通鍵がもれても復号化できない。
ルートドメイン(例:example.com)に限ってwwwあり・なしの両方に対応するためにWildcard certificateをする必要はない。
例えばwww
以外のtext1.example.com
、test2.example.com
を一括で対応使用する場合は、Wildcard certificateが必要。
ファイル:SSLによるセキュアな通信.jpg - Wikipedia
http://www.kakiro-web.com/linux/ssl.html
ここではCentOS7.1 64bitでOpenSSLを使用して、SSLを使用する際に必要となる秘密鍵と証明書を作成する方法を以下に示します。
初めにSSLの仕組みについて、おおまかにですが説明しておきます。 SSLではクライアント、サーバー間でデータを暗号化して送受信を行う際に、共通鍵暗号化方式を使用します。 共通鍵暗号化方式は、データの暗号化と復号化に同じ鍵が使用されるようになっており、SSLではクライアントとサーバーで同じ鍵を共有することで、暗号化されたデータの送受信が行われるのですが、この鍵を安全にクライアントとサーバーで共有するために、公開鍵暗号化方式が使用されます。 公開鍵暗号化方式は、データの暗号化と復号化に異なる鍵が使用されるようになっており、SSLではサーバーが暗号化用の鍵と復号化用の鍵の組み合わせを作成し、復号化用の鍵は秘密鍵としてサーバーが保持し、暗号化用の鍵は公開鍵としてサーバーからクライアントに送信されます。 この公開鍵を送信する際には、サーバーの正当性を証明するために、認証局が作成した証明書が使用されます。 ここではサーバーを認証局とした、自己署名の証明書を作成します。 公的な認証局で証明書を作成する場合は、その認証局のホームページに秘密鍵と、証明書の作成依頼となるCSRの作成方法が公開されているかと思いますので、そちらをご参照ください。主な流れとしては、ここで紹介しているものと同様かと思います。
公開鍵で暗号化したデータは秘密鍵でしか復号化できない。
サーバに配置
OpenSSLは自己証明書なのでpemファイルも一緒に作成する。
http://postd.cc/https-on-nginx-from-zero-to-a-plus-part-1/ mkdir /etc/nginx/sslcd /etc/nginx/sslopenssl req -new -x509 -sha256 -newkey rsa:2048 -days 365 -nodes -out /etc/nginx/ssl/nginx.pem -keyout /etc/nginx/ssl/nginx.key 基本的なSSL3向けのNginxの設定部分も簡単です。以下の設定をnginxファイルに追加します。 server { # [...] listen 443 ssl; ssl_certificate /etc/nginx/ssl/nginx.pem; ssl_certificate_key /etc/nginx/ssl/nginx.key; # [...]}
pem 認証ファイル> X.509証明書の拡張子 .pemは、Base64で符号化された証明書です。.pem SSL サーバ証明書(連結SSLサーバ証明書)では複数のサーバ証明書を1ファイルに連結させることができ、SSLサーバ証明書のインストール用によく使われます。 .pemファイルを使うサービスによって、必要とされる内容が異なります。.pemファイルに必要な内容については、利用するサービス(アプリケーション)のインストールガイドを参照ください。https://www.digicert.ne.jp/howto/basis/pem-ssl-creation.html http://d.hatena.ne.jp/install-memo/20110906/1315291837 SSL証明書の発行プロセスでは、KEYファイルとCSRファイルを作ることになります。また、証明書会社からはCRTファイルが送られてきます。これらが正しいかどうかをチェックする方法を紹介します。
KEYファイルとは
KEYファイルというのが正式名称だとは思えませんが、ここではSSL通信に利用する公開鍵暗号系の秘密鍵ファイルを指します(おそらく公開鍵情報も含んでいるんだと思いますが、このあたりはよくわかっていません)。
暗号