WEBサイトをHTTPS化するために必要なSSLサーバー証明書ですが、「暗号化のために必要」みたいな記事を見たので、SSLサーバー証明書が必要な理由を書いておこうと思いました。
SSL/TLS(以下、SSLとします)の主な機能には以下のものがあります。
- 通信の盗聴の防止
- 通信の改竄の防止
- なりすましの防止
この中の「通信の盗聴の防止」として、SSLは通信の内容の暗号化を行います。SSLの通信の暗号方式に通常は公開鍵暗号が使われ、公開鍵の交換にはDHEなどの鍵交換アルゴリズムが使われます。つまり「通信の暗号化」には、SSL証明書は必要ありません。
(鍵交換にRSAなどを使う場合はSSLサーバー証明書の公開鍵が利用されることもあります)
「SSLサーバー証明書」の実態は認証局が発行した電子証明書です。
SSLサーバーは事前に認証局から電子証明書を発行してもらいます。SSLクライアントは暗号通信を始める前に、サーバーから送られてきた電子証明書を認証局に登録されている電子証明書と照合することでSSLサーバーのなりすましを防止しています。
「サーバーのなりすまし」は、たとえばWiFiの通信を傍受して横取りしたり、LANケーブルをつなぎ変えたりなどして通信経路を変更し、偽のWEBサイトを表示させたりする行為です。
SSLの機能の中では、通信の暗号化がわかりやすい安全の理由としての説明に使われがちです。またHTTPS化にはSSLサーバ証明書が必須ですが、認証局や電子証明書についてはわかりにくいからか端折られがちです。それらの事情が合わさって「暗号化のためにSSLサーバー証明書が必要」のような表現になってしまっているように思います。
いくら通信を暗号化しても、通信経路を変えられて別のサーバーと通信させられてしまっては意味がないわけです。そのような行為から通信を守るためにSSLサーバー証明書が必要なのです。