サーバ証明書を理解する

サーバ証明書はどんな時に使うのか?

サーバ証明書は、HTTPS通信に対応したサイトにする際に必要になる。HTTPS通信は下記のようなサーバクライアント間の暗号化通信を行うもの。

https.png

HTTP通信とHTTPS通信の違い

HTTPS通信では暗号化通信を行うので、サーバクライアント間で暗号化に使う鍵を事前に交換しておく必要がある。交換した鍵を用いて暗号化通信をすることで安全な通信が実現できる。 diff.png

TLS通信によるメリットをまとめる。

  • 真正性
    サーバ証明書を利用して、サーバが本物であることを証明
  • 通信暗号化
    下記により安全に鍵を交換し、通信を暗号化する
    • サーバの公開鍵を用いた共通鍵の交換
    • 交換した共通鍵を用いた通信暗号化
  • 完全性
    ハッシュ値を用いて、通信の改竄を検知する。 具体的には、データ送信時に共通鍵で暗号化したデータとハッシュ値を送信する。受信側では、受信データのハッシュ値を計算し、送られてきたハッシュ値と等しいかを確かめ、改竄がないかを確認する。

上のような暗号化技術(鍵交換技術、認証技術、共通鍵暗号技術、ハッシュ関数技術)の組み合わせを暗号スイートと呼ぶ example.png

サーバ証明書・TLS/SSL通信・HTTPS暗号アルゴリズム

なぜサーバ証明書が必要?

暗号化通信を行うことで安全な通信ができるようになったが、相手が本物かどうかをクライアントが確認してから通信しないと、悪意あるサイトによるなりすましで、情報を盗まれてしまう可能性がある。そこで利用されるのがサーバ証明書

サーバ証明書は、信頼できる第三者機関の認証局(CA:Certificate Authority)と呼ばれるところから発行される。クライアントはTLSコネクション時にサーバから受け取ったサーバ証明書を、クライアント自身の認証局の情報を基に確認し、信頼できる相手かを判断する。 これによりなりすましを予防できる。

サーバ証明書発行の流れ

  1. サーバが秘密鍵を用意
  2. サーバの秘密鍵CSRを用意
  3. CSR認証局に申請
  4. 認証局ではCSRの内容を審査(実在するかどうか等)
  5. 問題なければ認証局秘密鍵で署名
  6. サーバ証明書をサーバに送る csr.png

参考