ConoHa VPS(Ubuntu16.04)+ApacheでLet’s Encryptの設定をした
リアルインターネットなどという大仰なブログ名を掲げておきながら、SSL に対応していないのはリアルじゃないと以前から感じていた。調べてみたところ、近年はLet's Encryptとかいうサービスを利用すれば無料で SSL 証明書を入手することができるらしい。早速導入することにした。
導入方法
ConoHa のサイトを見てみたら公式で Let's Encrypt のスタートアップスクリプトが配布されていたけど、動作確認表に CentOS しか載っていなかったので、大人しく手動で設定することにした。
まずは必要なパッケージをインストールする。
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-apache
次に以下のコマンドを叩く。
sudo certbot --apache
あとは表示に従って設定していけば、あっという間に HTTPS が適用される。
(参考: https://certbot.eff.org/#ubuntuxenial-apache)
エラー対処
…はずだったのだが、最後に無慈悲なエラーメッセージが表示され、失敗の結果に終わってしまった。
Client does not support any combination of challenges that will satisfy the CA
エラーメッセージで検索してみたものの、完全一致する結果はほぼ無い状況。しかし、似たようなエラーメッセージへの対処法であれば引っかかったので、ひとまず試してみることに。
sudo certbot --authenticator webroot --webroot-path {ドキュメントルートのパス} --installer apache -d {ドメイン名};
祝福のメッセージが表示された。無事 SSL 証明書の取得に成功した模様。
Congratulations! You have successfully enabled https://realinternetman.com
自動更新の設定
証明書は 3 ヶ月で期限切れになるようなので、定期的に更新する必要があるっぽい。最後に cron の設定をして、月 1 で更新コマンドを投げさせるようにした。
sudo touch /etc/cron.d/letsencrypt
上記ファイルを編集し、毎月 1 日の 4:00 に certbot renew を実行させるようにした。cron 使うの初めてなので、本当にこれで動いてくれるかは謎。
00 4 1 * * root certbot renew
結果
これでこのブログもまた一歩、リアルなインターネットに近づいた。
余談だが、以上の設定を施したにもかかわらず、何故か最初は Google Chrome のアドレスバーに「保護された通信」の文言が表示されなかった。原因を調べてみたところ、以前貼った楽天のアフィリエイトリンクが https 非対応なせいであることが判明。別サービス経由でリンクを貼り直すことで無事対応できた。
楽天ダサいな〜と思ったけど、今月は楽天カードローンで金を借りたばかりだったので、全てを水に流すことにした。