エンジニアリング部エンジニアリング課のひよっこエンジニアKと申します。今回私はSSL化の案件に携わったのですが、そのときに一緒にローカル環境のSSL化の課題にも取り組みました。今回の記事ではそれらを生かして、SSL化とは何をやっていることなのか?有料SSL証明書と無料SSL証明書の違いって何なのか?について、まとめてご紹介します。
SSL化ってなんなの?
SSL化とは、簡単に言うとサーバーとブラウザ間での通信を暗号化するしくみです。SSL化するとURLがhttpから始まっていたのがhttpsから始まるようになるだけに見えますが、実は通信の安全性が格段に上がっています。
通信の暗号化のしくみは、以下のとおりです。
①ブラウザ側がSSL送信をリクエストする
②サーバー側がサーバーの公開鍵入りのサーバー証明書を渡す
③ブラウザ側が公開鍵を取り出し、自分で作った共通鍵を公開鍵に従って暗号化する
④ブラウザ側が暗号化した共通鍵をサーバーに送付
⑤サーバー側は、暗号化された共通鍵を自分の秘密鍵を使ってもとに戻す
➅同じ共通鍵を使って、送受信するデータを暗号化したりもとに戻したりしてやり取りする
SSL化していないサイトにはどんなデメリットがあるのでしょうか?SSL化していないということは、ブラウザとサーバーの間のやり取りは筒抜けです。つまり、やり取りされているデータを盗み見たり、やり取りされている途中でデータを改ざんしたりすることができてしまいます。また、ブラウザによってはサイトが表示できなくなったり、Google検索で冷遇されたりすることもあります。これらを防ぐために、SSL化は必要なのです。
どうやってSSL化するの?
SSL化が重要なことはわかりました。では、SSL化には何が必要で、どうやってやるものなのでしょうか?SSL化に必要なものは、秘密鍵、CSR、サーバー証明書の3つです。秘密鍵→CSR→証明書の順で用意します。それらの用意の仕方と、それらの活用の仕方を下記でご紹介しましょう。
①秘密鍵の生成
まずは秘密鍵を生成します。いちばん重要な過程です。この秘密鍵を作らない限り、次のCSRファイルは作れません。
②CSRの作成
先程作った秘密鍵からCSRを作成します。これはサーバー証明書を発行するときの申込み書のようなもので、サイトのドメインを利用する会社の所在地などを入力する過程があります。また、秘密鍵とセットになる公開鍵が含まれています。
③サーバー証明書の発行
さっき作ったCSRファイルの内容を認証局という所に送ると、署名されてサーバー証明書が送られてきます。それをサーバー側に保存して完了です。
④Apacheなどで設定
サーバー証明書を発行できたら、Apacheなどで設定を行いましょう。SSLの設定を追加し、Apacheなどを再起動したら、めでたくSSL化成功です。
有料SSL証明書と無料SSL証明書のちがい
SSL証明書、つまりサーバー証明書には無料のものと有料のものがあります。それぞれどんな特徴があるのか、見てみましょう。
無料証明書について
①通信の暗号化に関しては有料の証明書と暗号化強度は同じ
無料でも有料でも、通信の暗号化に関してはどちらも同じレベルで暗号化してくれます。通信の安全性については有料のものと全く同等の安全性を保証することができます。
②ものによっては自動更新が設定可能
例えばLet’s Encryptという、無料証明書を発行してくれる認証局では、スクリプトを設定しておけば自動更新に対応してくれます。いちいち人力で更新しなくて良いのはありがたいですね。
③手厚いサポートが受けられない
有料証明書を発行してくれる認証局では、例外があっても手動で対応してくれる可能性があるのですが、無料証明書を発行している認証局ではそうはいきません。もし例外があって発行できないとなった場合は、他の認証局から有料の証明書をもらう必要があります。
④フィッシングサイトなどで悪用されてしまうこともある
特徴の①で、通信の暗号化に関しては暗号化強度が有料の証明書と同じと言ったのですが、逆に言えばそれ以外については特に無料証明書では保証されません。つまり、CSRファイルにドメインを所有している企業名やその所在地などを書きますが、その企業が本当に実在しているのかについては、無料証明書では特に確かめていないことになります。なので、それが架空の企業名だったとしても、証明書を発行してしまう可能性があります。
有料証明書について
①実は3種類ある
有料証明書の中には、3種類の証明書が存在します。それぞれドメイン認証型(DV)、企業認証型(OV)、EV(Extended Validation)認証といいます。後で詳しく説明しますが、それぞれすべて価格が違い、証明してくれるものも変わってきます。
②認証の有効期限が長いものがある
なんと、最長で2年も有効な証明書を購入することができます。実は2018年までは3年3ヶ月が最長だったのですが、2018年3月1日以降から2年3ヶ月に短縮されたようです。しょっちゅう更新しなくて良いのはありがたいですね。
③サポートが手厚い
有料ということで、サポートが手厚い傾向があります。例えばサーバー証明書でブラックリストが存在し、機械的な発行ができない場合がありますが、有料の証明書を発行してくれる認証局では手動で発行するなどの対応を行ってくれる可能性があります。
④自動更新に対応していないものが多い
後で説明する証明書の種類についてにも関わってくるのですが、認証を人力で行ったりするものもあるため、自動更新に対応していないものも多いです。さくっと証明書が取れないところに関しては、不便に感じるかもしれません。また、これに付随して、更新に時間がかかるというデメリットも挙げられます。
3種類の有料SSL証明書を比較してみよう
では最後に3種類の有料SSL証明書についてご紹介いたします。
ドメイン認証型(DV)
有料証明書の中で一番安い証明書です。そのドメインの持ち主であるかどうかを認証します。有料証明書の中では唯一個人でも取得可能な証明書になっています。
企業認証型(OV)
有料証明書の中で二番目に安い証明書です。そのドメインの持ち主であるかと同時に、そのサイトを運営している団体が実在するかも認証します。帝国データバンクに企業情報がある法人が利用できます。ドメイン認証型より信頼度の高い証明書であり、銀行やECサイトなどお金や個人情報を取り扱っているサイトで使われます。
EV(Extended Validation)認証
有料証明書の中で最も高く、かつ信頼度も一番高い証明書です。企業認証型では帝国データバンクに企業情報がある法人が対象となっていましたが、この証明書では企業の活動実態も審査対象に入ります。SSL証明書が発行されていればURLに鍵マークが表示されますが、この証明書が発行されている場合、アドレスバーが緑色に変化し、ひと目で信頼性が高いサイトだと認識することができます。国のサイトや、ブランドサイト等で利用されます。
今回のまとめ
①SSL化ではサーバーとブラウザ間での通信を暗号化している
②SSL化には秘密鍵とCSRファイル、サーバー証明書が必要
③有料の証明書と無料の証明書があり、有料の証明書はその中でも信頼度の度合いで3種類の証明書が存在する
④有料の証明書では、企業の実在性や企業の活動実態も証明対象になるものがある
参考サイト:
常時SSLにはどれを使う?今さら聞けないSSL証明書の種類と違い
SSLとは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
【SSLを導入しよう】Apache+OpenSSLでSSLを導入する方法
CA/Browser Forum 2018年の主な出来事とSSLの今後の焦点