Hace unos 5 meses puse a funcionar una herramienta que está haciendo las delicias de mi calendario de notificaciones, porque simplemente estoy borrando todos los recordatorios para renovar certificados SSL de los dominios que mantengo, que no son pocos. Y lo mejor de todo, automáticamente se solicitan y renuevan los certificados con la Autoridad Certificadora. Explico cómo lo he montado.
Para ello vamos a usar la herramienta oficial de Let’s Encrypt. Como root iniciamos el proceso
apt-get install git git clone https://github.com/letsencrypt/letsencrypt cd letsencrypt/
cd letsencrypt
service apache2 stop
Antes de generar las key y generar los certificados vamos a configurar el VirtualHost:443 correspondiente añadiendo dentro
SSLEngine on SSLCertificateFile /etc/letsencrypt/live/www.tudominio.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.tudominio.com/privkey.pem SSLCACertificateFile /etc/apache2/ssl/letsencrypt-authorityX3.crt
Lanzamos la herramienta de letsencrypt
./letsencrypt-auto certonly -a manual -d www.tudominio.com --server https://acme-v01.api.letsencrypt.org/directory./letsencrypt-auto certonly -a standalone -d www.tudominio.com --server https://acme-v02.api.letsencrypt.org/directory
Esto generará los certificados necesarios y los pondrá en los path que hemos indicado en SSLCertificateFile y SSLCACertificateFile. También hace falta bajarse los certificados intermedios de aquí https://letsencrypt.org/certificates/ y lo puedes poner en /etc/apache2/ssl/letsencrypt-authorityX3.crt tal como he indicado antes con la directiva de apache SSLCACertificateFile. Y ahora iniciamos de nuevo apache. Lo hemos apagado previamente porque si no al lanzar ./letsencrypt-auto en standalone genera un error
http-01 challenge for www.tudominio.com Cleaning up challenges Problem binding to port 80: Could not bind to IPv4 or IPv6.
…ahora ya sí, lanzamos el apache
service apache2 start
por último añadir en el crontab de root lo siguiente para renovar los certificados de forma automática
0 0 * * * cd /root/letsencrypt/ && ./letsencrypt-auto renew --standalone
Si letsencrypt-auto lo has lanzado con la opción «-a manual» cuando llegue el momento de actualizarse, dará un error y el certificado no se actualizará por lo que en el renew configurado en el cron puede dar este error
letsencrypt-auto PluginError('An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.',). Skipping.
en caso de que te ocurriera (como me pasó a mi, que por eso se ve tachada una línea más arriba) la solución es esta:
./letsencrypt-auto renew -v --standalone --no-directory-hooks --pre-hook "service apache2 stop" --post-hook "service apache2 start"
./letsencrypt-auto renew --force-renewal --standalone --preferred-challenges http
Y esto es todo. Sólo reseñar que el nuevo editor por bloques de wordpress apesta. Saludos!