OpenSSL : Vérifier si la clé publique correspond à la clé privée

Publié le 09 June 2023

Si vous voulez installer un nouveau certificat SSL, vour pouvez vouloir vérifier avant que tout est correct. Je vous avait déjà expliqué comment voir les détails d’un certificat SSL. C’est utilie pour vérifier la date d’expiration, ou si les bons DNS sont inclus dedans.

Maintenant, nous allons voir comment vérifier que la clé publique correspond bien à la clé privée. Pour cela, il suffit de comparer leur modulus. Ça se fait avec les commandes suivantes :

Par exemple :

openssl rsa -noout -modulus -in /etc/letsencrypt/live/palc.fr/privkey.pem
Modulus=BE0B3CA3298511D6CB01475BAEF6A06A6A47D6519BF6CFD8295D2B0D817D0C3021BD710C8FFE2FE208E6624636BCA7777EAB091ED64D1A1559C8D58D86E7457F967BF63F9E7E42790CC2C7146B0BE7F053073388F6EBF601EB0963EDEEF8F2610612D647265B416CF1412A482B0673EE07B5281C20F14E8AB294D009CD9F449FEA4B8A91742C9ABF9A19E21CFD16FCDB03DA1CC59204029BBE029FDCC52236C7E2DF90038F695528E18D38A42C869A59C2B72E82105AC3AA85E8B13918D2CC5034BDEDE48CAC51ECBC5B0820EB86DE35195903298E64129A9F6BB40075B964880D241BB8A3F3DDE9118799EDEBD8EEC1986550F48639BAF742C3D60E9F5F0BE1

openssl x509 -noout -modulus -in /etc/letsencrypt/live/palc.fr/cert.pem
Modulus=BE0B3CA3298511D6CB01475BAEF6A06A6A47D6519BF6CFD8295D2B0D817D0C3021BD710C8FFE2FE208E6624636BCA7777EAB091ED64D1A1559C8D58D86E7457F967BF63F9E7E42790CC2C7146B0BE7F053073388F6EBF601EB0963EDEEF8F2610612D647265B416CF1412A482B0673EE07B5281C20F14E8AB294D009CD9F449FEA4B8A91742C9ABF9A19E21CFD16FCDB03DA1CC59204029BBE029FDCC52236C7E2DF90038F695528E18D38A42C869A59C2B72E82105AC3AA85E8B13918D2CC5034BDEDE48CAC51ECBC5B0820EB86DE35195903298E64129A9F6BB40075B964880D241BB8A3F3DDE9118799EDEBD8EEC1986550F48639BAF742C3D60E9F5F0BE1

Ici, les deux commandes retournent le même résultat. La clé privée et la clé publique correspondet bien.

Mais ce résultat est assez imbitable. Il est possible de calculer leur empreinte MD5, pour un résultat plus lisible :

openssl x509 -noout -modulus -in /etc/letsencrypt/live/palc.fr/cert.pem | openssl md5
(stdin)= 2cf7f5c625550e2a56dc91c1b52fa57a

openssl rsa -noout -modulus -in /etc/letsencrypt/live/palc.fr/privkey.pem | openssl md5
(stdin)= 2cf7f5c625550e2a56dc91c1b52fa57a