Comme tous les ans je dois mettre à jour le certificat SSL associé à mon nom de domaine. L’opération n’est pas forcément complexe mais ça peut vite devenir un casse-tête si l’on s’y prend mal. Et c’est exactement ce qui m’est arrivé cette année.
A lire : Comment installer un certificat SSL sur un VPS sous Debian / Apache
Tous les ans IONOS m’informe par mail que mon certificat SSL va prochainement expirer. Je me rend donc sur le portail IONOS depuis lequel il me suffit de cliquer sur un bouton pour générer un nouveau certificat SSL. L’interface me propose automatiquement de télécharger ma clé privée, elle est unique et je n’aurais plus la possibilité de la télécharger à nouveau. Je pourrai ensuite télécharger la clé publique toujours depuis mon interface. La clé publique n’étant pas privée elle se télécharge à volonté.
Je ne sais pas ce que j’ai fabriqué mais j’ai lancé 2 fois le processus de génération de mon certificat SSL sauf que j’ai pas enregistré la clé privée la seconde fois. Bref pour faire simple sans m’en rendre compte j’avais une clé publique et une clé privée qui ne correspondait pas.
En conséquence j’ai passé ma soirée à essayer de charger sur mon VPS mes nouvelles clés, en vain mon serveur Apache ne répondait plus favorablement à la commande de redémarrage.
sudo /etc/init.d/apache2 reload
La nuit portant conseil j’ai remis les anciennes clés en attendant, elles sont valident encore quelques jours, et j’ai essayé de comprendre calmement d’où venait mon problème dès le lendemain.
Puisque mon serveur Apache ne démarre pas avec mes nouvelles clés je me suis rendu dans les logs d’erreurs d’Apache situées dans /var/log/apache2/error.log
nano /var/log/apache2/error.log
J’ai rapidement identifié l’erreur suivante
[ssl:emerg] [pid 10178] AH02565: Certificate and private key localhost.localdomain:443:0 from /etc/ssl/syskb.com/ssl_certificate.cer and /etc/ssl/syskb.com/private_key.key do not match AH00016: Configuration Failed
Le message est clair mon certificat et ma clé privée ne correspondent absolument pas !
C’est là que je me suis souvenu que j’avais fait une manipulation un peu étrange la veille …
Pour en avoir le cœur net je vais donc vérifier si mon certificat publique correspond bien à mon certificat privée. Pour cela il faut vérifier leur modulus, une séquence commune qui permet de confirmer que les 2 clés de mon certificat sont liées.
Cette vérification se fait directement depuis votre système Linux.
Placez-vous tout d’abord dans le répertoire qui contient les clés :
cd /etc/ssl/votredomaine/
Exécutez la commande suivante pour afficher le modulus de votre clé privée :
openssl rsa -in private_key.key -noout -modulus
Puis la commande suivante pour afficher le modulus de la clé publique (Attention ce n’est pas tout à fait la même commande)
openssl x509 -in publique_key.cer -noout -modulus
Chaque commande retournera un résultat sous cette forme :
Modulus=8833E7E8A50AF5A0DD45A6352854851E3B95DDEC1933C7BFBA8B2C9FABDE15E193681911C499A79F11E24B5B7223DBA7ED32F2CB92E4F516D4D050010B1DB0BE0437A7D6DEFD4EACD364BBDFD1DDDC45BD1B80DD3C4D0294850F425674AF91D73FBAA511E1E6FA271425F5C124308BA7096F94CA4C71723F05DC59500A0E8695DD3E89AC60E91A25622DE5DB66485E2D2FD97E20D85B6A692910E51FF71F82692C8E38B34296A940C1BBB47A8B2D6BD8127EBB5A0F4DB49B5F59D96D7B58C31A43E3D438D037A15A1E9B0C75FA289B3EF2EF06A6C3B1DE87CB8857B46A54AC3868F2E6D75E205BC6A65D13B7D264B952138D570DCDDCC8B40B17A1EB6CA96FF1
Si les certificats correspondent bien le modulus doit être identique, ce qui n’était pas mon cas.
Donc inutile de poursuivre mon troubleshooting plus loin la solution était simplement de révoquer le certificat et en regénérer un nouveau en prenant soin de ne pas faire de mauvaise manipulation, ce qui m’aurait économisé une soirée.