【プロトコル】SSL / TLS ~用語・拡張子編~

■ はじめに

http://codezine.jp/article/detail/105
http://d.hatena.ne.jp/ozuma/20130511/1368284304
などを使って、SSL通信を学ぶ。

補足:暗号化に関わる用語

 * 以下の関連記事を参照のこと
https://blogs.yahoo.co.jp/dk521123/37269757.html

■ 用語整理

認証局(CA/Certificate Authority)

役割
 [1] 取引当事者の公開鍵に対する電子(ディジタル)証明書を発行すること
 [2] 失効の依頼を受けた電子証明書秘密鍵の危殆化の可能性のある証明書を失効させる
   => 有効期限内のディジタル証明書のうち、
      失効したディジタル証明書のシリアル番号と破棄された日時の一覧を「証明書失効リスト(CRL)」という(下記参照)
補足:理解度チェック
 * 理解できてるか以下の問題でチェック
http://www.sc-siken.com/kakomon/26_haru/am2_1.html
種類
 * 認証局には、以下の2つがある
  [1] ルート認証局(root CA)
  [2] 中間認証局(intermediate CA)
http://e-words.jp/w/E8AA8DE8A8BCE5B180.html
http://www.atmarkit.co.jp/ait/articles/0011/21/news002.html
https://jp.globalsign.com/service/knowledge/ca/

PKCS(Public-Key Cryptography Standards)

 * 公開鍵を用いた暗号技術の標準規格群。
http://www.atmarkit.co.jp/aig/02security/smime.html
PKCS #10
 * 公開鍵の認証を要求するために認証局へ送信されるメッセージのフォーマット

PKI(Public Key Infrastructure / 公開鍵基盤)

 * 公開鍵暗号を用いた技術・製品全般を指す
http://www.atmarkit.co.jp/fsecurity/special/02fivemin/fivemin00.html

証明書失効リスト(CRL / Certificate Revocation List)

 * 有効期限を迎えていないにもかかわらず無効となった証明書のリスト
  => 証明書のリストには、失効した『証明書のシリアル番号』と『失効日』が記載
 * 認証局(CA)は、CRLを公開し、このCRLのURLを、あらかじめサーバー証明書に記載
http://www.atmarkit.co.jp/ait/articles/0102/23/news002.html
http://ja.wikipedia.org/wiki/%E8%A8%BC%E6%98%8E%E6%9B%B8%E5%A4%B1%E5%8A%B9%E3%83%AA%E3%82%B9%E3%83%88
https://rms-digicert.ne.jp/howto/basis/revoked_ssl_certificates_ocsp_crl.html
http://www.atmarkit.co.jp/ait/articles/0102/23/news002.html
CRL 配布ポイント(CDP / CRL DP / CRL Distribution Points)
 * 認証局(CA)の証明書失効リストを公開する場所(URL)を、あらかじめサーバー証明書に記載
  => この場所(URL)をCRL 配布ポイントという
http://www.atmarkit.co.jp/ait/articles/1509/17/news016_2.html

OCSP(Online Certificate Status Protocol)

 * X.509公開鍵証明書の失効状態を取得するための通信プロトコル
  => 認証局が提供するOCSPサーバーに対して、証明書のシリアル番号を問合せ、OCSPサーバーが失効済みかどうかを返す
 * 仕様は、RFC 2560で規定
CRLとの比較
■ CRL
 * 以下の2段階の手順が踏むため、一定程度の時間を要する
  1) ファイルをダウンロード
  2) そのファイルを元にチェックする

■ OCSP
 * 非常に短時間で結果を入手可能
 * ただし、OCSPで確認できるのはデジタル証明書が失効しているか否かということだけ
  => よって、有効期限が切れていないかどうかの確認などはクライアント側で行う必要がある
https://rms-digicert.ne.jp/howto/basis/revoked_ssl_certificates_ocsp_crl.html
http://e-words.jp/w/OCSP.html

証明書署名要求(CSR/Certificate Signing Request)

http://program.sagasite.info/wiki/index.php?CSR
 * SSLサーバ証明書を申請するための署名要求(鍵に署名してくれと要求すること)
 * CSRには、以下の情報が含まれる。
   + 公開鍵の情報
   + 申請者を識別(Distinguished Name=識別名)する情報 (組織名や所在地等の情報) 
フォーマット
「―–BEGIN CERTIFICATE REQUEST―–」で始まり、
「―–END CERTIFICATE REQUEST―–」で終わる
もしくは
「-----BEGIN NEW CERTIFICATE REQUEST-----」で始まり、
「-----END NEW CERTIFICATE REQUEST-----」

秘密鍵

 * 発行される証明書と対になるファイル
フォーマット
「―–BEGIN RSA PRIVATE KEY―–」からはじまり
「―–END RSA PRIVATE KEY―–」で終わる

証明書(公開鍵)

 * SSL証明書と呼ばれるファイル
フォーマット
「―–BEGIN CERTIFICATE ―–」からはじまり
「―–END CERTIFICATE―–」で終わる

Subject Alternate Names(SANs;サブジェクトの別名)

マルチドメイン(Multi-Domain)ともいう?
 * 一般に、1サーバに対して、複数ホストを利用する場合は、ホストごとに異なる IP が必要だが、
   Subject Alternative Namesを利用した証明書であれば、複数ホスト名を登録可能
 * 以下のサイトが分かり易い
https://rms-digicert.ne.jp/service/san.html

トラストストア(Trust Store)

 * 自らが信頼するCAのルート証明書/中間証明書を保存する場所(ファイル)
 * JSSEのプロバイダは、SSLの通信先がサーバー証明書を送信してきた際に、
   トラストストアに保存されている証明書によって署名がなされているかどうかによって認証可否を判断する

キーストア (Key Store)

 * 自らのサーバー証明書と鍵を保管するためのデータベースファイル
 * JKS(Java Key Store)の場合、サーバー証明書をインストールする前に、
  その上位のルート証明書・中間証明書も共にインストールする必要がある
 * キーストア内のすべての鍵と証明書は エイリアス(alias)という別名で管理されている

■ 拡張子

* 必ずしもそうじゃないが、目安として書いておく

キーストア、トラストストア

 *.jks

# JKS(Java Key Store)

証明書署名要求(CSR)

 *.csr

秘密鍵

 *.key

サーバ証明書(公開鍵)

 *.crt
 *.cert
 *.ca

中間証明書(X.509証明書)

 *.cer - CERで符号化された証明書。 中身は証明書のみ。バイナリ形式。
 *.der - DER(Distinguished Encoding Rules)で符号化された証明書。 中身は証明書のみ。バイナリ形式。
 *.pem - PEM(Privacy Enhanced Mail)。Base64 で符号化された証明書。秘密鍵や証明書、証明書要求の入れ物
http://www.ssl-concier.com/news/topics/164
http://ja.wikipedia.org/wiki/X.509
http://www.glamenv-septzen.net/view/1058


関連記事

Tomcat

TomcatSSL通信 ~簡易版~
http://blogs.yahoo.co.jp/dk521123/31967584.html
TomcatSSL通信 ~TomcatCSR作成と証明書を組み込む~
http://blogs.yahoo.co.jp/dk521123/32060070.html

Java

Java で、SSL通信を行うには
 * 今回の証明書などを使って、JavaによるSSL通信。
http://blogs.yahoo.co.jp/dk521123/33122920.html

Openssl / keytool

Opensslの設定と自己証明書作成
http://blogs.yahoo.co.jp/dk521123/32723492.html
Openssl に関するトラブルシューティング
http://blogs.yahoo.co.jp/dk521123/33100502.html
Keytool と Openssl を使った証明書作成
http://blogs.yahoo.co.jp/dk521123/33788938.html
keytoolエラーに関するトラブルシューティング
http://blogs.yahoo.co.jp/dk521123/32297632.html