EC2をhttps化する方法がよくわからなかったので調べた
仕組みがよくわからなかったので調べてみました。
そもそもhttpsって?
SSL/TLSプロトコルにより暗号化されたhttp通信の事。
Chromeが昨年10月にhttpsでないページに対して、アドレスバーのところに「保護されていない通信」と表示し始めたことで一気に普及が進んだ様子。 要はセキュアなhttpということ。
SSL/TLSの違い
同じ機能を意味する。呼び方の違いだけらしいです。
SSL/TLSの実現
共通鍵暗号方式と公開鍵暗号方式のハイブリッド方式で通信を暗号化する。 1.クライアントがサーバに対して公開鍵を要求 2.サーバがクライアントに公開鍵とその信頼性を担保する証明書を送信 3.証明書は第3者機関が担保 4.クライアントは公開鍵を用いて共通鍵を暗号化してサーバに送信 5.サーバは送信した公開鍵のペアとなる秘密鍵で共通鍵を復元 6.暗号化通信の確立
公開鍵の信頼性を第3者機関が担保するというのがポイントですね。
ではどうやって証明書を設定するのか
AWSにはACM(AWS Certificate Manager)というサービスがあり、これを利用することで無料でSSL証明書を発行・管理することができます。
ただし、EC2インスタンスに証明書を直接配置することはできないみたいです。 代わりにELBに証明書を配置できるため、クライアントとELB間での通信がhttpsで行えるようになります。
他にもいくつか方式があるみたいです。こちらのサイトが参考になりました。 AWSでWebサイトをHTTPS化 全パターンを整理してみました
ちなみに、このブログはパターン8でサーバ内に独自証明書を設置する方法でhttps化しています。 ACMを利用するためにはロードバランサが必要になり、Lightsailの最小構成とは別に料金がかかってしまうためです。 出来るだけランニングコストを抑えたいのでこの構成にしました。
ここまでhttps化がセキュアであること、またその方法について書いてきましたが、 メリットばかりではなく、デメリットもいくつか存在します。 だいぶ長くなってしまったので、そちらについてはまた別の記事で。