SSL(Secure Sockets Layer)とは
インターネット上でデータを暗号化して送受信する方法のひとつで、Netscape Communications社が開発したプロトコル
TLS(Transport Layer Security)は、SSLをもとに標準化させたもの
SSL通信の仕組み
調べた結果、概要部分はほとんど「SSLオフ.com」様の転記になりました
SSL暗号化通信の開始要求
・Aさんのブラウザ : httpsで始まるURLへアクセス
Aさんのブラウザ : 対応可能な暗号化仕様(暗号方式、鍵長、圧縮方式)をネットショップBのウェブサーバへ提示
・ネットショップBのウェブサーバ : Aさんのブラウザとやり取りする暗号化仕様を決定
SSLサーバ証明書の送付(サーバ認証)
・Aさんのブラウザ : ネットショップBのウェブサーバから送られて来たSSLサーバ証明書に偽りがないか?証明書発行局の電子署名から自動判別
この際に、SSL証明書が自己の正当性を自分で証明できない中間証明局(中間CA)にて認証されていれば、上位のCAに正当性を証明してもらう必要があり、中間証明書が必要となる
SSLサーバ証明書に問題なし : SSL暗号化通信の準備開始
SSLサーバ証明書に問題あり : 警告メッセージ表示
共通鍵の生成
・Aさんのブラウザ : ネットショップBのサーバの間で対応可能な最も強度の高い鍵長(40bit・56bit・128bit・256bit)で共通鍵を生成
共通鍵の暗号化・送付
・Aさんのブラウザ : 共通鍵をネットショップBのサーバの公開鍵(SSLサーバ証明書)で暗号化のうえ、ネットショップBのサーバへ送付
・ネットショップBのサーバ : 共通鍵を秘密鍵(公開鍵とペア)で復号し、共通鍵を取得
・共通鍵を安全にやり取りするために、公開鍵暗号方式が利用される
SSL暗号化通信の開始
・SSL暗号化通信中は、共通鍵暗号方式が利用される
・共通鍵はセッション単位で生成、破棄される
SSL証明書の中身
証明書発行局の電子署名とは
「ウェブサーバの所有者情報と公開鍵」のメッセージダイジェスト(CSR)を、認証局の秘密鍵で暗号化したもの
以下の手法で証明書の正当性を検証する
ハッシュ計算のアルゴリズムについて、SHA-1やSHA-2などがあるが、あと2年ほどでSHA-1は利用できなくなる(脆弱性があるため。ブラウザからエラーが出るようになる)
この脆弱性により、オリジナルの証明書と同一の署名を持つ別の証明書(なりすまし証明書)を生成することができる
http://www.atmarkit.co.jp/ait/articles/1402/05/news117.html
https://www.cybertrust.ne.jp/ssl/sureserver/sha1ms.html
http://news-test.valuessl.net/?p=869
よりプロトコルよりの情報
メッセージの構成は「レコード・プロトコル」として,やりとりの手順は「ハンドシェーク・プロトコル」として規定されている
SSL通信をコマンドラインで
openssl s_client -connect www.google.co.jp:443
GET / HTTP/1.1
openssl s_client -connect ssl.example.org:443 -showcerts
証明書ファイルの内容を確認
# openssl x509 -text -noout -in /[FilePath]/[CertFile]
秘密鍵ファイルの内容を確認
# openssl rsa -text -noout -in /[FilePath]/[KeyFile]
CSRファイルの内容を確認
# openssl req -text -noout -in /[FilePath]/[CSRFile]
SSL証明書の購入
SSL証明書の設置
SSLチェックツール
https://knowledge.rapidssl.com/support/ssl-certificate-support/index?page=content&id=SO9556
https://ssltools.geotrust.com/checker/views/certCheck.jsp
https://sslcheck.globalsign.com/ja/