サーバー証明書は、Web サーバーが「ブラウザ (利用者) との通信暗号化のため」「第三者から認定されたサーバーであることを証明するため」に導入されます。
サーバー証明書は「SSL/TLS 暗号化プロトコル」を利用しているため、次のように表記されることが多いです。
・SSL サーバー証明書
・SSL/TLS サーバー証明書
・TLS/SSL サーバー証明書
いずれも同じ意味です。
(この記事内では以降、SSL サーバー証明書とします)
現在では「SSL」は、あまり使われておらず、後続である「TLS」に移行しつつあります。
しかし、呼び名は「SSL」の方が浸透しているため、TLS が多く利用される現在でも SSL サーバー証明書と呼ばれることが多いです。
SSLサーバー証明書は医師免許
SSL サーバー証明書は、現実世界で例えると「医師免許」のようなものです。
医師免許は政府機関から公的に医師であることが証明されますが、サーバー証明書は第三者機関である認証局 (CA: Certificate Authority) から真正なサーバであることが証明されます。
上記の例でいうと、CA は政府機関に相当します。
病気になって病院で診てもらうとき、医師免許を持っている医者なら安心できますが医師免許を持っていない医者に診てもらうのは気が引けます。
それと同様に、Web サイトに訪問し「パスワード」や「クレジット番号」を入力するとき、SSL サーバー証明書が導入されていると通信が暗号化され安心ですが、SSLサーバー証明書が導入されていない場合は通信が暗号化されず、情報を盗み見されたり、書き換えられたりする可能性があります。また、第三者機関からの証明もないので怪しい Web サイトとなります。
SSLサーバー証明書の必要性
Web サーバーというのはインターネット上に公開する際、基本的に誰の許可なくともインターネット上に公開することができます。ドメイン名の取得さえ必要がありません。
(※ 現在では、実質的にこのようなことはできません)
かつてインターネット上には、SSL サーバー証明書が導入されていない Web サーバーがたくさんありました。
ただ、このことにより、フィッシングサイト (ID やパスワードを入力させアカウントを不正利用されたりするサイト) などの悪意のあるサイトが簡単に作れてしまうこと等が問題になります。
これを防ぐために、第三者機関で発行された証明書をサーバーに導入することで、インターネット上に公開された Web サーバーが真正なサーバーであることを利用者からも判断できるようになります。
証明書を更新しないとどうなる
SSL サーバー証明書には「1年」や「2年」などの有効期限があります。最長でも2年間です。
これを更新しない場合、利用者がブラウザでアクセスした際にブラウザが利用者に対し警告を表示します。
“このサーバーは安全ではありません。それでも進みますか“
“この接続ではプライバシーが保護されません“
というような警告メッセージです。これが表示された経験は誰しもあるのではないでしょうか。
サーバー作成者が誰でどんな Web サイトかを知っていて問題ないと思ったらそのまま進めることもできます。
エンジニアだけが扱う管理用サーバーなどではそのまま進めることもありますが、インターネット上に公開されていて、誰しもが閲覧できる Web サイトでこのメッセージが表示されるということは、Web サイト管理者が管理を怠っている可能性があるので即退去した方が無難でしょう。
実は3種類あるSSLサーバ証明書
SSL サーバー証明書は、3種類あります。
Web サイト管理者のドメインが、第三者によってどのくらいのレベルまで調査されているかによって証明書の認証レベルが変化します。
どの認証レベルでも証明書の有効性は変わらず、基本的に利用者にとっては何も変化がないように見えます。
ただし、証明書に埋め込まれている情報量が違います。
このことにより、そのドメインの信頼性も変化します。
DV (Domain Validated) ドメイン認証
認証レベル 低 ★
ドメイン名が正しいかどうかを認証する
OV (Organization Validated) 企業実在認証
認証レベル 中 ★★
DV に加え、会社名も証明する
EV (Extended Validation) 拡張認証
認証レベル 高 ★★★
DV、OV に加え、電話による実在確認や運用状況も確認された証明書
(※ ブラウザによってはアドレスバーの鍵マーク等がグリーンになります)
SSL から TLS へ
SSLは、SSL 1.0 → SSL 2.0 → SSL 3.0 とバージョンアップしていきました。
ただしこの SSL は、2014年に脆弱性が見つかり、現在では SSL を基に開発された TLS (Transport Layer Security) が使われるようになっています。
