SSL証明書について考える機会があり、あまり詳しくなかったので、この際に調べてみようと思い、まとめてみました。
①SSL証明書とは
SSL証明書は、ウェブサイトの「運営者の実在性を確認」し、ブラウザとウェブサーバ間で「通信データの暗号化」を行うための電子証明書です。
ウェブサイトの所有者の情報や、暗号化通信に必要な鍵、発行者の署名データが含まれています。
SSL証明書の発行は、グローバルサインなどの認証局が、対象のウェブサイトのドメインの使用権の確認と、ウェブサイトの運営者(組織)の実在性の審査を行います。
「実在する運営者(組織)によって運営されている本物のウェブサイト」であることが認証局によって認証され、ユーザは自分がアクセスしたウェブサイトが、安心して利用できるウェブサイトであることが確認できます。
つまり、このサイトは○○○○株式会社のものであるという証明になります。
そこで沸いた疑問がこのサイトが○○○○株式会社のものであるという証明がないと何かヤバイのかということです。
②SSL証明書の必要性
端的に言うと、「なりすまし」「盗聴」「改ざん」のリスクを回避できます。
さらに、SSL証明書の有効期限が切れると、ウェブサイトで利用している場合はサイト閲覧ができなくなってしまいます。
有効期限切れの場合は「安全ではありません」や「プライバシーが保護されません」などのエラー画面が表示されます。
これはブラウザ側がSSL証明書の有効期限切れを認識してアクセスをブロックし、エラー画面を表示しています。
運用で大打撃を受けるパターンです。
③SSL証明書の管理
運用でやってはいけない期限切れをどうやって防ぐか考えついたものをいくつか記載したいと思います。
①スケジュールに登録
シンプルなやり方ですが、期限切れ2週間前くらいに通知が来るように設定しておきます。
基本的には2年で期限が来るようにしているところが多いと思いますので、そのスパンで通知が来るように設定します。
もしくはメールなどでわかるように設定します。
②自動更新に対応したSSL証明書を利用する
通知が来るようになっても、担当者が不在など想定外のことが起こる可能性があるので、更新日を気にしなくていいように自動で更新できると楽です。
下記のようなサービスが一般的です。
・Let’s Encryptを導入して更新を自動化する ・AWS Certificate Manager (ACM) を利用する
ACMはAWSにしかSSL証明書を発行しませんが、CloudFrontを使うことにより外部のサーバに対しても実質的にSSL証明書を導入することができます。
ただ、一応メールなどが来ると思うので、確認は必ずしましょう!!!!
③監視システムの導入
②でも記載したように担当者が不在や対応できない場合を考慮して、全員が見れるようにSlackなどに通知が来るようにすれば、気付く可能性がグッと上がるので、おすすめです。
例えば、さくらのクラウドの「シンプル監視」という機能などがありますし、自分でスクリプトを書くなども考えられます。
証明書は甘くみていると尋常ではない被害を受ける可能性があります。
そうならないために対策をとって管理する必要があると感じました。