Let’s Encryptを使ってSSL証明書をWebサーバーに設定しよう
暗号化の必要性
いくらwebサーバー自体のセキュリティを強固なものにしようと、通信を平文(暗号化されていない通信)で送り、途中経由する地点で覗かれては意味がありません。
そのため、覗かれてもわからないように通信を暗号化する必要があります。
Webサーバーとブラウザ間の通信を暗号化するための技術がSSL/TLSという技術になります。
まともなサイトであればユーザーに個人情報を入力させたり機密情報を表示するようなURLはhttp://
ではなく、 https://
で始まるURLになっているはずです。
https://
で始まるURLへアクセスしている時の通信は
SSLプロトコルを使用しており、通信内容が暗号化されます。
今回は以前作成したWebページにSSLで接続できるようにしてみましょう。
SSLで通信するために
SSLで通信するためには、SSL証明書が必要です。
https://zenlogic.jp/aossl/basic/ssl-what/
証明書なしでも暗号化通信は可能ですが、SSLでの通信はサーバーの所有に関しての証明が同時に行われます。
SSL証明書は、そのドメインの持ち主である事の証明になり、認証局(CA)がドメインを確かめた上で発行してくれます。 これにより、署名書さえ盗まれなければ、なりすましサイト(フィッシング)などの対策にもなります。
というわけで、SSL証明書が必要なので取得します。
今回は無料でSSL証明書が作成可能なLet’s Encrypt ( https://free-ssl.jp/ ) を使用します。
証明書の発行は、ドメインの認証作業も行われるため、「このドメインは自分ので間違いないです!」と言うためにドメインを割り振ってあるサーバー自身で行う必要があります。
Let’s EncryptでのSSL証明書の作成方法は以下を参考にしてください。
Certbotというソフトをインストールして適宜設定をしていく形になります。 また、SSL証明書の取得に必要なドメインは予め割り当てられているので、そちらを使用して下さい。
SSL証明書をつかってhttps通信
SSL証明書の発行が完了したら次は証明書を使ってhttpsでアクセスできるようにしましょう。
今までのhttpアクセスの場合には80番ポートでアクセスを行っていましたが、
httpsでアクセスする場合には接続が443番ポートを使うのが普通です。
ポートとは、外部との情報の受け渡しを行う所で、
番号によっては決まっているものがありそれらをウェルノウン・ポートと呼びます。
主要なウェルノウン・ポートはこちらの後半にかかれているものですね。
まず絶対に覚えておきたいのは、http、https(443)、sshあたりでしょうか。
これらは使用するポートは絶対そうしなければならない!という決まりごとではないですが、
特別な場合でなければ従ったほうが良いものです。
webサーバーのconfigに443ポートの待受を追加して、正しくSSLの設定をすれば
httpsアクセスできるようになるはずです。
課題
課題1
証明書を発行して確かめてみよう!
発行が完了した証明書に対してopensslコマンドを使って中身が正しいものか確かめて見ましょう。
課題2
証明書を適用してhttps接続してみよう!
ブラウザアクセス、Chromeのデベロッパーツール(右上の︙→その他のツール)から
Securityをクリックすると証明書が正しく反映できているか確認ができます。