web-dev-qa-db-fra.com

haproxy - impossible de charger la clé privée SSL à partir d'un fichier PEM

haproxy ne démarre plus, il montre l'erreur

bind <ip>:443' : unable to load SSL private key from PEM file ...

Nous n'avons rien changé sur les certificats ou la configuration. Depuis le dernier démarrage, nous n’avons effectué que des mises à jour normales du système.

Pour trouver l'erreur, j'ai généré un nouveau certificat (auto-signé), mais l'erreur existe toujours.

Voici la structure du fichier PEM:

-----BEGIN CERTIFICATE-----
MIIDXjCCAkY...
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIIEpgIBAAKC....
-----END RSA PRIVATE KEY-----

J'ai aussi essayé de convertir la clé privée avec

openssl pkcs8 -topk8 -inform pem -in server.key -outform pem -nocrypt -out server_new.key

mais haproxy montre toujours la même erreur.

J'essaie depuis des heures mais je ne trouve pas la raison. S'il vous plaît aider! Je vous remercie!

Mettre à jour:

Le problème a quelque chose à voir avec l'accès aux fichiers. Le fichier PEM était stocké dans /data/ssl/domainname/domainname.pem. Les droits de fichiers sont ok. Lorsque je déplace le fichier PEM vers/etc/haproxy, tout va bien.

26
efdev1234

Le problème que je rencontrais sur CentOS était SELinux qui gênait. Pour tester si SELinux est le problème, exécutez la commande suivante en tant que root: setenforce 0, puis essayez de redémarrer haproxy. Si cela fonctionne, il y a un problème avec SELinux. (Vous pouvez réactiver SELinux maintenant et essayer de résoudre le problème sous-jacent avec la commande setenforce 1). 

Comme j'ai les certificats dans le dossier/etc/haproxy/certificates, la commande suivante a fonctionné pour obtenir les autorisations appropriées sur les fichiers restorecon -v -R /etc/haproxy (selon votre système d'exploitation et la configuration de SELinux, cela peut ne pas fonctionner). 

12
Tim Ludwinski

L'ordre dans lequel les fichiers de certificat et de clé apparaissent dans le fichier est important. Utilisez ce qui suit pour créer le fichier pem.

cat example.com.crt example.com.key > example.com.pem
26
Justin Hourigan

J'ai aussi rencontré cette erreur. Vous voudrez peut-être essayer de supprimer la phrase secrète de la clé privée avant de commencer à déchirer vos cheveux. Cela a résolu le problème pour moi. Je pense que HAProxy est supposé vous demander le mot de passe au redémarrage, mais dans mon cas, il n’a pas utilisé «Sudo /etc/init.d/haproxy restart

Pour supprimer le mot de passe, essayez 'Openssl rsa -in [PRIVATE_KEY_FILE] -out nopassphrase.key'

La phrase de passe est-elle nécessaire? Vous trouverez une discussion dans le lien ci-dessous . https://security.stackexchange.com/questions/70495/ssl-certificate-is-passphrase-necessary-and-how-does-Apache-know-it

4
brunettdan

Pour moi le problème a été causé par cette ligne dans le fichier PEM combiné:

----- CERTIFICAT DE FIN ---------- COMMENCEZ LA CLÉ PRIVÉE RSA ----- /

Après l'avoir partagé, je pourrais lancer HaProxy et le charger correctement:

* ----- CERTIFICAT DE FIN -----

----- COMMENCER LA CLÉ PRIVÉE RSA ----- *

J'espère que ça aide

T

2
TBONE

Le problème pour moi était un personnage étrange au début de la clé.

Ce caractère n'apparaissait pas lorsque cated avait modifié le fichier, car il était <feff>, également appelé BOM UTF-8 (Byte Order Mark) . Il n'est apparu que lorsque j'ai ouvert le fichier dans vim.

Je ne m'attendrais pas à ce que cela soit très courant, mais j'espère que cela évitera des maux de tête à quelqu'un.

0
Peter Klipfel

Juste pour information, dans mon cas, j'avais le caractère espace devant la séquence "----- BEGIN RSA PRIVATE KEY -----" et qui a cassé le fichier pem.

0
Igor Tverdovskiy