見出し画像

HTTPSって結局なんなの?

こんにちは。PIVOTのエンジニア、金杉です。
WebサイトではもはやHTTPS通信があたりまえですが、HTTP(Sなし)だと何が問題なのか、HTTPSにするには何が必要か、コストはどれくらいかかるのか、など、おさらいしましょう。

Webサイトとの通信経路についておさらい

スマホでSafariやChromeを起動したり、SNSからのリンクを踏むと表示されるWebサイト、ふだん意識することはないと思いますが、通信経路についておさらいしましょう。
(パーツの縮尺がめちゃくちゃなのはご愛嬌…)

スクリーンショット 2021-07-20 17.45.40

なんとなくイメージできましたか?
じつはこの通信経路、下図のとおり情報は誰からでも取り放題(!!)状態です。

スクリーンショット 2021-07-20 17.45.50

HTTPSの話からはそれますが「無線LANの通信を暗号化しましょう」という背景は、暗号化しないで送ると上図のように情報を取り放題、しかも内容が丸見えだからです。
(PIVOTでは在宅ワークの申請時に、自宅の無線LAN通信が暗号化されていることをキャプチャで送り、情シスがチェックします)

HTTPS通信のしくみ

HTTP(Sなし)通信は、HTTPという世界共通言語(※1)をそのまま通信で送ります。
すなわち、どんなサイトを見ているのか、入力フォームで何を送ったのか、知識とツールのある人にはわかってしまいます。
(※1) 正確には言語とは違いますが、わかりやすく言語という言葉を使っています。

それでは、HTTPS通信のしくみを見ていきましょう。
下図で、サイトが表示されるまでの流れを説明します。ブラウザに画面が表示される前の裏側のやりとりなので、画面からは何が起こっているのかわかりません。(便宜的に、間の通信経路は省略します。また、典型的な例を示しているので、異なる場合もあります。)
ここでは概念としての「鍵」が全部で3つ出てきます。Webサイト側から提供される「公開鍵」、Webサイト側のみがもっている「秘密鍵」、利用者側で作成する「共通鍵」です。

スクリーンショット 2021-07-20 17.46.04

まず、公開して問題ない、鍵をかけることしかできない鍵(公開鍵)をサイトから送り、受け取った側で作成した鍵(共通鍵)を、公開鍵で暗号化してサーバに送ります。公開鍵は鍵を閉めることしかできないため、通信を傍受されても解読されません。
サーバは鍵を開けることのできる秘密鍵を持っているので、共通鍵を取り出し、以降の通信は共通鍵をかけてやりとりします。
共通鍵はこの二者しか持っていないので、通信が傍受されても(鍵のかかったカバンが盗まれても)開けられません。

HTTPSサイトにするには?

HTTPSサイトにするには、SSLサーバー証明書(以下、SSL証明書)を用います。
SSL証明書とは、以下の図のように作成・使用されるものです。

スクリーンショット 2021-07-20 17.46.11

認証局はいくつかありますが、ブラウザ側で認証されたWebサイトのリストを持つので、世界で認定された認証局に依頼して証明書を発行してもらいます。(認証リストの更新は、ブラウザやOSがアップデートされるときなどに行われています)
エンジニアがよく「自己証明書」「オレオレ証明書」などと呼んで使うものは、どこの認証局にも認証されていない(上図の印がない)けど、HTTPS通信はできるというSSL証明書です。

SSL証明書の種類

SSL証明書には、いくつか種類があります。また、種類によってお値段が違います。
自己証明書、オレオレ証明書は上記で説明したので省略します。

ざっくり表にすると…

スクリーンショット 2021-08-17 10.52.53

SSL証明書の期限と更新手続き

SSL証明書には有効期限があり、2021/07/14現在、取得した日から最大約1年となっています。この有効期限については、セキュリティの観点から(詳細な理由については割愛します)最大6ヶ月、3ヶ月…と短くする案が、ブラウザ開発ベンダーと認証局の会議で検討されています。
短くなることにより更新手続きが頻繁に必要になりますが、有効期限は作成するときに決まるため、更新の計画を立てることは可能です。

ドメイン認証型であれば、クラウドサービスで自動更新の仕組みも整備されてきています。
今後、更新が簡単なのか/手作業が必要で大変なのか/自動更新の仕組みをつくっておくのか、という観点もSSL証明書の選択の観点に入ってくるでしょう。

参考までに、自己証明書なら有効期限を好きなだけ長く設定できるので、スマホやPC以外の限られたサーバにしか接続しない通信機器やIoTデバイスなどでよく使われます。

まとめ

これでもう、HTTPS通信についてはカンペキ!でしょうか?
SSL証明書の期限短縮については、今後もウォッチしていきます!

この記事が気に入ったらサポートをしてみませんか?