2017-02-17 2 views
8

私はLetsEncryptのcertbotからSSL証明書の更新を自動化しています。実際の更新は機能していますが、更新された証明書が読み込まれるようにサービスの再起動を自動化する必要があります。私はletsencrypt renewのために複数の--renew-hookパラメータをcronjob内で使用できるかどうか疑問に思っていましたか?LetsEncrypt certbot複数の更新フック

証明書の更新時にサービスを再起動する方法を自動化するにはどうすればよいですか?

答えて

11

はい、複数の--renew-hook文を使用できます。また、-qフラグを使用すると、実際に更新が行われるまで空白の通知が電子メールで送信されます。また、更新が発生するまでは、サービスを再起動しません。また、ログファイルを必要に応じて電子メールに添付します。

毎日bashを実行するcronがあります。私はbash(certbotrenew.sh)インサイド

は、単純にこの

#!/bin/bash 
cd /opt/certbot 
sudo ./certbot-auto renew --renew-hook "service postfix reload" --renew-hook "service dovecot restart" --renew-hook "service apache2 reload" -q >> /var/log/certbot-renew.log | mail -s "CERTBOT Renewals" [email protected] < /var/log/certbot-renew.log 
exit 0 

で、私のcronが私はちょうどいつも、私は関係なく、何も起こらなかった場合の電子メールを送信し、なぜ一部の人々が疑問

00 20 * * 1 /bin/certbotrenew.sh 

です私の毎日のcronsが動作していることを知りたい。

+0

Ubuntu 16.04には '--renew-hook'引数を受け入れない旧バージョンのCertbotが付属しています。 –

+1

はい、レポにはLet's Encryptの非常に古いバージョンがあります。これは去年もcertbotに名前が変更されました。レポのバージョンをアンインストールし、単に 'mkdir/opt/certbot'と' cd/opt/certbot'と 'sudo wget https:// dl.eff.org/certbot-auto'を実行するだけで証明書を実行することができますそこからの--autoコマンドライン。 Ubuntuのリポジトリのバージョンが正しいとメモリが私に役立つならば、let's暗号化のv0.4です。 Certbotは現在0.11です。 – MitchellK

+2

@MitchellK - 毎日のcronメールを受け取るのではなく、https://IsItWorking.info(私)のようなcronレポートサービスについてはどうでしょうか。 cronスクリプトは、正常に実行されるたびにチェックインすることができます。それがチェックインしない場合、サービスはあなたに警告します。 (おそらく電子メールに加えて) –

7

私はCertBotのUbuntuの16.04でフレッシュインストールから見たものから、それはcronジョブを作成します。

# /etc/cron.d/certbot: crontab entries for the certbot package 
# 
# Upstream recommends attempting renewal twice a day 
# 
# Eventually, this will be an opportunity to validate certificates haven't been revoked, etc. Renewal will only occur if expiration is within 
# 30 days. 
SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 

0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew --pre-hook 
'/bin/run-parts /etc/letsencrypt/pre-hook.d/' --post-hook '/bin/run-parts /etc/letsencrypt/post-hook.d/' --renew-hook '/bin/run-parts 
/etc/letsencrypt/renew-hook.d/' 

だから、あなただけ追加する必要があり/etc/letsencrypt/renew-hook.d/

を含め、多くのディレクトリにrun-partsを実行それらのフックディレクトリのいずれかにある実行可能ファイル(必要なものを選んでください)。注意点として

#!/bin/bash 
/etc/init.d/nginx restart 

:例として

は、私のrenew-hook.dに私は次の内容のファイルを作成したrestart-nginxあなたは--testオプションを使用してrun-partsによって呼び出されますどのようなファイルを知ることができます。 (例run-parts --test /etc/letsencrypt/renew-hook.d/

+3

彼らは実際には、もはやそれらのラン部分のパラメータをもはや含まないように、certbotのcronジョブを変更しました。これを実現するための推奨される方法は、 '/ etc/letsencrypt/cli.ini'ファイルを作成し、そこにフックパラメータを指定することです。 https://github.com/certbot/certbot/issues/1706#issuecomment-302774426 – Drew

2

することもできますセットのフック(このようなファイル/etc/letsencrypt/cli.inisee documentation)のグローバル・オプションなどの他のオプションあなたが好きな場合):

# Global config for letsencrypt runs 
# 
# Note that these options apply automatically to all use of Certbot for 
# obtaining or renewing certificates, so options specific to a single 
# certificate on a system with several certificates should not be placed 
# here. 

renew-hook = service postfix reload 
post-hook = service nginx reload 

あなたが最初にほとんどのシステム上のファイルを作成する必要があります。 Letsencryptはなしで来る。

あなたがグローバルに行くのが好きではありません場合は、また、すべてのrenewalフォルダに証明書の特定のバージョンを作成することができます。これは、ため、既定のパッケージマネージャのように見えます