Let's Encrypt
を利用している場合、 Apache
の設定で https
だけ接続可能な状態にしていると証明書の更新時にエラーになるので毎回設定ファイルを編集して80 番ポート( http
)で接続できるようにしていたんですが、443 番ポート( https
)のみ開放している状態でも証明書の自動更新ができる方法を見つけたのでメモしておきます。
よくある設定だと80番ポートで接続しようとしてきたら443番ポートにリダイレクトするように設定している場合に、 Let' Encrypt
の自動更新がうまく動いてくれなかったので、その対策です。
設定内容
下記の設定を Apache
の設定ファイルに追加するだけで OK です!
RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge/*
設定部分全体だとこんな感じです。
<VirtualHost *:80>
ServerName domain.name
<IfModule mod_rewrite.c>
RewriteEngine On
LogLevel alert rewrite:trace3
RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge/*
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>
</VirtualHost>
最後に
Apache
の設定ファイルに一文追加するだけで、443 番ポートのみ通信可能にしている場合でも、 Let's Encrypt
の自動更新ができるようになりました。 Apache
の設定などはきちんと設定していると運用時の手間を省くことができるので、是非この設定を有効活用してもらえればと思います。
本当は、 Let's Encrypt
側が https
環境であっても問題なく証明書の更新を行ってくれるのがベストなんですけどね・・・
コメント