59 votes

Apache : SSLCertificateKeyFile : le fichier n'existe pas ou est vide

Je configure SSL pour Apache 2 . Mon système est Ubuntu Server 10.04 LTS . J'ai les paramètres suivants relatifs au SSL dans ma configuration de serveur virtuel :

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

(Note complémentaire : j'utilise .insecure pour le fichier clé, car le fichier n'est pas protégé par une phrase de passe, et j'aime voir clairement qu'il s'agit d'un fichier clé non sécurisé)

Ainsi, lorsque je redémarre apache, j'obtiens le message suivant :

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.

Mais le fichier est là, et n'est pas vide (en fait il contient une clé privée) :

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/

J'ai essayé de changer la propriété, en utilisant deux groupes www-data et ssl-cert. Je ne suis pas sûr de savoir lequel est le bon dans Ubuntu : par défaut Ubuntu utilise ssl-cert, mais d'autre part les processus apache fonctionnent avec l'utilisateur www-data : il est démarré par l'utilisateur root, mais change en www-data à un moment donné, et je ne suis pas sûr quand les certificats sont lus.

Mais de toute façon, le changement de propriétaire du groupe n'a pas amélioré la situation. Mes questions sont les suivantes :

  1. Que puis-je essayer d'autre pour que cela fonctionne ?
  2. Comment puis-je vérifier que mon fichier clé est valide ?
  3. Comment puis-je vérifier que le fichier de clé et le certificat ( /etc/ssl/certs/portal.selfsigned.crt ) travaillent ensemble ?

Je pense qu'Apache envoie un message d'erreur trompeur, et je voudrais localiser l'erreur.

75voto

LouiGi Points 9

J'ai trouvé l'erreur. C'est parce que j'utilise un script pour configurer les certificats, et l'une des étapes que j'effectue est la suivante apache2ctl configtest . L'erreur provenait de cette commande, et non du redémarrage d'apache, qui était ce qui m'induisait en erreur. Comme j'exécutais la commande apache2ctl en tant qu'utilisateur normal, elle n'avait pas accès aux fichiers de clés, d'où le message d'erreur.

Facit : assurez-vous que toutes vos commandes apache sont exécutées avec sudo, même celles qui sont uniquement destinées à la vérification de la syntaxe ( apache2ctl ), puisqu'ils n'ont pas besoin d'accéder aux clés.

20voto

AntonioK Points 509

Je reçois également le message

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

tandis que /path/to/file existe et a les bonnes permissions, juste parce que SELinux est activé et que ce fichier était inaccessible pour l'utilisateur apache.

Ça ressemble à ça :

$ 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

Pour résoudre ce problème, je lance sudo restorecon -Rv /etc/pki/tls/certs/ - il réparera la propriété SELinux pour le fichier problématique.

8voto

Radamanf Points 171

J'ai fait cela et cela m'a aidé sur CentOS 5.7.

server:~ # chcon -t cert_t /etc/pki/tls/private/my.key 
server:~ # ls -laZ /etc/pki/tls/private/

1voto

dkpruett Points 11

J'ai reçu un message similaire :

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

Mon problème était que l'éditeur de texte que j'utilisais plaçait une "citation droite" ascii 148 au lieu d'une double citation normale ascii 34 ; l'utilisation d'un éditeur de type unix (par exemple TextWrangler) mettait la citation droite et réglait le problème.

1voto

user572964 Points 382

Aucune permission pour les utilisateurs normaux dans /etc/ssl/private répertoire.

Veuillez essayer

sudo apache2ctl configtest

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X