SSLについての基礎知識を学び直した備忘録
SSL/TLS備忘録
- 現在、使われている技術はTLS(Transport Layer Security)という、SSLをパワーアップさせた後継規格である。SSLという言葉が浸透しすぎて、SSLと一括で呼ばれているらしい(知らなかった)。
- ウェブサイトを見る流れとして、HTTPリクエスト(ユーザーからの「サイトを見たいよ」というリクエスト)とHTTPレスポンス(サーバーがサイトのデータを「返すよ、見せるよ」というレスポンス)というやりとりで成り立っている。
- HTTPとかHTTPSは通信プロトコルのことであり、ウェブブラウザとウェブサーバー間で利用する通信の規格である(そういうやりとりのお約束、決まり事)。https://blog.misuna-tech.com/ssl-study-memo/ 例えばこの記事を見たいので、「HTTPS通信でHTMLファイルを見せてね」という感じ。
- https://blog.misuna-tech.com/ と http://blog.misuna-tech.com/ は別のURLとして扱われるため、サイトの制作者は「常時SSL化」という、HTTPでアクセスした場合にHTTPSのページにリダイレクトをかけてケアする方法が一般的である
- HSTSという、一度HTTPSでアクセスしてHSTSのヘッダーを受け取ると、ブラウザが「このサイトは次から強制的にHTTPSにする」と記憶する仕組みがある。
これには個人的に覚えが何度もあり、なぜ常時SSLをかけていないのにHTTPでアクセスしようとしても逆にHTTPSに飛ばされるのかという疑問が解消した。
- HTTPとHTTPSの大きな違いは通信の安全性である。HTTPSは暗号化プロトコルを使用して通信内容を暗号化する仕組みがある(秘密鍵と公開鍵)。
- HTTPは暗号化されていない通信となり、通信の中身を見ようと思えば見れてしまうらしい。一方でHTTPSの方は中身が暗号化されて解読不可能。
- HTTPは80番ポートを使用し、HTTPSは443番ポートを使用する。
- HTTPSを利用するには最終的にSSL証明書を対象のウェブサーバーにインストールしなければならない。
- SSL証明書には有効期限があるため、証明書は定期的に更新を図らなければならない。更新しない場合は、警告表示や「安全な通信ではありません」という表示がブラウザから出てしまう。
- SSLを発行できる団体があり「認証局」と呼ばれる。無料証明書の筆頭であるレッツエンクリプトを出している認証局が、規模としては一番大きなところのようだ。
- 認証にはレベルがあり、ドメイン認証(DV)、組織認証(OV)、拡張認証(EV)という種類によって、認証の対象(何を認証しているか)が異なる。例えば組織認証の場合は運営している「会社」が実在するかを電話などで確認するなどのフローがあるらしい。EVの場合は、法的に厳格に審査された信頼できる組織であるという、より厳格な証明となる。
- 基本的にはコモンネーム(証明書が守る「代表的な名前(URL)」)単位で取得するのが一般的だが、ワイルドカードで取得できる場合もある。
- アドレスバーの鍵マークから証明書の内容は見れる。
- 混合コンテンツ(Mixed Content):HTTPSのページ内に、HTTPで読み込まれる画像などが混じっている状態(ブラウザでエラーになります)があるため、サイト内のコンテンツのパスの置換を考慮しなければならない。