SSL / Certificates / PKI Center
Analyze a public certificate, decode a PEM or CSR, and follow diagnostics for chain, expiration, SAN and auto-enrollment errors.
Analyze 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
Center mission
8 playbooksTroubleshoot certificates by separating validity, name, chain, private key, TLS protocol, revocation and renewal automation without unnecessarily regenerating secrets.
Quick triage
- Record exact hostname, port, browser/client message and time.
- Inspect presented certificate, SAN, issuer and dates.
- Check intermediate chain and client trust store.
- Compare configured certificate with the one actually served by frontend/proxy.
- Before renewal, check ACME/PKI mechanism and private-key possession.
Decision tree
Renew from intended source and verify deployment on all frontends.
Compare SAN/CN with actual FQDN used.
Check intermediates and trust store, not just leaf certificate.
Separate protocol/cipher/SNI/client auth from certificate validity.
Intervention playbooks
Start read-only, collect evidence, then change one variable at a time.
01Expired certificateControlled change
Browser or service reports expiration and NotAfter is in the past.
Checks
- Confirm certificate actually served on public port.
- Identify renewal source and latest ACME/PKI job.
- Check all nodes behind load balancer.
Commands / evidence
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 -sha256Expected result
Served certificate is within validity period and identical on all expected frontends.
Corrective actions
- Renew via official process then reload service without replacing key unnecessarily.
- Verify external certificate after deployment, not only local file.
Escalate when
Private key lost, CA unavailable or critical service cannot be safely reloaded.
02Certificate name mismatchControlled change
ERR_CERT_COMMON_NAME_INVALID or hostname missing from SANs.
Checks
- Read Subject Alternative Name from served certificate.
- Compare used URL, DNS aliases and redirects.
- Check SNI when multiple sites share same IP.
Commands / evidence
openssl s_client -connect <host>:443 -servername <host> </dev/null 2>/dev/null | openssl x509 -noout -text | grep -A1 "Subject Alternative Name"nslookup <host>Expected result
Exact FQDN used by client is present in SANs of served certificate.
Corrective actions
- Deploy a certificate covering actually required names.
- Fix binding/SNI if correct certificate exists but is not served.
Escalate when
Many legacy aliases, unsuitable wildcard or multi-tenant architecture.
03Incomplete certificate chainControlled change
Certificate appears valid but some clients report unknown issuer or unable to get local issuer.
Checks
- Inspect chain sent by server.
- Compare with CA-recommended chain.
- Test multiple clients/trust stores.
Commands / evidence
openssl s_client -showcerts -connect <host>:443 -servername <host> </dev/nullopenssl verify -CAfile <bundle.pem> <cert.pem>Expected result
Server presents leaf plus required intermediates and chain leads to trusted root.
Corrective actions
- Configure correct full chain without unnecessarily sending root.
- Retest from a client that previously failed.
Escalate when
Complex cross-signing, old clients or private PKI not distributed.
04TLS handshake failureRead-only
TCP connection opens but TLS fails before HTTP.
Checks
- Test SNI, TLS versions and compatible suites.
- Check client certificate/mTLS requirement.
- Read server/proxy logs at same timestamp.
Commands / evidence
openssl s_client -connect <host>:443 -servername <host> -tls1_2openssl s_client -connect <host>:443 -servername <host> -tls1_3curl -vk https://<host>/Expected result
A common TLS version negotiates and server presents its chain before HTTP application.
Corrective actions
- Fix minimum necessary protocol/cipher/binding.
- Do not re-enable obsolete TLS without security approval.
Escalate when
Legacy-client compatibility conflicts with security policy or HSM/load-balancer issue.
05CSR and private key mismatchIntrusive / escalation
Issued certificate cannot be imported or service reports key mismatch.
Checks
- Compare public-key fingerprint across CSR/certificate/key.
- Identify where CSR was generated.
- Never move or expose private key unnecessarily.
Commands / evidence
openssl pkey -in <key.pem> -pubout | openssl sha256openssl req -in <request.csr> -pubkey -noout | openssl sha256openssl x509 -in <cert.pem> -pubkey -noout | openssl sha256Expected result
All three public-key fingerprints match.
Corrective actions
- If mismatch, locate correct key or reissue CSR/certificate per procedure.
- Protect key permissions and backup.
Escalate when
Private key lost, HSM, regulated certificate or revocation required.
06Automatic ACME renewal failedControlled change
Certificate approaches expiry despite renewal cron/task.
Checks
- Read ACME logs and last success date.
- Check HTTP-01/DNS-01 challenge and zone access.
- Confirm reload/deploy hook after issuance.
Commands / evidence
certbot renew --dry-runsystemctl list-timers | grep -i certjournalctl -u certbot -n 100 --no-pagerExpected result
Dry run succeeds and renewed certificate is automatically deployed/reloaded.
Corrective actions
- Fix challenge, DNS credentials or deployment hook.
- Run dry-run after fix.
Escalate when
CA rate limit, critical DNS API or renewal shared across multiple nodes.
07Revocation / OCSPIntrusive / escalation
Client reports revoked certificate, OCSP unavailable or unknown status.
Checks
- Identify serial and OCSP/CRL URI.
- Check whether certificate was actually revoked.
- Check client network access to OCSP/CRL.
Commands / evidence
openssl x509 -in <cert.pem> -noout -serial -ocsp_uriopenssl ocsp -issuer <issuer.pem> -cert <cert.pem> -url <ocsp-url>Expected result
Status is good for active certificate and revocation services are reliably reachable.
Corrective actions
- If revoked, replace certificate and key according to cause.
- Fix OCSP/CRL access without globally disabling checking.
Escalate when
Key compromise, private CA or revocation affecting many services.
08Obsolete TLS/ciphersControlled change
Audit detects TLS 1.0/1.1 or weak suites still enabled.
Checks
- Inventory protocols actually used by clients.
- Test TLS 1.2/1.3 before disabling legacy.
- Identify dependent legacy devices.
Commands / evidence
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>Expected result
Supported clients work with modern TLS and weak protocols are absent.
Corrective actions
- Harden in stages with change window and rollback plan.
- Handle legacy clients separately.
Escalate when
Business device incompatible or global load-balancer/PKI change.
End-of-intervention checklist
- Retest externally using real FQDN.
- Verify date, SAN, chain and negotiated protocol.
- Check all nodes behind load balancer.
- Document renewal and next expiry.
- Verify expiry monitoring.