Let's Encryptを利用してサイトをSSL化をしたので、SSL化の記事を書こうと思って、まずはSSLの説明をしようかなと記事を書き始めましたが、SSLについての自分の理解が甘かったので、SSLだけで記事を書こうと思います。
SSLってなに
SSLはSecure Sockets Layerの略語です。 これは何かというと、ウェブサイト、ウェブサーバー間の通信を暗号化する仕組みになります。httpやftpは実はデータがそのまま流れて行ってます。闇プログラマーなら、そのデータを取得することが普通にできてしまいます。入力したパスワード、個人情報がネットを普通に流れていくのって怖いですよね。なので、SSLを利用したhttpsやftpsを利用しましょう。最近のブラウザは、Form付のWebサイトには、目に見えて危険だという警告を出すようになりましたよね。
ポン太
SSLは通信を暗号化するものでhttpsやftpsに
利用されてるんだね!
利用されてるんだね!
ぴよコーチ
そうする理由は、Formなどで入力した内容が
サーバーへ送信された際に入力した情報が
攻撃者に知られてしまうからなんだよ。
サーバーへ送信された際に入力した情報が
攻撃者に知られてしまうからなんだよ。
ポン太
だけどコーチ、攻撃者はその情報をどうやって傍受するの?
ぴよコーチ
通信を監視するツールがあって、それを利用して
パスワードや個人情報が除かれてしまうんだ。
顧客情報を取るようなWebサイトでは必須なんだよ。
パスワードや個人情報が除かれてしまうんだ。
顧客情報を取るようなWebサイトでは必須なんだよ。
ポン太
へええ。
ぴよコーチ
次は、SSLの役割を見て行こう
SSLの役割
SSLには3つの役割があります。
- 通信の暗号化
- 通信相手の保障
- 改ざんの検出
ポン太
通信の暗号化は、さっき言ってたやつだよね。
通信相手の保障は?
通信相手の保障は?
ぴよコーチ
これは、なりすましの防止だね。これを説明するために、SSL利用の前提を話すね。SSLを利用するには、公開鍵とSSL証明書をホストのサーバーに保存する必要があって、この公開鍵と証明書をホストサーバーに来た人に渡して一致させることで、通信相手が正しいと保障しているんだ。
ポン太
ねぇコーチ、証明書って、SSL証明書とかサーバー証明書とかTLS証明書とか言い方色々呼び方あるけどこれって同じだと考えていいの?
ぴよコーチ
SSL証明書が良く呼ばれてるらしいけど、全部同じだと思うよ。
んで、再度そのサイトに訪問した時にURLも同じでサイトが別サーバーに完全にコピーされていて、証明書までもがぱっと見レベルでは同じという場合、利用者は困るね?
んで、再度そのサイトに訪問した時にURLも同じでサイトが別サーバーに完全にコピーされていて、証明書までもがぱっと見レベルでは同じという場合、利用者は困るね?
ポン太
その丸コピした人が悪人だったら困るね。
そのサイトで何させられるか分からないから…。
そのサイトで何させられるか分からないから…。
ぴよコーチ
そうだね。ただ、公開鍵は秘密鍵から生成されるので、公開鍵が違えば、ブラウザが怪しいと思って警告を出してくれるのさ。
ポン太
てことは、これで改ざんも防げるっていうことなのかな?
ぴよコーチ
サーバーは公開鍵に署名をする。この署名と、公開鍵をクライアントに送るので
クライアントは署名の複合結果と公開鍵を比較して一致を確認した後、クライアント側で公開鍵を暗号化した共通鍵を作成してサーバーに送るので、サーバー、クライアント間での通信経路上で改ざんが行われても検出ができるということだね。
クライアントは署名の複合結果と公開鍵を比較して一致を確認した後、クライアント側で公開鍵を暗号化した共通鍵を作成してサーバーに送るので、サーバー、クライアント間での通信経路上で改ざんが行われても検出ができるということだね。
ポン太
なるほど。なんかこれって文字だと分かりづらいね…。
ぴよコーチ
さくらインターネットが分かりやすい図を用意してるので、これを見ると理解が深まるよ!
…SSLの説明が結構難しかったので、Let's Encryptの記事が書けなかったです。SSL化について、参考にしたのは下記になりますので、参考にしてみてください。