クライアント、サーバ間のHTTPSの暗号化通信に必要な、SSL/TLSサーバ証明書の必要性や仕組みについてわかりやすく解説します。
サーバ証明書とは
一言でいうと、「サーバに導入する証明書」です。
何を証明するための証明書なのかというのは、次項で説明します。
システムとの通信というのは、クライアント(例えば、Webブラウザ)から、サーバ(例えば、Webサーバ)へのリクエストから始まります。
リクエスト先のサーバにサーバ証明書が入っていないと、次項で説明する内容を証明できません。そうすると、通信に安全性が脅かされてしまいます。
では、通信の安全性を保つために、何を証明しなければならないか説明します。
サーバ証明書の必要性(何を証明しているか)
サーバ証明書をサーバに導入することで、以下3点を証明することができます。
そうすることで、クライアント⇔サーバ間の通信を安全に保つことができます。
証明①:データが暗号化されていること
サーバ証明書の導入で実現できることの一つ目が、暗号化通信です。
暗号化とは、通信されるデータの内容を判別できないようにすることです。
Webブラウザ⇔Webサーバ間の通信が暗号化されていない場合、悪意のある第三者から、その通信の内容を傍受されることになります。
例えば、インターネットでネットバンキングを利用する際、Webブラウザの画面に口座番号や暗証番号を入力したとします。暗号化されていない通信であれば、これらの番号はそのままインターネットに流れてしまうため、第三者に盗み見される恐れがあり大変危険です。
一方、サーバ証明書が導入されているWebサーバとの通信であれば、通信は暗号化されます。そのため、第三者に盗み見をされても、口座番号や暗証番号が知られることはありません。
証明②:なりすまされたサーバではないこと
サーバ証明書の導入で実現できることの二つ目が、なりすましの防止です。
例えば、URLに"https://ryonotes.com"と入力することで、本ブログにアクセスすることができます。
本ブログサイトを運用しているWebサーバにはサーバ証明書が入っているので、"ryonotes.com"は正当なWebサイトであることが証明されております。
しかし、Webサーバにサーバ証明書が入っていないと、"ryonotes.com"ドメインだからと言って正当なものとは限りません。そのドメインになりすました、悪意あるWebサイトである可能性もあります。
証明③:データが改ざんされていないこと
サーバ証明書の導入で実現できることの三つ目が、データ改ざん防止です。
先ほどもありましたが、特にインターネットの世界は悪意のある第三者に通信を傍受される危険性が潜んでおります。
傍受された結果、通信内容を意図しないデータに改ざんされる、なんていうことも起こります。
それを防ぐのが、サーバ証明書になります。データ改ざん防止の仕組みを、簡単に説明します。
クライアント側は、データを送信する際に、そのデータの概要のようなデータ(メッセージダイジェストと言います)を一緒にサーバ側に送信します。
送信先のサーバは、データとメッセージダイジェストが間違いなく関係していることを確認することで、クライアントから送信されたデータが改ざんされていないことを検証します。
SSL/TLS通信の仕組み
それではここから、サーバ証明書を用いたSSL/TLS通信(暗号化通信)の仕組みを説明します。
- Webブラウザ … SSL/TLS通信をリクエストする
- Webサーバ … 秘密鍵で電子署名された公開鍵が含まれるサーバ証明書を送付する
- Webブラウザ … ルート証明書で公開鍵の署名を検証し、サーバ証明書に記載のドメインと、リクエスト先のドメインが一致することを確認する
- Webブラウザ/サーバ … ドメインの一致が確認できれば、共通鍵を交換し暗号化通信を開始する