El error nginx cannot load certificate path/fullchain.pem aparece cuando probamos el servicio NGINX después de eliminar certificados Let’s Encrypt generado con Certbot.
En el servidor, el error aparece así:
nginx: [emerg] cannot load certificate "/etc/letsencrypt/live/example.com/fullchain.pem": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/letsencrypt/live/example.com/fullchain.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)
nginx: configuration file /etc/nginx/nginx.conf test failed
Contenido
Error de nginx de fondo
En un artículo anterior, mostré cómo puede eliminar de Certbot los dominios que estaban alojados en el servidor en el pasado pero que actualmente ya no están activos. Eliminar dominios antiguos Certbot certificates (Vamos a cifrar el certificado).
Cuando elimina certificados SSL para dominios activos, que todavía están alojados en el servidor, mediante el comando: sudo certbot delete
, el certificado se elimina automáticamente, pero permanece activo en las sesiones hasta que se reinicia el servicio nginx
. Con el comando nginx -t (probando el servicio) puede sorprenderse de que la prueba falle con el error anterior. Sin embargo, la solución es muy sencilla.
Nginx fijo: [emerg] no puede cargar el certificado fullchain.pem
Cuando instala un certificado SSL Let’s Encrypt por Certbot, en el archivo de configuración de nginx para el dominio, se agregan unas líneas indicando la existencia del certificado. Cuando se elimina el certificado, las líneas permanecen en la configuración de nginx y deben eliminarse manualmente. Es decir, las siguientes líneas:
.....
listen 443 ssl http2; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = www.example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name example.com www.example.com;
listen 80;
return 404; # managed by Certbot
Después de eliminar estas líneas del archivo nginx confg del dominio para el que eliminó el certificado SSL, ejecuta el comando nginx -t
para comprobar si todo está bien.
[root@server]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@server]#
Ahora puede reiniciar el servicio de forma segura. nginx.