【ウェブサーバー構築の基本】Let's Encrypt証明書の取得と自動更新の設定

 こんにちは、レムシステム株式会社のエンジニア、小村(@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証明書のセットアップと自動更新が完了します。この設定により、ウェブサーバーのセキュリティが向上し、ユーザーに安全なブラウジング体験を提供することができます。レムシステム株式会社では、お客様のウェブサーバーの安全性と効率的な運用を最優先に考え、常に最新の技術と知識を活用しています。

 定期的なログの確認や、更新プロセスの監視は重要です。当社のサポートサービスでは、これらの作業を代行し、お客様のサーバーの安全性を常に維持しています。ウェブサーバーのセキュリティについてご不明な点やご相談がありましたら、お気軽にレムシステム株式会社までお問い合わせください。私たちの経験豊富なエンジニアチームが、お客様のビジネスの成功をサポートいたします。

メールでのお問い合わせ

メールフォームからシステムの 知りたいことや問題点をお問い合わせ

メールで問い合わせる

電話でのお問い合わせ

電話でお気軽にお問い合わせください (受付時間:平日 月-金)

053-525-7357

  • この記事を書いた人
rem-profile-photo

レムシステム

レムシステムはPC・サーバー・ネットワークでの業務効率化を主な業務としている会社です。全国に対応しています。

-AlmaLinux, Apache, CentOS, Linux, Rocky Linux, オープンソース, サーバー構築, サーバー運用管理
-, , ,