SportsTeamBoardなどを運営しているmokyn.comサーバの証明書をRapidSSLからLet's Encryptに変更しました。
理由としてはRapidSSLの更新を忘れていて気づいたらSSLでアクセスできなくなった=iOSアプリからアクセスできなくなった、という大惨事を速攻で解決するためです(汗)。さくらVPSの設定画面からポチッと更新できれば良かったのですが、どうやらイチからやり直さなければいけないようだったので、どうせならということで無料のLet's Encryptにしてみようということで移行してみました。
当初は無料ということで飛びつきましたが、設定を開始してびっくりしたのがLet'sEncryptはほとんど自動で設定を行ってくれることでした。certbotというクライアントソフトをインストールして実行するだけで終了という素晴らしいシステム。RapidSSLの時はhttpd.confやらssl.confやら秘密鍵や公開鍵や〜と相当苦労しましたが、その作業が自動化されているなんて素晴らしすぎます。
最近はSSL対応しないとスマホアプリとの連携ができないですが、設定が大変なんですよね。セキュリティとか詳しい方ならば好きなように設定すればいいですが、自分はそこまで詳しくないという個人開発者がサクッとSSL化したいならもうLet'sEncrypt一択でしょう。ただ、ちょっとだけトラップがあってハマったので自分の行った手順を共有しておきます。
①前回のSSLの設定を削除
自分の場合は期限が切れたRapidSSLの設定が残っていたのでまずそれを消しました。
#cd /etc/httpd/conf.d/
#mv ssl.conf ssl.conf.old
②さくらの公式の方法をみながらLet's Encryptのクライアントアプリを実行
まずは公式を参考にします。 https://knowledge.sakura.ad.jp/10534/ 非常にわかりやすく書いてありますし、大抵の人はこのままでうまくいくと思います。
#yum install certbot python2-certbot-apache
#certbot --apache -d example.com
が、自分はcertbotの実行中に以下のエラーが出てとまってしまいました。
Unable to find a virtual host listening on port 80 which is currently needed for Certbot to prove to the CA that you control your domain. Please add a virtual host for port 80.
③httpd.confにVirtualHostの設定を追加
どうやらhttpd.confにVirtualHostの設定が無いことが原因のようです。次のサイトを参考にhttpd.confを修正します。 https://freepc.jp/encrypt
#vi /etc/httpd/conf/httpd.conf
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin root@mokyn.com
DocumentRoot /var/www/html
ServerName mokyn.com
</VirtualHost>
④再度Let's Encryptのクライアントを実行してOK
#certbot --apache -d example.com
#systemctl restart httpd
うーむ、簡単すぎる!素晴らしいです、Let's Encrypt。あとは3ヶ月ごとに更新するのを自動化したりして運用をラクにする予定です。