Apache: SSLCertificateKeyFile: o arquivo não existe ou está vazio

26

Estou configurando SSL para Apache 2 . Meu sistema é Ubuntu Server 10.04 LTS . Eu tenho as seguintes configurações relacionadas ao SSL na configuração do meu vhost:

SSLEngine On
SSLCertificateKeyFile /etc/ssl/private/server.insecure.key
SSLCertificateFile    /etc/ssl/certs/portal.selfsigned.crt

(Nota: Eu estou usando .insecure para o arquivo de chave porque o arquivo não é protegido por senha, e eu 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 alterar a propriedade usando dois grupos, www-data e ssl-cert. Não tenho certeza qual é a correta no Ubuntu: por padrão o Ubuntu usa ssl-cert, mas por outro lado os processos do apache rodam com o usuário www-data: ele é iniciado pelo usuário root, mas muda para www-data em algum ponto, e não tenho certeza de quando os certificados são lidos.

Mas, de qualquer forma, alterar o proprietário do grupo não melhorou a situação. Minhas perguntas são:

  1. O que mais eu poderia tentar fazer isso funcionar?
  2. Como posso verificar se meu arquivo de chaves é um arquivo de chaves válido?
  3. Como posso verificar se o arquivo de chave e o certificado ( /etc/ssl/certs/portal.selfsigned.crt ) funcionam juntos?

Acho que o Apache está dando uma mensagem de erro enganosa, e gostaria de identificar o erro.

    
por dangonfast 11.08.2012 / 13:20

5 respostas

25

Eu encontrei o erro. Foi porque estou usando um script para configurar os certificados e uma das etapas que estou executando é apache2ctl configtest . O erro estava vindo desse comando, e não do reinício do apache, que era o que me enganava. 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: certifique-se de que todos os comandos do seu apache sejam executados com o sudo, mesmo aqueles que são destinados apenas para verificação de sintaxe ( apache2ctl ), já que eles também precisam acessar as chaves.

    
por 11.08.2012 / 14:08
7

Eu também recebo a mensagem

SSLCertificateKeyFile: file '/path/to/file' does not exist or is empty

enquanto /path/to/file existe e tem permissões certas, apenas porque o SELinux está ativado e este arquivo não pode ser acessado pelo usuário do apache.

Parece assim:

$ sudo ls -laZ /etc/pki/tls/certs/
drwxr-xr-x. root root system_u:object_r:cert_t:s0      .
drwxr-xr-x. root root system_u:object_r:cert_t:s0      ..
-rw-------. root root unconfined_u:object_r:cert_t:s0  this-one-works.crt
-rw-------. root root unconfined_u:object_r:admin_home_t:s0 this-one-is-unaccessable.crt

Para corrigir isso, eu corro sudo restorecon -Rv /etc/pki/tls/certs/ - ele irá reparar a propriedade do SELinux para o arquivo com problema.

    
por 12.01.2015 / 15:43
5

Eu fiz isso e isso me ajudou no CentOS 5.7

server:~ # chcon -t cert_t /etc/pki/tls/private/my.key 
server:~ # ls -laZ /etc/pki/tls/private/
    
por 11.09.2014 / 15:40
1

Recebi uma mensagem semelhante:

SSLCertificateChainFile: file '/opt/bitnami/apache2/conf/DigiCertCA.crt\xe2\x80\x9d' does not exist or is empty

Meu problema era que o editor de texto que eu estava usando colocava uma "citação à direita" ascii 148 em vez de uma ascensão normal de aspas duplas 34; usando um editor do tipo unix (por exemplo, TextWrangler), coloque a citação à direita e resolva o problema.

    
por 08.11.2015 / 06:22
0

As permissões estão erradas, mas, de acordo com 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 no debian.

Só notei os 0710 perms e imagino o que pode ser usado.

    
por 12.08.2012 / 01:28