見ているが、URLの最初のHttpsとはなんだ?
ちょっと違いを押さえてみるか。
注意点なんかも頼む。
プログラムに組み込む方法も見てみよう。
「http://」と「https://」って何?
URLの構造
まず、普段使っているブラウザに表示されるURLの構造から押さえていきましょう。
URL(ユーアールエル)とは「Uniform Resource Locator」の略で、簡単にいえばインターネット上のホームページ(Webサイト)やファイルの位置や情報を示すものです。
URLは以下の構造になっています。
http://とhttps://の違い
通信方法である、HTTP(Hyper Text Transfer Protocol)と、HTTPS(Hypertext Transfer Protocol Secure)はホームページを見るときにどんな通信手段を用いるのかというルールです。
URLの始まりが「https://」だと通信内容が暗号化されます。「http://」から始まっていると暗号しないで通信しています。
郵便サービスに例えるならば、はがき(http://)と封筒(https://)になります。はがきは配達途中で外部の人に中身を見られたり、改ざんされたりする可能性がありますが、封筒であれば内容は見られず、改ざんも難しくなります。
HTTPS通信の仕組み
HTTPSで配信するには、インターネットサイトを構成するサーバーに「SSLサーバー証明書」がインストールされている必要があります。
SSLサーバー証明書は 3 または 4階層からできていて、その最上位の階層にあるのが「ルート証明書」です。
HTTP通信は次の図のような仕組みで暗号化通信を確立します。
注目は、ユーザー側のルート証明書です。
「ルート証明書」はWebブラウザ(ChromeやEdgeなど)にあらかじめ登録されていて、アクセスしたサイトのサーバーから送られてくる証明書と照合します。
この時、ハッシュ関数というアルゴリズムを用いて「証明書が改竄されていないか」といったことを確認します。
照合した結果、ルート証明書にある認証局の署名が一致すれば、信頼できる証明書と判断します。
ブラウザに登録されるルート証明書は、ブラウザのバージョンアップなどに伴ってアップデートされていて、新たなルート証明書の追加や、安全性に疑いのある証明書の削除などが随時行われています。
このように、ブラウザからHTTPSサイトへアクセスする際には、ユーザーは何もする必要がありません。
しかし、自作のプログラムでHTTPS通信する場合は、作成するプログラム内に「ルート証明書」を登録しておかないと、HTTPS通信が行えないということになります。
ルート証明書の確認とプログラムに記載する方法
プログラム内にルート証明書を定義するために必要な手法を説明します。
手法は次の2つの手順にわかれます。
- ブラウザからルート証明書をPCに保存する
- プログラム内に証明書を記載する
1.ブラウザからルート証明書をPCに保存する
下記の例は以下のブラウザについて説明しています。
- Chrome
ブラウザのURL部分の左側にある鍵アイコンをクリックします。
「この接続は保護されています」をクリックします。
「証明書は有効です」をクリックします。
2.プログラム内に証明書を記載する
取得した証明書のデータをプログラム内に記述して定義します。
以下の例はArduino IDEで定義する手順を示しています。
メモ帳で証明書ファイルを開き、表示されるすべてを選択してコピーします。
「—–BEGIN CERTIFICATE—–」と「—–END CERTIFICATE—–」を含めて一つのデータになります。