OpenCheckCertKey » History » Version 4
Simone Piccardi, 11/13/2014 03:33 PM
1 | 4 | Simone Piccardi | h1. Verificare chiavi e certificati nelle configurazioni di SSL/TLS |
---|---|---|---|
2 | 1 | Simone Piccardi | |
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 | 1 | Simone Piccardi | <pre> |
6 | 1 | Simone Piccardi | openssl s_server -cert server-cert.pem -key server-key.pem |
7 | 1 | Simone Piccardi | </pre> |
8 | 1 | Simone Piccardi | |
9 | 1 | Simone Piccardi | se l'abbinamento è corretto si otterrà: |
10 | 1 | Simone Piccardi | |
11 | 1 | Simone Piccardi | <pre> |
12 | 1 | Simone Piccardi | Using default temp DH parameters |
13 | 1 | Simone Piccardi | Using default temp ECDH parameters |
14 | 1 | Simone Piccardi | ACCEPT |
15 | 1 | Simone Piccardi | </pre> |
16 | 1 | Simone Piccardi | |
17 | 1 | Simone Piccardi | altrimenti si otterrà: |
18 | 1 | Simone Piccardi | |
19 | 1 | Simone Piccardi | <pre> |
20 | 1 | Simone Piccardi | Using default temp DH parameters |
21 | 1 | Simone Piccardi | Using default temp ECDH parameters |
22 | 1 | Simone Piccardi | error setting private key |
23 | 1 | Simone Piccardi | 26606:error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch:x509_cmp.c:406: |
24 | 1 | Simone Piccardi | </pre> |
25 | 2 | Simone Piccardi | |
26 | 3 | Simone Piccardi | Si tenga presente che se un certificato è stato firmato da un certificato intermedio l'associazione fra certificato e chiave non è sufficiente, occorre anche vericare la correttezza di tutta la catena di certificazione. Questo si può fare con il comando @verify@ della suite di @openssl@, percorrendo la catena di certificazione. Il caso più comune è quello in cui esiste un solo passo attraverso un certificato intermedio @server-interm.pem@ fornito dalla propria Certification Authority insieme al certificato firmato @server-cert.pem@. |
27 | 2 | Simone Piccardi | |
28 | 3 | Simone Piccardi | In questo caso occorrerà prima verificare la validità del certificato intermedio con: |
29 | 2 | Simone Piccardi | |
30 | 2 | Simone Piccardi | <pre> |
31 | 2 | Simone Piccardi | # openssl verify server-interm.pem |
32 | 2 | Simone Piccardi | server-interm.pem: OK |
33 | 1 | Simone Piccardi | </pre> |
34 | 2 | Simone Piccardi | |
35 | 3 | Simone Piccardi | e poi per verificare il certificato finale utilizzando il certificato intemedio con: |
36 | 1 | Simone Piccardi | |
37 | 2 | Simone Piccardi | <pre> |
38 | 1 | Simone Piccardi | # openssl verify -CAfile server-interm.pem server-cert.pem |
39 | 1 | Simone Piccardi | server-cert.pem: OK |
40 | 1 | Simone Piccardi | </pre> |
41 | 1 | Simone Piccardi | |
42 | 3 | Simone Piccardi | dove appunto con @-CAfile@ si indica di usare @server-interm.pem@ per la verifica e non il default che su Debian è fare riferimento ai certificati delle Certification Authority riconosciute installati sotto @/etc/ssl/certs/@ (qualora fossero altrove nel primo comando si sarebbe dovuto specificarlo con l'opzione @-CApath@). |
43 | 1 | Simone Piccardi | |
44 | 3 | Simone Piccardi | Una volta stabilita la correttezza e la corrispondenza di tutti i file, si deve tener presente che molti server richiedono che nel file del certificato (quello da indicare ad esempio nelle direttive @smtpd_tls_cert_file@ di Postfix o @ssl_cert@ di Dovecot) venga inserito non il certifiato finale, ma tutta la catena, pertanto ssi dovrà creare un file contenente tutti i certificati della catena di certificazione con: |
45 | 3 | Simone Piccardi | |
46 | 2 | Simone Piccardi | <pre> |
47 | 3 | Simone Piccardi | cat server-cert.pem server-interm.pem > server-chained.pem |
48 | 3 | Simone Piccardi | </pre> |
49 | 3 | Simone Piccardi | |
50 | 3 | Simone Piccardi | ed usare @server-chained.pem@ nelle direttive citate; 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'ultimo. |
51 | 3 | Simone Piccardi | |
52 | 3 | Simone Piccardi | |
53 | 3 | Simone Piccardi | Infine una volta configurato il servizio se ne potrà controllare il funzionamento e la correttezza dei certificati installati con il comando @s_client@ di @openssl@, ad esempio per verificare il funzionamento di Postfix si potrà usare il comando: |
54 | 3 | Simone Piccardi | |
55 | 3 | Simone Piccardi | <pre> |
56 | 1 | Simone Piccardi | # openssl s_client -connect localhost:25 -starttls smtp -CApath /etc/ssl/certs/ |
57 | 2 | Simone Piccardi | CONNECTED(00000003) |
58 | 2 | Simone Piccardi | [...] |
59 | 2 | Simone Piccardi | Compression: 1 (zlib compression) |
60 | 2 | Simone Piccardi | Start Time: 1415887713 |
61 | 2 | Simone Piccardi | Timeout : 300 (sec) |
62 | 2 | Simone Piccardi | Verify return code: 0 (ok) |
63 | 2 | Simone Piccardi | --- |
64 | 2 | Simone Piccardi | 250 DSN |
65 | 2 | Simone Piccardi | </pre> |
66 | 2 | Simone Piccardi | |
67 | 3 | Simone Piccardi | avendo cura di indicare con @-starttls@ il tipo di protocollo usato quando si opera con STARTLS (altri valori possibili sono @pop3@, @imap@ e @ftp@); si noti come in questo caso è necessario indicare con @-CApath@ la directory dove sono mantenuti i certificati delle Certification Autority riconosciute. |