OpenCheckCertKey » Cronologia » Versione 2
Simone Piccardi, 13-11-2014 15:12
| 1 | 1 | Simone Piccardi | h1. Verificare la corrispondenza di chiave e certificato. |
|---|---|---|---|
| 2 | |||
| 3 | 2 | Simone Piccardi | 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: |
| 4 | 1 | Simone Piccardi | |
| 5 | <pre> |
||
| 6 | openssl s_server -cert server-cert.pem -key server-key.pem |
||
| 7 | </pre> |
||
| 8 | |||
| 9 | se l'abbinamento è corretto si otterrà: |
||
| 10 | |||
| 11 | <pre> |
||
| 12 | Using default temp DH parameters |
||
| 13 | Using default temp ECDH parameters |
||
| 14 | ACCEPT |
||
| 15 | </pre> |
||
| 16 | |||
| 17 | altrimenti si otterrà: |
||
| 18 | |||
| 19 | <pre> |
||
| 20 | Using default temp DH parameters |
||
| 21 | Using default temp ECDH parameters |
||
| 22 | error setting private key |
||
| 23 | 26606:error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch:x509_cmp.c:406: |
||
| 24 | </pre> |
||
| 25 | 2 | Simone Piccardi | |
| 26 | 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: |
||
| 27 | |||
| 28 | <pre> |
||
| 29 | cat server-cert.pem server-interm.pem > server-chain.pem |
||
| 30 | </pre> |
||
| 31 | |||
| 32 | 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. |
||
| 33 | |||
| 34 | 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: |
||
| 35 | |||
| 36 | <pre> |
||
| 37 | # openssl verify server-interm.pem |
||
| 38 | server-interm.pem: OK |
||
| 39 | </pre> |
||
| 40 | |||
| 41 | e poi per verificare il certificato finale con: |
||
| 42 | |||
| 43 | <pre> |
||
| 44 | # openssl verify -CAfile server-interm.pem server-cert.pem |
||
| 45 | server-cert.pem: OK |
||
| 46 | </pre> |
||
| 47 | |||
| 48 | 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: |
||
| 49 | |||
| 50 | <pre> |
||
| 51 | # openssl s_client -connect localhost:25 -starttls smtp -CApath /etc/ssl/certs/ |
||
| 52 | CONNECTED(00000003) |
||
| 53 | [...] |
||
| 54 | Compression: 1 (zlib compression) |
||
| 55 | Start Time: 1415887713 |
||
| 56 | Timeout : 300 (sec) |
||
| 57 | Verify return code: 0 (ok) |
||
| 58 | --- |
||
| 59 | 250 DSN |
||
| 60 | </pre> |
||
| 61 | |||
| 62 | 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). |