OpenCheckCertKey » Cronologia » Versione 2
« Precedente |
Versione 2/6
(diff)
| Successivo »
Simone Piccardi, 13-11-2014 15:12
Verificare la corrispondenza di chiave e certificato.¶
Quando si lavoro con file .pem
nella gestione di certificati SSL, specie se si cambiano i certificati su un server, può capitare di confondere i file, e non essere più sicuri di aver associato correttamente un certificato alla sua chiave. La modalità più immediata per verificare che il file server-cert.pem
sia effettivamente un certificato associato alla chiave del file server-key.pem
è quella di usare il comando s_server
della suite di openssl
, in pratica basta eseguire:
openssl s_server -cert server-cert.pem -key server-key.pem
se l'abbinamento è corretto si otterrà:
Using default temp DH parameters Using default temp ECDH parameters ACCEPT
altrimenti si otterrà:
Using default temp DH parameters Using default temp ECDH parameters error setting private key 26606:error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch:x509_cmp.c:406:
Si tenga presente che se un certificato è stato firmato da un certificato intermedio, perché la verifica abbia successo occorre che sia disponibile nel file che si specifica con l'opzione -cert
tutta la catena, pertanto se server-interm.pem
è il certificato intermedio fornito dalla propria Certification Authority, si dovrà creare un file contenente tutti i certificati compreso quello (o quelli, se la catena è più lunga) della catena di certificazione, questo si fa con:
cat server-cert.pem server-interm.pem > server-chain.pem
e si tenga presente che l'ordine conta: si deve seguire all'indietro la catena, dal proprio certificato fino a quello della Certification Authority, omettendo quest'ultimoed è in questa forma che si devono creare i file di certificati usati ad esempio nelle direttive smtpd_tls_cert_file
di Postfix o ssl_cert
di Dovecot.
Per verificare manualmente con i singoli file che la catena sia corretta occorrerà invece usare il comando verify
della suite di openssl
, prima per verificare la validità del certificato intermedio con:
# openssl verify server-interm.pem server-interm.pem: OK
e poi per verificare il certificato finale con:
# openssl verify -CAfile server-interm.pem server-cert.pem server-cert.pem: OK
Si potrà anche controllare il funzionamento e l'eventuale correttezza dei certificati installati su un servizio attivo con il comando s_client
di openssl
, ad esempio per verificare il funzionamento di Postfix si potrà usare:
# openssl s_client -connect localhost:25 -starttls smtp -CApath /etc/ssl/certs/ CONNECTED(00000003) [...] Compression: 1 (zlib compression) Start Time: 1415887713 Timeout : 300 (sec) Verify return code: 0 (ok) --- 250 DSN
avendo cura di indicare con -starttls
il tipo di protocollo usato quando si opera con STARTLS (altri valori possibili sono pop3
, imap
e ftp
) e con -CApath
la directory dove sono mantenuti i certificati delle Certification Autority riconosciute (si è indicato il default di Debian).
Aggiornato da Simone Piccardi circa 10 anni fa · 2 revisions