前回は “SSL 通信” の概略について解説しました(前回の記事はこちらから)。
今回はその中でも重要な要素の一つ、証明書について解説します。

証明書とは

SSL 通信において証明書は通信相手 (通信元/宛先) が正しいか、信頼できるかどうかを示すものです。
ハンドシェイク時に通信元 (クライアント) ・宛先 (サーバー) が持つ証明書を交換し、お互い相手が信頼できると判断した場合にのみ通信を確立します。

証明書の内容

SSL 通信における証明書には下記の内容が記されています。

  • Country Name (国コード)
  • State or Province Name (都道府県名)
  • Locality Name (市町村名)
  • Organization Name (組織・会社名)
  • Organization Unit Name (部署名)
  • Common Name (アクセスに利用するドメイン名)
  • Email Address (メールアドレス)

証明書の発行

記載されている情報が正しいことを保証する為に、証明書は基本的に第三者 (認証局) に発行して (作成して) もらう必要があります。
用途に応じて、証明書をどのようにして用意するか検討する必要があります。

プライベート認証局で発行する

OpenSSL 等を利用して、プライベート認証局発行の証明書を自分で作成することも可能です。こうして発行した自己証明書は第三者から見れば何の保証にもなっておらず、不特定多数が利用する通信では利用できません。ただし作成した Web サーバーの動作確認などで、手軽に利用することができます。
また、社内のネットワークなど限られた範囲で SSL 通信を利用する場合に、社内のプライベート認証局で証明書を発行することがあります。発行した証明書は社内の PC へ事前に配布 (信頼できる証明書としてインストール) して利用します。

パブリック認証局で発行してもらう

外部公開する Web サーバー等に証明書を配置する場合には、基本的に認定された外部組織 (パブリック認証局) に依頼して証明書を発行してもらうことになります。認証の手続きにはいくつかの種類 (証明範囲) があり、必要な書類や日数、コストが異なります。導入する際には必要な証明範囲や認証局の選定を行う必要があります

証明書の階層構造

証明書には発行した認証局の署名が入っていますが、認証局自体も上位の認証局から証明書を発行してもらっている場合がほとんどです。最上位の認証局の証明書はルート証明書と呼ばれ、各 PC やブラウザなどに最初から信頼できる証明書として登録されています。下位の認証局の証明書は中間証明書とよばれ、環境に応じてインストールが必要な場合があります。

まとめ

今回は SSL 通信の要素の一つ、証明書に関してご紹介しました。引き続き、AIMNEXT Noteでは「SSL 通信」の詳細や、セキュリティ関連の記事を投稿していこうと思います。