長らくHTTPでブログを運用していた。
ただのブログだし、ユーザーが重要情報を入力するとも思えないし。。
考えうるリスクとしては公共Wifiに繋いでブログを編集した場合にパケットを盗聴されて、管理者パスワード等を引っこ抜かれるというのがあるが、公共Wifiでブログの編集なんかしないし。。
そもそもSSL証明書の導入が何か面倒くさそうだし。。
でも、SSLが無いよりは有ったほうが良いだろうということで、前々から話題になっていたLet's Encryptの無料証明書を導入したところ、ものの数分で証明書が発行・導入されて、もっと早くやっていれば良かったと反省。
以下、Let's Encrypt 証明書導入のメモ
お世話になっているDigitalOceanがLet's Encrypt 証明書導入のガイダンスを公開しているので、基本的にはそちらのガイダンスに則って進めた。
はじめに
サーバーで443番ポートが開放されているか確認する。開放されていなければ開放する。
証明書の導入
以下のcertbot
コマンドで証明書の導入を行う。Apacheサーバーなのでapacheオプションを指定。certbot -h
でその他のオプションを確認できる。
(sudo) certbot --apache -d <your.domain.com>
すると、以下のような項目を聞かれるので答えていく。
1. 緊急連絡用のメールアドレス。ちなみに導入が完了した際には特にメールでの通知はなかった。
2. 利用規約への同意
3. 先述したメールアドレスをLet's Encryptのパートナー企業と共有しても良いかの確認
4. サーバーへのHTTP通信をHTTPS通信にリダイレクトするかの確認。Yesを選択した場合、ApacheのSSL関連の設定が編集されて、すべてのHTTP通信がHTTPS通信にリダイレクトされる。(ここでYesを選択したのでブログ内の内部リンクをhttp://
からhttps://
に書き換える必要がなくなった)
5. 証明書の導入完了。
証明書導入時のログは/var/log/letsencrypt/letsencrypt.log
に記録される。
証明書や秘密鍵は/etc/letsencrypt/live/<your.domain.com>/
に保存される。(ただし、すべてシンボリック・リンクでファイルの実体は別の場所に保存されている)
自分の場合は導入が完了したら即サーバーがSSL化されていたが、レンタルサーバーによってはSSL化されるまで一定時間かかる場合もある模様。
証明書の更新
Let's Encryptの証明書の有効期間は90日間で、それを過ぎると更新が必要になるが、certbot
が自動更新を請け負ってくれる。具体的にはcertbotという名前のcronジョブを/etc/cron.d
に作成して、定期的に更新処理を行ってくれる。以下のコマンドで更新状態を確認できる。
(sudo) systemctl status certbot.timer
非常に簡単かつ迅速に証明書を導入できた。ぜひ今後もサービスを継続してほしいので、しっかりお布施しておいた。