過去記事「無料SSL証明書のLet’s EncryptでVPSサーバーの常時SSL化 」でLet’s EncryptでSSL証明書をインストールしてサイト常時SSL化を行なっていましたが、新たにサブドメインもSSL化したいときに追加する方法についてまとめていきたいと思います。
Let’s Encryptは基本的にワイルドカード証明書ができないのですが、個別にSSL対象となるドメインを指定することで、サブドメインを含む複数のドメインに適用させることができます。ですので、実質的にはワイルドカード証明書になりますね。
今回はすでにSSL証明書が設定されており、新たにサブドメインを追加する前提で進めていきます。まずは稼働しているWebサーバーを全て停止します。ちなみに当サイトではリバースプロキシサーバーも使っていますので、そのような場合はリバースプロキシサーバーも停止させる必要があります。
// Apacheの停止 # service httpd stop // リバースプロキシ(Nginx)の停止 # systemctl stop nginx
そして、下記コマンドで証明書を更新します。更新になるので「–expand」オプションをつけます。そのあとに「-d」オプションでドメイン(サブドメイン)を個別に指定していきますが、最初にはすでに登録しているドメインもつけておきます。
# certbot --authenticator standalone --installer apache --expand -d exapmle.com -d www.exapmle.com -d foo.exapmle.com -d bar.exapmle.com
コマンド実行後に、下記のメッセージが表示されていれば無事にサブドメインが登録されています。
- Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/exapmle.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/exapmle.com/privkey.pem Your cert will expire on 2018-08-18. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew"
最後に停止していたWebサーバーを起動させて、実際に追加したサブドメインでSSL化されているかを確認します。
// Apacheの起動 # service httpd start // リバースプロキシ(Nginx)の起動 # systemctl start nginx
今回はWebサーバーにApacheを利用している前提で、こちらの記事「無料SSL証明書のLet’s EncryptでVPSサーバーの常時SSL化 」にも記載していますが、Apacheを起動させたままでは下記のエラーが表示されるようです。
Client with the currently selected authenticator does not support any combination of challenges that will satisfy the CA.
また、Apacheを停止させてもNginxなどのリバースプロキシサーバーが起動している場合は下記のメッセージが表示されて、証明書が更新されませんので注意が必要です。
Problem binding to port 80: Could not bind to IPv4 or IPv6.
前回はうっかりwwwのサブドメインを登録し忘れていたので、リダイレクト設定をかけていてもSSL化がされていないため接続の警告画面が表示されていた状態でした。これで無事にwwwのサブドメインもSSL化されたので良かったです。