備忘録:SSL通信の仕組み
実は一月にこのサイトをgithub pagesでの運用から独自ドメインへ移行しSSL化した. 今回はWebサイトのSSL化の仕組みについての備忘録である.
概要
Webサイトを運用する際,SSL化(通信内容の暗号化)は必須になってきている. httpの場合は「このサイトは安全ではありません」といったメッセージが出るブラウザも多い. SSL化する手順はたくさん存在するが,その仕組みについて理解していると実施手順についても理解が深まると思い,備忘録としてSSLの仕組みについてまとめた.
SSL通信の仕組み
SSL通信とは送受信するデータが暗号化された通信のことである.httpではなくhttpsから始まるURLがそれにあたり,ブラウザでは鍵マークが表示されていたりする.httpから始まるURLは最近はブラウザで警告が出たり,「安全ではありません」などと表示されていたりすると思うが,これは通信の内容が暗号化されていないことを意味する.
要するに暗号化して通信する仕組みがSSLであるが,その手順は以下のようになっている.
- 訪問者がブラウザなどでWebサイトにアクセスする
- アクセスを受けたWebサイトのサーバーは公開鍵とSSL証明書を訪問者へ送付する
- 訪問者はブラウザのルート証明書で送付された証明書を検証し,公開鍵を用いて共通鍵を暗号化してWebサイトのサーバーへ送る
- Webサイトのサーバーは秘密鍵を用いて共通鍵を復号する
- 以降の通信は訪問者,サーバーは共通鍵を用いて暗号化と復号をする
ここで手順に出てくる暗号方式について簡単に説明する.
- 共通鍵暗号方式: 暗号化する鍵と復号する鍵が共通の暗号化方式のこと
- 公開鍵暗号方式: 暗号化する鍵と復号する鍵が別になっている暗号化方式のこと.公開鍵で暗号化した内容は秘密鍵でしか復号ができない
さて,ここまで理解したところでこの手順をもう一度見返すと
「なぜずっと公開鍵暗号化方式で通信しないのか?共通鍵暗号方式でやりとりする必要があるのか?」
と疑問に思われるが,それには理由がある.
それぞれの暗号化方式の長所と短所をまとめると以下のようになる.
長所 | 短所 | |
---|---|---|
共通鍵暗号 | 処理が高速 | 鍵の受け渡しに注意を要する |
公開鍵暗号 | 暗号化に使う公開鍵は漏れても大丈夫 | 処理に時間がかかる |
共通鍵暗号化方式の弱点は鍵の受け渡しである.鍵の受け渡しの際に鍵を盗まれると台無しである. 公開鍵暗号化方式はこの問題を解決するものの,通信に非常に時間がかかる.
そういうわけで,両者のメリットを組み合わせたハイブリット暗号方式を用いている. これにより,共通鍵暗号方式の短所であった鍵の受け渡し問題が解決され,後悔鍵暗号方式の短所である処理に時間がかかる問題も解決される.
最後に
独自ドメインでのWebサイト運用においてSSL化は必須作業であったものの 一番哀しかったのは独自ドメイン運用に切り替えてからアクセス数が激減したことであったよ