Eu uso o Nginx em um contêiner Docker no Alpine. Usei o Certbot para gerar um novo certificado chamado my.domain.com-0004
.
A substituição do certificado por mv
ou cp
resultou em um erro de protocolo SSL e nos logs o Nginx não conseguiu ver o arquivo:
2024/04/22 08:41:34 [error] 46#46: *109 cannot load certificate "/etc/letsencrypt/live//fullchain.pem": BIO_new_file() failed (SSL: error:80000002:system library::No such file or directory:calling fopen(/etc/letsencrypt/live//fullchain.pem, r) error:10000080:BIO routines::no such file) while SSL handshaking, client: 34.32.209.4, server: 0.0.0.0:443
Substituindo o certificado anterior, tudo voltou a funcionar. Tentei reiniciar o contêiner sem sucesso.
Se você olhar sua mensagem de erro, verá
"/etc/letsencrypt/live//fullchain.pem"
o nome do arquivo que está tentando carregar. Seu certificado está de/etc/letsencrypt/live/$ssl_server_name/fullchain.pem
acordo com seucert.conf
arquivo. Parece bastante óbvio para mim que a variável$ssl_server_name
não foi definida e, portanto, está retornando uma string vazia... e por isso não consegue encontrar seu certificado porque não há nenhum onde está procurando.Então descobri qual era o problema. Na verdade, o
live
diretório não contém arquivos. Estes sãosoftlinks
/symlinks
:E não havia
-0004
diretório noarchive
diretório, porque foi renomeado para-0003
. Depois de mover o certificado de-0003
para-0004
inarchive
, olive
certificadosymlink
estava correto e o novo certificado começou a funcionar conforme esperado.