[Apache 2.4] Let’s Encryptをhttpsの環境で自動更新できるようにする

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 環境であっても問題なく証明書の更新を行ってくれるのがベストなんですけどね・・・

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です