web-dev-qa-db-ja.com

Apache httpdでletsencrypt証明書を更新する

certbot--webrootプラグインとcertbot renewを使用して証明書を更新していますが、機能しますが、httpdが証明書をキャッシュしているようで、「 「更新されました。

httpdが証明書をリロードするためのシグナルはありますか?

pSダウンタイムを避けるため、httpdを再起動しないことをお勧めします。

6
rustyx

httpdを取得して新しい証明書を確認するには、「 グレースフルリスタート 」を実行するように要求する必要があります。ドキュメントから:

USR1または優雅なシグナルにより、親プロセスは、現在の要求の後で終了するように(または、何も処理していない場合はすぐに終了するように)親プロセスに子供に通知します。親は構成ファイルを再度読み取り、ログファイルを再度開きます。各子が消滅すると、親は新しい世代の構成の子に置き換えられ、新しい要求の処理がすぐに開始されます。

そのため、適切な再起動によってダウンタイムが発生することはありません。

Letsencrypt/certbotに適切な再起動をトリガーさせるには、--post-hook引数。証明書の更新が試みられた場合、この引数はコマンドを1回実行します。 docs から:

証明書の取得/更新を試みた後にシェルで実行されるコマンド。更新された証明書のデプロイ、または--pre-hookによって停止されたサーバーの再起動に使用できます。これは、証明書を取得または更新しようとした場合にのみ実行されます。 (デフォルト:なし)

だからあなたが望むコマンドは

certbot renew --post-hook "apachectl graceful"

または、cronジョブから実行する場合

certbot renew --quiet --post-hook "apachectl graceful"

(この回答について助けてくれた@RustyXに感謝します)

8
gene_wood