Estou executando certificados SSL da Let's Encrypt . Eu os instalei em minha máquina Ubuntu executando o Apache. A configuração funciona bem e posso abrir o site, ver o cadeado verde e até tirar A+ no SSL Labs.
O problema é que quando eu faço o apachectl configtest o servidor retornava um erro de arquivo não encontrado:
SSLCertificateFile: file '/etc/letsencrypt/live/www.example.com/fullchain.pem' not exist or is empty.
Mas sudo service apache2 restart
funciona muito bem.
Eu tenho essa pergunta em execução na comunidade Let's Encrypt, mas o problema ainda não foi resolvido.
sudo cat /etc/letsencrypt/live/www.example.com/fullchain.pem
funciona, retorna detalhes do certificado válido.
sudo x509 -text -noout -in /etc/letsencrypt/live/www.example.com/fullchain.pem
não funciona e retorna o erro abaixo:
Error opening Certificate /etc/letsencrypt/live/www.example.com/fullchain.pem
139774254929568:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('/etc/letsencrypt/live/www.example.com/fullchain.pem.','r')
139774254929568:error:2007402:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
ubable to load certificate
Alguma idéia de por que estou recebendo erros no apachectl configtest e no openssl ?
Obrigado rapazes!
No meu caso, os arquivos e permissões não são o problema. Eu estava tentando reiniciar o servidor
apachectl restart
ou testar a configuração (apachectl -t
ouapachectl configtest
). O usuário que executa o comando (eu) simplesmente não tinha as permissões adequadas para acessar os certificados. Eu apenas tive que prefixar os comandossudo
para executá-los como root! Sem mais erros, o teste de configuração retorna "Sintaxe OK" e posso reiniciar o servidor. (OK, estou um pouco envergonhado por ter demorado tanto para descobrir isso ...)Depois de várias noites sem dormir, finalmente consegui fazê-lo funcionar. (declaração exagerada) Todos nós sabemos que foram permissões, mas exatamente onde havia algo para verificar.
Continuei trabalhando com /ect/letsencrypt/live e os diretórios e arquivos abaixo dele. Continuei alterando as permissões do original para 0755 e 0777. O que não vi imediatamente foi que /etc/letsencrypt/live era um link criado a partir de /etc/letsencrypt/archive e tinha uma permissão 0700 . É por isso que não foi capaz de ler o arquivo. Após alterar a permissão de /etc/letsencrypt/archive para 0755 ,
apachectl configtest
já respondeu comSyntax OK
.Embora o problema original tenha sido resolvido, vou encaminhá-lo para o Let's Encrypt porque tudo isso foi instalação automática de certificados. Algo assim não deveria acontecer em "auto". Mas minha configuração pode ter algo a ver com o problema de permissão, pois instalei usando um usuário não root (mas fiz o sudo).
Espero que isso ajude alguém.
Concordando com a resposta de timeSmith de que as permissões nesses arquivos e pastas são intencionalmente restritas e devem ser deixadas como
0700
.Você precisa executar
service httpd
ouapachectl
comandossudo
para que esses processos tenham privilégios de root e obtenham acesso de leitura às pastas e arquivos do certificado letsencrypt.Conforme comentado originalmente por Ian Terle , alterar as permissões no diretório "live" agora corrige o problema:
Nota: Eu estava observando o mesmo erro do OP.
Isso foi confirmado em:
Ubuntu 16.04.2 LTS
Apache/2.4.18 (Ubuntu)
É melhor deixar as permissões nos arquivos certificados muito restritas. Para permitir que os processos apropriados acessem os arquivos certificados: inicie o apache usando os seguintes comandos.
Como alternativa, reinicie normalmente usando este comando: