はじめに
Let’s Encrypt SSL 証明書が間もなく失効してします(3月29日に失効)。自動更新を設定していたのですが「マニュアルで更新してください」となっていました。焦って調べたのですが、どうもワイルドカード証明書関連でうまく行っていない感じです。DNSが絡むので、私のスキルでは証明書の期限切れに間に合いそうにありません(涙。
certbotでの更新を設定していたのですが、素直に「Bitnami HTTPS 構成ツール」に切り替えました。
事前の準備
ネットワークエンジニアの経験が足りなくて、サイトの運用を止めてしまいそうでとても怖いです。自力で直せなかったらどうしようかと考えると、どうしてもメンテナンスができませんでした。
ですが、期限が残り2週を切ってしまったので、そうも言ってられません。改めて現状の確認と今後の設定についての事前検討を行いました。
Bitmaniについて
まず、SSL証明書の見直しです。まだまだコストをかけるには遠いので、SSL証明書はできれば無償としておきたいです。引き続きLet’s Encryptを活用させていただきます。幸い、本サイトが稼働するLightsailインスタンスにはBitnamiが導入済みです。Bitnami HTTPS 構成ツールを使って簡単にLet’s Encryptを使ったSSL証明書が導入できそうです。
初期の立ち上げ時にBitnamiについてもう少し踏み込んで調べておけば、こんな手間は不要だったと思います。ですが、対策を調べることで知見も蓄積できますし、うまくいけば全て「ヨシ!」ですよね。
関連記事も含め読み込んでいくと、ワイルドカード対応のSSL証明書は手作業でしか作れない様です。この辺が自動更新出来なかった問題につながっていたと思いました。
また、サーバーがIPv6に対応していた場合も手動設定でしかできない様ですね。
Bitnami HTPS 構成ツール
基本的には画面に従って答えていくだけで完了しました。
念の為、事前に最新のバージョンを導入してから実行しました。
Bitnamiの環境
AWS LightsailのWordPressはBitnamiで構築されています。一般的なWordPressとはパス情報が少し違います。記事を起こしましたので設定の参考にしてください。。
IPv6ネットワーキングを無効にする
年始のOCN導入の際にIPv6を有効にしていた様…確認したところやっぱり有効にしていました。あぶない、あぶない。早速無効にしておきます。Lightsailのダッシュボードから「ネットワーキング」タブを経由して設定します。
IPv6の設定もチャレンジしたいですね。移行も進むでしょうし、役立つ知識になりそうです。
Amazon Route 53 の設定確認
Bitnami HTTPS 構成ツールではワイルドカード対応のSSL証明書は作れなさそうです。ですから今回の証明書は”www.to-digitalarts.net”で作成する必要があります。SSL証明書の更新に備えて Amazon Route 53の設定を確認しておきます。
レコード名 | タイプ | 補足説明 |
---|---|---|
to-digitalarts.net | NS | ドメイン名に対してDNSサービスを提供するサーバー |
to-digitalarts.net | SOA | 管理者のメールアドレス、リフレッシュサーバーの時間枠、ドメインの更新履歴など、重要な情報を含むDNSレコード |
to-digitalarts.net | TXT | googleのサイト認証情報 |
_acme-challenge.to-digitalarts.net | TXT | Let’sEncriptドメイン認証情報(手動設定のために登録→廃棄予定) |
www.to-digitalarts.net | A | ホスト名をIPアドレスに変換 |
事前準備は以上です。早速SSL証明書を更新しましょう。
SSL証明書の更新
早速ログインします。
% ssh to-digitalarts.net
Linux ip-172-26-5-16 5.10.0-21-cloud-amd64 #1 SMP Debian 5.10.162-1 (2023-01-21)
x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
___ _ _ _
| _ |_) |_ _ _ __ _ _ __ (_)
| _ \ | _| ' \/ _` | ' \| |
|___/_|\__|_|_|\__,_|_|_|_|_|
*** Welcome to the WordPress packaged by Bitnami 6.0.2-1 ***
*** Documentation: https://docs.bitnami.com/aws/apps/wordpress/ ***
*** https://docs.bitnami.com/aws/ ***
*** Bitnami Forums: https://github.com/bitnami/vms/ ***
Last login: Sat Mar 18 04:58:17 2023 from xxx.xxx.xxx.xxx
$
Bitnamiのロゴが表示されています。問題なくBitnami HTTPS 構成ツールが使えそうです。早速、実行します。
$ sudo /opt/bitnami/bncert-tool
----------------------------------------------------------------------------
Welcome to the Bitnami HTTPS Configuration tool.
----------------------------------------------------------------------------
Domains
Please provide a valid space-separated list of domains for which you wish to
configure your web server.
Domain list []: www.to-digitalarts.net
The following domains were not included: to-digitalarts.net. Do you want to
add them? [Y/n]: N
Warning: No www domains (e.g. www.example.com) or non-www domains (e.g.
www.example.com) have been provided, so the following redirections will be
disabled: non-www to www, www to non-www.
Press [Enter] to continue:
----------------------------------------------------------------------------
Enable/disable redirections
Please select the redirections you wish to enable or disable on your Bitnami
installation.
Enable HTTP to HTTPS redirection [Y/n]: Y
----------------------------------------------------------------------------
Changes to perform
The following changes will be performed to your Bitnami installation:
1. Stop web server
2. Configure web server to use a free Let's Encrypt certificate for the domains:
www.to-digitalarts.net
3. Configure a cron job to automatically renew the certificate each month
4. Configure web server name to: www.to-digitalarts.net
5. Enable HTTP to HTTPS redirection (example: redirect https://to-digitalarts.net
to https://to-digitalarts.net)
6. Start web server once all changes have been performed
Do you agree to these changes? [Y/n]: Y
----------------------------------------------------------------------------
Create a free HTTPS certificate with Let's Encrypt
Please provide a valid e-mail address for which to associate your Let's Encrypt
certificate.
Domain list: www.to-digitalarts.net
Server name: www.to-digitalarts.net
E-mail address []: who@where.com
The Let's Encrypt Subscriber Agreement can be found at:
https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf
Do you agree to the Let's Encrypt Subscriber Agreement? [Y/n]: Y
----------------------------------------------------------------------------
Performing changes to your installation
The Bitnami HTTPS Configuration Tool will perform any necessary actions to your
Bitnami installation. This may take some time, please be patient.
----------------------------------------------------------------------------
Success
The Bitnami HTTPS Configuration Tool succeeded in modifying your installation.
The configuration report is shown below.
Backup files:
* /opt/bitnami/apache/conf/httpd.conf.back.202303190706
* /opt/bitnami/apache/conf/bitnami/bitnami.conf.back.202303190706
* /opt/bitnami/apache/conf/bitnami/bitnami-ssl.conf.back.202303190706
* /opt/bitnami/apache/conf/vhosts/wordpress-https-vhost.conf.back.202303190706
* /opt/bitnami/apache/conf/vhosts/wordpress-vhost.conf.back.202303190706
Find more details in the log file:
/tmp/bncert-202303190706.log
If you find any issues, please check Bitnami Support forums at:
https://github.com/bitnami/vms
Press [Enter] to continue:
うまくSSL証明書が導入できた様です。システムを再起動してSSL証明書が更新された事を確認しましょう。
ちゃんと更新できていました、よかったです。
自動更新の設定を確認
更新もツールが自動で設定してくれているとのです。念の為確認してみます。
$ sudo crontab -e -u bitnami
ちゃんと設定されていました。次回更新までしばらく観測してみます。
0 0 * * * sudo /opt/bitnami/letsencrypt/lego --path /opt/bitnami/letsencrypt --email="Mail@Address" --http --http-timeout 30 --http.webroot /opt/bitnami/apps/letsencrypt --domains=www.to-digitalarts.net --user-agent bitnami-bncert/1.1.1 renew && sudo /opt/bitnami/apache/bin/httpd -f /opt/bitnami/apache/conf/httpd.conf -k graceful # bncert-autorenew
自動更新もうまく動作していました(2023/6/12)
すっかり忘れてましたが、そろそろ自動更新の時期なので更新状況を確認しました。次の有効期限は8月15日になっていました、バッチリ更新しています。
自動更新もうまく動作していました(2023/11/10)(2024/4/30)
自動更新を確認しました。自動更新はバッチリ安定運転ですね、問題なしです。
まとめ
事前に下調べしたおかげで比較的簡単にSSL証明書の更新ができました。次は2023年6月17日に失効の予定です。なんとか失効前に更新出来てよかったです。
SSL接続が必須となった現在、この様な優秀なサービスを提供してもらえている事に感謝いたします。
自動更新の結果もまた報告いたします。
AKI視点でのコメント
Let’sEncriptで作成した証明書のライフサイクルは3カ月に設定されています。これは、ユーザーの与信が確保できないため、証明書のライフサイクルを早める事でセキュリティの維持を行う施策です。犯罪者視点からだと、定期的に更新する事で追跡リスクを追わされます。利用者視点では証明書コストを更新の手間で支払えます。ユーザー与信が主体の運用を大きく変える賢い解決策だと思います。
しかしながら、大量に短期間の更新が必須となってしまう事が、新たなリスクを含んでいると考えています。また、ユーザーの与信についても掘り下げが必要です。そういった視点で、AKIの「情報認証による唯一性」と「公開しない非対称鍵」の特性は、新たな可能性があります。
引き続き、AKIのユースケースを記事として発信してまいります。ご興味を持っていただければ幸いです。
Really Simple SSLプラグインでSSL証明書を導入
余談ですが、Really Simple SSLプラグインからもLet’s Encriptの導入設定ができる様です。コンソールが苦手な方にはこちらでSSL証明書を導入するのも良いかもしれません。使用していないので後書きでの簡単なご紹介としました。
コメント