こんにちは、レムシステム株式会社のエンジニア、小村(@system_kom)です。今回は、ウェブサイトのセキュリティに欠かせないSSL/TLS証明書、特にLet's Encrypt証明書のAlmaLinux 9(8にも対応しています)におけるセットアップと自動更新について解説します。当社では多くのお客様のウェブサーバー構築をサポートしており、その経験を基に、分かりやすく説明していきます。
ウェブサイトのセキュリティは、オンラインビジネスの信頼性を左右する重要な要素です。SSL/TLS証明書を使用することで、ウェブサイトとユーザー間の通信が暗号化され、データの安全性が確保されます。Let's Encrypt証明書は無料で利用でき、自動更新が可能なため、多くの企業様に推奨しています。
1. Let's Encrypt証明書取得の設定
まずは、certbotパッケージをインストールします。certbotは、Let's Encrypt証明書の取得と管理を簡単に行うためのツールです。以下のコマンドを実行してインストールします。
command
# dnf install certbot
certbotがインストールされたら、certbotコマンドでサーバー証明書を作成します。以下は、当社でよく使用する実行例です。ドキュメントルートが/var/www/html、完全修飾ドメイン名(FQDN)がtest.rem-system.co.jpの場合を想定しています。
command
# certbot certonly --webroot -w /var/www/html -d test.rem-system.co.jp
証明書の作成が完了したら、更新プロセスが正常に機能するかテストを行います。以下のコマンドを実行してください。
command
# certbot renew --dry-run
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/test.rem-system.co.jp-0001.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Simulating renewal of an existing certificate for test.rem-system.co.jp
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all simulated renewals succeeded:
/etc/letsencrypt/live/test.rem-system.co.jp-0001/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
テストが成功すれば「Congratulations, all simulated renewals succeeded」と表示され、証明書の更新プロセスが正常に機能することが確認できます。レムシステムでは、お客様のサーバーに対して、このテストを必ず実施し、安全性を確認しています。必要に応じて、以下のコマンドで証明書を手動で更新することも可能です。
command
# certbot renew
# systemctl restart httpd
2. 証明書の自動更新設定
Let's Encrypt証明書の有効期限は90日間と短いため、自動更新の設定が非常に重要です。当社では、お客様のサーバーメンテナンスの負担を軽減するため、必ず自動更新の設定を行っています。AlmaLinux 8系、9系ともに、certbotのインストール時に自動更新用のサービスとタイマーが作成されます。これらの実行ファイルは以下のパスに配置されます。
File
/usr/lib/systemd/system/certbot-renew.service
/usr/lib/systemd/system/certbot-renew.timer
証明書更新時にウェブサーバー(本環境ではhttpdを利用)を再起動するように設定するには、以下のファイルを編集します。これにより、更新された証明書がすぐに反映されます。
command
# vi /etc/sysconfig/certbot
ファイル内のDEPLOY_HOOKパラメーターを以下のように設定を変更します。DEPLOY_HOOKは証明書がデプロイされた時に実行するコマンドを記載します。ここではウェブサーバーであるhttpdの再起動コマンドを記載しています。
command
#DEPLOY_HOOK=""
DEPLOY_HOOK="--deploy-hook 'systemctl restart httpd'"
次に、certbotの自動更新を有効化します。以下のコマンドを実行してください。
command
# systemctl enable certbot-renew.timer
# systemctl status certbot-renew.timer
● certbot-renew.timer - This is the timer to set the schedule for automated renewals
Loaded: loaded (/usr/lib/systemd/system/certbot-renew.timer; enabled; vendor preset: enabled)
Active: active (waiting) since Sat 2024-08-31 01:21:09 JST; 1 months 13 days ago
Trigger: Mon 2024-10-14 03:40:59 JST; 10h left
8月 31 01:21:09 test-rem-system-co-jp systemd[1]: Started This is the timer to set the schedule for automated renewals.
自動更新のスケジュールを確認するには、以下のコマンドを使用します。certbot-renew.timerがスケジュールに登録されていることが確認できます。
command
# systemctl list-timers
NEXT LEFT LAST PASSED UNIT ACTIVATES >
Wed 2024-10-09 09:26:17 JST 1h 33min left Wed 2024-10-09 07:39:52 JST 13min ago dnf-makecache.timer dnf-makecache.service
Wed 2024-10-09 14:36:46 JST 6h left Tue 2024-10-08 14:36:46 JST 17h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-cle>
Wed 2024-10-09 17:32:59 JST 9h left Wed 2024-10-09 01:16:00 JST 6h ago certbot-renew.timer certbot-renew.service
Thu 2024-10-10 00:00:00 JST 16h left Wed 2024-10-09 00:00:01 JST 7h ago logrotate.timer logrotate.service
Thu 2024-10-10 00:00:00 JST 16h left Wed 2024-10-09 00:00:01 JST 7h ago mlocate-updatedb.timer mlocate-updatedb.ser>
自動更新の実行ログを確認したい場合は、以下のコマンドを使用します。これにより、更新プロセスが正常に実行されているか確認できます。
command
# journalctl -u certbot-renew.service
証明書の取得や更新時に「HTTP 80ポートがオープンしていない」というエラーが発生した場合、Apache設定ファイル(httpd.conf)にバーチャルホストの設定を追記する必要があります。これにより、Let's Encryptの認証チャレンジに正しく応答できるようになります。当社では、このようなトラブルに迅速に対応し、お客様のウェブサーバーが常に安全に運用されるようサポートしています。
まとめ
以上の手順で、AlmaLinux 9系(8を含む)でLet's Encrypt証明書のセットアップと自動更新が完了します。この設定により、ウェブサーバーのセキュリティが向上し、ユーザーに安全なブラウジング体験を提供することができます。レムシステム株式会社では、お客様のウェブサーバーの安全性と効率的な運用を最優先に考え、常に最新の技術と知識を活用しています。
定期的なログの確認や、更新プロセスの監視は重要です。当社のサポートサービスでは、これらの作業を代行し、お客様のサーバーの安全性を常に維持しています。ウェブサーバーのセキュリティについてご不明な点やご相談がありましたら、お気軽にレムシステム株式会社までお問い合わせください。私たちの経験豊富なエンジニアチームが、お客様のビジネスの成功をサポートいたします。