Estou configurando o SSL para Apache 2
. Meu sistema é Ubuntu Server 10.04 LTS
. Eu tenho as seguintes configurações relacionadas ao SSL na minha configuração de vhost:
SSLEngine On
SSLCertificateKeyFile /etc/ssl/private/server.insecure.key
SSLCertificateFile /etc/ssl/certs/portal.selfsigned.crt
(Observação: estou usando .insecure
o arquivo de chave porque o arquivo não é protegido por senha e gosto de ver claramente que é um arquivo de chave inseguro)
Então, quando eu reinicio o apache, recebo a seguinte mensagem:
Syntax error on line 39 of /etc/apache2/sites-enabled/500-portal-https:
SSLCertificateKeyFile: file '/etc/ssl/private/server.insecure.key' does not exist or is empty
Error in syntax. Not restarting.
Mas o arquivo está lá e não está vazio (na verdade, ele contém uma chave privada):
sudo ls -l /etc/ssl/private/server.insecure.key
-rw-r----- 1 root www-data 887 2012-08-07 15:14 /etc/ssl/private/server.insecure.key
sudo ls -ld /etc/ssl/private/
drwx--x--- 2 root www-data 4096 2012-08-07 13:02 /etc/ssl/private/
Eu tentei mudar a propriedade, usando dois grupos www-data e ssl-cert. Não sei ao certo qual é o Ubuntu: por padrão, o Ubuntu usa ssl-cert, mas, por outro lado, os processos apache são executados com o usuário www-data: é iniciado pela raiz do usuário, mas muda para www-data em alguns casos. ponto, e não tenho certeza de quando os certificados são lidos.
Mas, enfim, mudar o proprietário do grupo não melhorou a situação. Minhas perguntas são:
- O que mais eu poderia tentar fazer com que isso funcionasse?
- Como posso verificar se meu arquivo de chave é um arquivo de chave válido?
- Como posso verificar se o arquivo de chave e o certificado (
/etc/ssl/certs/portal.selfsigned.crt
) funcionam juntos?
Eu acho que o Apache está dando uma mensagem de erro enganosa, e eu gostaria de identificar o erro.
fonte
service apache2 restart
vez de**sudo** service apache2 restart
... note to self:sudo make me a sandwich fool
Respostas:
Encontrei o erro. Foi porque eu estou usando um script para configurar os certificados e uma das etapas que estou executando é
apache2ctl configtest
. O erro veio deste comando, e não da reinicialização do apache, que foi o que estava me enganando. Como eu estava executando o comando apache2ctl como usuário normal, ele não tinha acesso aos arquivos de chave e, portanto, à mensagem de erro.Facit: verifique se todos os seus comandos do apache são executados com o sudo, mesmo aqueles destinados apenas à verificação de sintaxe (
apache2ctl
), pois eles também precisam acessar as chaves.fonte
Eu também recebo a mensagem
enquanto
/path/to/file
existir e possuir permissões corretas, apenas por causa do SELinux ativado e este arquivo não estar acessível para o usuário apache.Se parece com isso:
Para corrigir isso, eu corro
sudo restorecon -Rv /etc/pki/tls/certs/
- ele irá reparar a propriedade SELinux para o arquivo do problema.fonte
sudo: restorecon: command not found
restorecon
faz parte dopolicycoreutils
pacote. Além disso, você talvez não tenha o SELinux?Eu fiz isso e isso me ajudou no CentOS 5.7
fonte
Recebi uma mensagem semelhante:
SSLCertificateChainFile: file '/opt/bitnami/apache2/conf/DigiCertCA.crt\xe2\x80\x9d' does not exist or is empty
Meu problema foi que o editor de texto que eu estava usando colocou ascii "aspas corretas" 148 em vez de aspas normais ascii 34; usando um editor do tipo unix (por exemplo, TextWrangler) colocou a citação correta e resolveu o problema.
fonte
As permissões estão erradas, mas, de acordo com a sua resposta, não foi a causa do problema:
drwx--x--- 2 root www-data 4096 2012-08-07 13:02 /etc/ssl/private/
/ etc / ssl / private geralmente pertence ao grupo ssl-cert em sistemas baseados em debian.
Acabei de perceber as permissões 0710 e me pergunto para que pode ser usada.
fonte