OracleLinux9.3 Let’s Encrypt証明書を自動更新する方法
環境
OracleLinux9.3
1.登録前のテスト
以下の–dry-runオプションを使って自動更新をテストします。
# certbot renew --dry-run
2.Snap版certbotをインストールする
証明書自動更新機能がインストールされます
# systemctl list-timers | less
3.snap.certbot.renew.timer のユニットファイルを確認する
# vi /etc/systemd/system/snap.certbot.renew.timer
[Unit] # Auto-generated, DO NOT EDIT Description=Timer renew for snap application certbot.renew Requires=var-lib-snapd-snap-certbot-3700.mount After=var-lib-snapd-snap-certbot-3700.mount X-Snappy=yes [Timer] Unit=snap.certbot.renew.service OnCalendar=*-*-* 08:25 OnCalendar=*-*-* 21:27 [Install] WantedBy=timers.target
上記設定によるとOnCalenderパラメータで指定されている
毎日8時25分と21時27分に更新を行います
4.snap.certbot.renew.serviceのユニットファイルを確認する
# vi /etc/systemd/system/snap.certbot.renew.service
[Unit] # Auto-generated, DO NOT EDIT Description=Service for snap application certbot.renew Requires=var-lib-snapd-snap-certbot-3700.mount Wants=network.target After=var-lib-snapd-snap-certbot-3700.mount network.target snapd.apparmor.service X-Snappy=yes [Service] EnvironmentFile=-/etc/environment ExecStart=/usr/bin/snap run --timer="00:00~24:00/2" certbot.renew SyslogIdentifier=certbot.renew Restart=no WorkingDirectory=/var/snap/certbot/3700 TimeoutStopSec=30 Type=oneshot
5.証明書を使用するWebサーバーの再起動は行われませんので、更新後に自動的に実行されるスクリプトを設定します
# vi /etc/letsencrypt/renewal-hooks/post/web_restart.sh
下記内容を記述
#!/bin/bash systemctl reload httpd
# chmod 755 /etc/letsencrypt/renewal-hooks/post/web_restart.sh
6. mod_sslをインストールします
# dnf -y install mod_ssl
ssl.conf ファイルを編集します
# vi /etc/httpd/conf.d/ssl.conf
#43 行目 コメント解除して変更 DocumentRoot "/var/www/html/[FQDN]" #44 行目 コメント解除して変更 ServerName [FQDN]:443 #85行目 コメントにしてその下に追加 # SSLCertificateFile /etc/pki/tls/certs/localhost.crt SSLCertificateFile /etc/letsencrypt/live/[FQDN]/cert.pem #93行目 コメントにしてその下に追加 # SSLCertificateKeyFile /etc/pki/tls/private/localhost.key SSLCertificateKeyFile /etc/letsencrypt/live/[FQDN]/privkey.pem #103行目 追加 SSLCertificateChainFile /etc/letsencrypt/live/[FQDN]/chain.pem
Apacheを再起動します
# systemctl restart httpd
Firewallでhttpsを許可する
# firewall-cmd --add-service=https --permanent success # firewall-cmd --reload success
7.HTTP 通信を HTTPS へリダイレクトする
.htaccessを/var/www/html/[FQDN]/ 配下に作成する
# vi /var/www/html/[FQDN]/.htaccess
.htaccessに以下の内容を記載する
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]