O dia todo, estou corrigindo bugs principalmente na área de TLS, mas essa questão não é especificamente sobre TLS.
Bem, eu tenho um servidor web com alguns sites, cada um com seu próprio certificado SSL.
Mas direto ao ponto, consegui instalar o Certbot versão 0.19.0 no meu Debian 9.2 assim:
Adicionando backports às fontes:
deb http://ftp.debian.org/debian stretch-backports main
Instalando a versão mais recente do Certbot a partir de backports:
apt-get install python-certbot-apache -t stretch-backports
Depois, tive que fazer alguns ajustes importantes no arquivo de renovação, que ficou assim:
# renew_before_expiry = 30 days
version = 0.10.2
archive_dir = /etc/letsencrypt/archive/pavelstriz.cz-0001
cert = /etc/letsencrypt/live/pavelstriz.cz-0001/cert.pem
privkey = /etc/letsencrypt/live/pavelstriz.cz-0001/privkey.pem
chain = /etc/letsencrypt/live/pavelstriz.cz-0001/chain.pem
fullchain = /etc/letsencrypt/live/pavelstriz.cz-0001/fullchain.pem
# Options used in the renewal process
[renewalparams]
authenticator = webroot
installer = apache
rsa_key_size = 4096
account = c3f3d026995c1d7370e4d8201c3c11a2
must_staple = True
[[webroot_map]]
pavelstriz.cz = /home/pavelstriz/public_html
www.pavelstriz.cz = /home/pavelstriz/public_html
Consegui renovar o pavelstriz.cz
domínio depois disso com:
certbot renew --dry-run
Mas o que me preocupa é o cron diário do Certbot:
# /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
Não consigo descobrir se funciona de verdade ou como executá-lo com sucesso?
Se eu correr:
/usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew
no Bash, diz:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
The requested ! plugin does not appear to be installed
Posso ter interpretado mal esses comandos.
O comando real executado pelo cron é:
Começa testando alguns arquivos
que se traduz em
/usr/bin/certbot
e é executável (-x /usr/bin/certbot
)-a \!
)/run/systemd/system
existe e é um diretório (-d /run/systemd/system
)Se o teste for bem-sucedido, aguarde um número aleatório de segundos (
perl -e 'sleep int(rand(3600))'
) e tente renovar o certificado (certbot -q renew
).No entanto, no Debian 9,
systemd
é instalado por padrão, o que significa que/run/systemd/system
existe e é um diretório, então o teste inicial falha e o comando de renovação nunca é executado.A renovação real é gerenciada por um cronômetro systemd definido no arquivo
lib/systemd/system/certbot.timer
. A partir da versão 0.27.0-1; seu conteúdo é:Se o cerbot estiver configurado corretamente, você provavelmente encontrará linhas como
em seu
syslog
.Umm, talvez, um pouco :-)
Esta entrada:
Eu não posso fazer cara ou coroa. Tudo o que você precisa é, na verdade, algo como:
Ou, se você não quiser nenhum e-mail de
cron
:Se você executar (as
root
)certbot renew
verá se configurou as coisas corretamente ou não:Você também pode usar o
certificates
argumento withcertbot
para exibir informações sobre seus certificados: