OpenSSL extraire un certificat
Aller à la navigation
Aller à la recherche
On voudrait connaitre le certificat d'un serveur en production quelque part mais nous n'y avons pas accès autrement que comme n'importe quel client.
Cela marche pour n'importe quelle connexion tls (ssl) que ce soit un simple serveur web ou un serveur MQTTs ftps etc...
Pour explorer le certificat en place sur le présent wiki:
openssl s_client -servername knowledge.pinon-hebert.fr -connect knowledge.pinon-hebert.fr:443 2> /dev/nul
Nous donne beaucoup de choses dont : La chaine de certification:
---
Certificate chain
0 s:/CN=knowledge.pinon-hebert.fr
i:/C=US/O=Let's Encrypt/CN=R3
1 s:/C=US/O=Let's Encrypt/CN=R3
i:/C=US/O=Internet Security Research Group/CN=ISRG Root X1
2 s:/C=US/O=Internet Security Research Group/CN=ISRG Root X1
i:/O=Digital Signature Trust Co./CN=DST Root CA X3
---
Oui je suis radin j'utilise let's encrypt. Le certificat lui même:
-----BEGIN CERTIFICATE-----
MIIE/zCCA+egAwIBAgISBDQpc+0xb1u31bGiAHV2kTeAMA0GCSqGSIb3DQEBCwUA
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
EwJSMzAeFw0yMzEwMDYxMzU4MThaFw0yNDAxMDQxMzU4MTdaMCQxIjAgBgNVBAMT
GWtub3dsZWRnZS5waW5vbi1oZWJlcnQuZnIwggEiMA0GCSqGSIb3DQEBAQUAA4IB
DwAwggEKAoIBAQDHWr5U7mcSQY+RhcxKLZhzt/AMo3xtvEvJPhfZnjgDLNEEg1Hm
JCXWdeG5l94H2LIbczYE5YodZKqk6ygb0Wta6daOtD0yhqx9790HnBMv242saKfv
v5NTTaQX5LKzJblwmukr4lpzMdNncQwXtk+rgY38YFS2wdKTNQw8nq9GDH24iFlB
KzhS3V/2YD4nsTK783kxR6VHWx/hBXPlQiLDkXyi7IxwzfcIjYNbko5omsq41d6j
BHbH2xDx4AlNk09tBTIkCQTnflVWVbor8BbDOZc1Y1m1hUQ6aZbhYz+iMfk6F0ck
wy4wfcPVlpBI5vX6Id98DH8G2xEmwBQkQCt7AgMBAAGjggIbMIICFzAOBgNVHQ8B
Af8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB
/wQCMAAwHQYDVR0OBBYEFMYN8/BW/lA7SKDKCna47ntiBgDgMB8GA1UdIwQYMBaA
FBQusxe3WFbLrlAJQOYfr52LFMLGMFUGCCsGAQUFBwEBBEkwRzAhBggrBgEFBQcw
AYYVaHR0cDovL3IzLm8ubGVuY3Iub3JnMCIGCCsGAQUFBzAChhZodHRwOi8vcjMu
aS5sZW5jci5vcmcvMCQGA1UdEQQdMBuCGWtub3dsZWRnZS5waW5vbi1oZWJlcnQu
ZnIwEwYDVR0gBAwwCjAIBgZngQwBAgEwggEEBgorBgEEAdZ5AgQCBIH1BIHyAPAA
dgA7U3d1Pi25gE6LMFsG/kA7Z9hPw/THvQANLXJv4frUFwAAAYsFfxxCAAAEAwBH
MEUCIQCggjLkLR+7zHUCZsXfsxuOHNfX49h29yRjaQ/LQAb4KgIgHxu2qMLvWenp
EmvGQd5x0KDrXuLkq+afOFjfnmkoMz4AdgDuzdBk1dsazsVct520zROiModGfLzs
3sNRSFlGcR+1mwAAAYsFfxx4AAAEAwBHMEUCICelplLG6uWfj5LXjCjf+boGrieh
A4d6vPYJgg2awJkDAiEA1Wu5pO/YPqxzsLvK1iIcZi2k4JIchIB8SeXyhtuXBqww
DQYJKoZIhvcNAQELBQADggEBACASzcuPrgDSd2g1LCWdMlojreg+wI8JfzhHQ5z1
28HQEY4hIJ1eetPH5m71QHVwLwys7oiRA4mNp+G2TE95z+rLht2CTtjofj1RJq9S
nXy+dCu/XrYcS9wtdCCAOVkf37WqKVeo8hEH0jAbT/u/yPCjKgsryosfPoq0+TCW
gUwgpZbt145P8/OZzHQoKEumGr3bUzEiUprrfetWv4Hxl7ucsGkV6dLrV69emzeN
CjvEV2QS1MrUUlUdGoyOqkeCFyQdGOxTmy7JlLzsMmdxtxDDJLYD3nsNa/D7dVtD
Q5L3pbZLd+pOuawncFzvUXiyDX7YSankyvSDK+scezFfM58=
-----END CERTIFICATE-----
Pour décoder ce certificat on utilise toujours openssl. Supposons que le certificat soit dans un fichier:
cat cert.der | openssl x509 -text
Qui, entre autre nous donne les infos de validité:
Issuer: C=US, O=Let's Encrypt, CN=R3
Validity
Not Before: Oct 6 13:58:18 2023 GMT
Not After : Jan 4 13:58:17 2024 GMT
Subject: CN=knowledge.pinon-hebert.fr
On peut même tout inclure dans la même ligne :
echo | openssl s_client -servername knowledge.pinon-hebert.fr -connect knowledge.pinon-hebert.fr:443 2>/dev/null | openssl x509 -text
Qui nous donne le résultat en une seule ligne et sans fichier temporaire local.