Centre SSL / Certificats / PKI
Analysez un certificat public, décodez un PEM ou un CSR et suivez les diagnostics adaptés aux erreurs de chaîne, d’expiration, de SAN et d’auto-enrollment.
Analyser un certificat HTTPS public
Le serveur BAOI se connecte uniquement au port 443 d’un nom de domaine résolvant vers une adresse IP publique.
Décoder un certificat PEM
Décoder une demande CSR
Le CSR peut contenir des informations publiques de demande de certificat. Ne collez jamais une clé privée.
openssl s_client -connect exemple.fr:443 -servername exemple.fr -showcerts
openssl x509 -in certificat.pem -text -noout
openssl x509 -in certificat.pem -noout -dates
openssl x509 -in certificat.pem -noout -ext subjectAltName
openssl x509 -in certificat.pem -noout -fingerprint -sha256
openssl verify -CAfile root.pem -untrusted intermediate.pem certificat.pem
openssl req -in demande.csr -text -noout
openssl req -new -newkey rsa:3072 -nodes -keyout serveur.key -out serveur.csr
Get-ChildItem Cert:\LocalMachine\My | Select Subject,Issuer,NotAfter,Thumbprint
certutil -pulse
certutil -config - -ping
certutil -store My
Get-WinEvent -LogName 'Microsoft-Windows-CertificateServicesClient-AutoEnrollment/Operational' -MaxEvents 50
Get-WebBinding -Protocol https
Get-ChildItem Cert:\LocalMachine\My | Where-Object {$_.NotAfter -lt (Get-Date).AddDays(30)}
keytool -list -v -keystore truststore.jks
keytool -importcert -alias mon-ca -file ca.pem -keystore truststore.jks
Mission du centre
8 playbooksDiagnostiquer un certificat en séparant validité, nom, chaîne, clé privée, protocole TLS, révocation et automatisation de renouvellement, sans régénérer inutilement des secrets.
Triage rapide
- Relever hostname exact, port, message navigateur/client et heure.
- Inspecter certificat présenté, SAN, issuer et dates.
- Vérifier chaîne intermédiaire et trust store du client.
- Comparer certificat configuré et certificat réellement servi par le frontend/proxy.
- Avant renouvellement, vérifier mécanisme ACME
Arbre de décision
Renouveler depuis la source prévue et vérifier déploiement sur tous les frontends.
Comparer SAN/CN au FQDN réellement utilisé.
Vérifier intermédiaires et trust store, pas seulement le certificat serveur.
Séparer protocole/cipher/SNI/client auth de la validité du certificat.
Playbooks d’intervention
Commencer en lecture seule, collecter les preuves, puis ne modifier qu’une variable à la fois.
01Certificat expiréModification contrôlée
Navigateur ou service signale expiration et la date NotAfter est dépassée.
Vérifications
- Confirmer certificat réellement présenté sur le port public.
- Identifier source de renouvellement et dernier job ACME/PKI.
- Vérifier tous les nœuds derrière load balancer.
Commandes / preuves
openssl s_client -connect <host>:443 -servername <host> </dev/null 2>/dev/null | openssl x509 -noout -dates -subject -issueropenssl x509 -in <cert.pem> -noout -dates -fingerprint -sha256Résultat attendu
Le certificat servi est dans sa période de validité et identique sur tous les frontends attendus.
Actions correctives
- Renouveler via processus officiel puis recharger le service sans remplacer la clé si inutile.
- Vérifier le certificat externe après déploiement, pas seulement le fichier local.
Escalader si
Clé privée perdue, CA indisponible ou service critique ne permet pas reload contrôlé.
02Nom du certificat incorrectModification contrôlée
ERR_CERT_COMMON_NAME_INVALID ou hostname absent des SAN.
Vérifications
- Lire Subject Alternative Name du certificat servi.
- Comparer URL utilisée, alias DNS et redirections.
- Vérifier SNI si plusieurs sites partagent la même IP.
Commandes / preuves
openssl s_client -connect <host>:443 -servername <host> </dev/null 2>/dev/null | openssl x509 -noout -text | grep -A1 "Subject Alternative Name"nslookup <host>Résultat attendu
Le FQDN exact utilisé par le client figure dans les SAN du certificat présenté.
Actions correctives
- Déployer un certificat couvrant les noms réellement nécessaires.
- Corriger binding/SNI si le bon certificat existe mais n’est pas présenté.
Escalader si
Nombreux aliases legacy, wildcard non adapté ou architecture multi-tenant.
03Chaîne de certification incomplèteModification contrôlée
Certificat semble valide mais certains clients indiquent issuer inconnu ou unable to get local issuer.
Vérifications
- Inspecter chaîne envoyée par le serveur.
- Comparer avec chaîne recommandée par la CA.
- Tester plusieurs clients/trust stores.
Commandes / preuves
openssl s_client -showcerts -connect <host>:443 -servername <host> </dev/nullopenssl verify -CAfile <bundle.pem> <cert.pem>Résultat attendu
Le serveur présente leaf + intermédiaires nécessaires et la chaîne mène à une racine approuvée.
Actions correctives
- Configurer full chain correcte sans envoyer inutilement la racine.
- Retester depuis un client qui échouait auparavant.
Escalader si
Cross-signing complexe, vieux clients ou PKI privée non distribuée.
04Handshake TLS impossibleLecture / sans risque
Connexion TCP ouverte mais TLS échoue avant HTTP.
Vérifications
- Tester SNI, versions TLS et suites compatibles.
- Vérifier exigence de certificat client/mTLS.
- Lire logs serveur/proxy au même timestamp.
Commandes / preuves
openssl s_client -connect <host>:443 -servername <host> -tls1_2openssl s_client -connect <host>:443 -servername <host> -tls1_3curl -vk https://<host>/Résultat attendu
Une version TLS commune négocie et le serveur présente sa chaîne avant application HTTP.
Actions correctives
- Corriger protocole/cipher/binding minimal nécessaire.
- Ne réactiver pas TLS obsolète sans validation sécurité.
Escalader si
Compatibilité client legacy contre politique sécurité ou problème HSM/load balancer.
05CSR et clé privée ne correspondent pasIntrusif / escalade
Certificat délivré ne peut être importé ou service indique key mismatch.
Vérifications
- Comparer empreinte de clé publique CSR/certificat/clé.
- Retrouver où la CSR a été générée.
- Ne jamais déplacer ou afficher la clé privée inutilement.
Commandes / preuves
openssl pkey -in <key.pem> -pubout | openssl sha256openssl req -in <request.csr> -pubkey -noout | openssl sha256openssl x509 -in <cert.pem> -pubkey -noout | openssl sha256Résultat attendu
Les trois empreintes de clé publique correspondent.
Actions correctives
- Si mismatch, retrouver la bonne clé ou refaire CSR/certificat selon procédure.
- Protéger les permissions et sauvegarde de la clé.
Escalader si
Clé privée perdue, HSM, certificat réglementé ou révocation nécessaire.
06Renouvellement automatique ACME en échecModification contrôlée
Certificat approche expiration malgré cron/task de renouvellement.
Vérifications
- Lire logs ACME et date du dernier succès.
- Vérifier challenge HTTP-01/DNS-01 et accès à la zone.
- Confirmer reload/deploy hook après émission.
Commandes / preuves
certbot renew --dry-runsystemctl list-timers | grep -i certjournalctl -u certbot -n 100 --no-pagerRésultat attendu
Dry-run passe et le certificat renouvelé est déployé/rechargé automatiquement.
Actions correctives
- Corriger challenge, credentials DNS ou hook de déploiement.
- Tester dry-run après correction.
Escalader si
Rate limit CA, API DNS critique ou renouvellement partagé entre plusieurs nœuds.
07Révocation / OCSPIntrusif / escalade
Client signale certificat révoqué, OCSP inaccessible ou statut inconnu.
Vérifications
- Identifier serial et URI OCSP/CRL.
- Vérifier si certificat a réellement été révoqué.
- Contrôler accès réseau du client vers OCSP/CRL.
Commandes / preuves
openssl x509 -in <cert.pem> -noout -serial -ocsp_uriopenssl ocsp -issuer <issuer.pem> -cert <cert.pem> -url <ocsp-url>Résultat attendu
Statut good pour un certificat actif et accès fiable aux services de révocation.
Actions correctives
- Si revoked, remplacer certificat et clé selon cause.
- Corriger accès OCSP/CRL sans désactiver globalement le contrôle.
Escalader si
Compromission de clé, CA privée ou révocation touchant de nombreux services.
08TLS/ciphers obsolètesModification contrôlée
Audit détecte TLS 1.0/1.1 ou suites faibles encore activées.
Vérifications
- Inventorier protocoles réellement utilisés par les clients.
- Tester TLS 1.2/1.3 avant désactivation legacy.
- Identifier équipements anciens dépendants.
Commandes / preuves
openssl s_client -connect <host>:443 -servername <host> -tls1_2openssl s_client -connect <host>:443 -servername <host> -tls1_3nmap --script ssl-enum-ciphers -p 443 <host>Résultat attendu
Les clients supportés fonctionnent en TLS moderne et les protocoles faibles sont absents.
Actions correctives
- Durcir par étapes avec fenêtre et plan de retour.
- Traiter séparément les clients legacy.
Escalader si
Équipement métier incompatible ou changement global de load balancer/PKI.
Checklist de fin d’intervention
- Retester depuis l’extérieur avec le FQDN réel.
- Vérifier date, SAN, chaîne et protocole négocié.
- Contrôler tous les nœuds derrière le load balancer.
- Documenter renouvellement et prochaine échéance.
- Vérifier monitoring d’expiration.