User Tools

Site Tools


doc:appunti:linux:sa:ssl_cert

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:linux:sa:ssl_cert [2010/08/16 18:22] niccolodoc:appunti:linux:sa:ssl_cert [2020/10/07 10:21] (current) – [Verificare un certificato SSL su HTTPS] niccolo
Line 2: Line 2:
  
 Come generare i certificati SSL autofirmati in un sistema **Debian GNU/Linux** per i vari programmi: apache2, courier-pop, courier-imap, postfix, exim. Come generare i certificati SSL autofirmati in un sistema **Debian GNU/Linux** per i vari programmi: apache2, courier-pop, courier-imap, postfix, exim.
 +
 +===== Ispezionare un certificato in formato PEM =====
 +
 +Per vedere il contenuto di un file .pem (date di validità, ecc.):
 +
 +<code>
 +openssl x509 -text -noout -in pop3d.pem
 +</code>
 +
 +===== Ispezionare una CRL in formato PEM =====
 +
 +Anche una Certificate Revocation List ha la sue date di validità, ecc. Per ispezionarla:
 +
 +<code>
 +openssl crl -text -noout -in openvpn_crl.pem
 +</code>
  
 ===== Courier POP3 e IMAP ===== ===== Courier POP3 e IMAP =====
Line 15: Line 31:
   * Eliminare i vecchi ''.pem'' ed eseguire nuovamente gli script.   * Eliminare i vecchi ''.pem'' ed eseguire nuovamente gli script.
  
-Per vedere il contenuto di un file .pem:+===== Postfix ===== 
 + 
 +L'installazione predefinita di Postfix usa il certificato **''/etc/ssl/certs/ssl-cert-snakeoil.pem''** e la corrispondente chiave **''/etc/ssl/private/ssl-cert-snakeoil.key''**. 
 + 
 +Noi preferiamo due file nella directory **''/etc/postfix/ssl/''**, uno con il certificato (**''postfix.crt''**) ed uno con la chiave (**''postfix.key''**). In questa **[[postfix#crittografia_tls|pagina]]** uno script in grado di generare i due file
 + 
 +Editare **''/etc/postfix/main.cf''** e impostare: 
 + 
 +<file> 
 +# TLS parameters 
 +smtpd_tls_cert_file=/etc/postfix/ssl/postfix.crt 
 +smtpd_tls_key_file=/etc/postfix/ssl/postfix.key 
 +smtpd_use_tls=yes 
 +</file> 
 + 
 +===== ejabber ===== 
 + 
 +La generazione del certificato è inclusa nello script di **''postinst''**, eccola con l'unica variazione sulla durata: tre anni invece di uno: 
 + 
 +<code bash> 
 +#!/bin/bash 
 +EHOSTNAME=$(hostname -s 2>/dev/null || echo localhost) 
 +EDOMAINNAME=$(hostname -d 2>/dev/null || echo localdomain) 
 +openssl req -new -x509 -days 1096 -nodes -out ejabberd.pem 
 +    -keyout ejabberd.pem > /dev/null 2>&1 <<+++ 
 +
 +
 +
 +$EDOMAINNAME 
 +$EHOSTNAME 
 +ejabberd 
 +root@$EHOSTNAME.$EDOMAINNAME 
 ++++ 
 +</code> 
 + 
 +===== Verificare un certificato SSL su HTTPS ===== 
 + 
 +Con il tool **openssl** è possibile verificare la possibilità di stabilire una connessione SSL con un server via HTTPS:
  
 <code> <code>
-openssl x509 -text -noout -in pop3d.pem+openssl s_client -connect www.domain.tld:443
 </code> </code>
  
-===== Postfix =====+Se la verifica funziona correttamente, l'ultima riga dell'output dovrebbe essere: 
 + 
 +<code> 
 +Verify return code: 0 (ok) 
 +</code> 
 + 
 +La mancata installazione in locale del certificato della CA invece produce questo errore: 
 + 
 +<code> 
 +Verify return code: 20 (unable to get local issuer certificate) 
 +</code> 
 + 
 +È possibile specificare manualmente il percorso del certificato con l'opzione **%%-CAfile%%**: 
 + 
 +<code> 
 +openssl s_client -connect www.domain.tld:443 -CAfile /usr/lib/ssl/certs/DigiCert_Global_Root_CA.pem 
 +</code> 
 + 
 +Ovviamente è consigliabile copiare il certificato nella posizione in cui la libreria lo trova automaticamente, anche solo con un link simbolico. Per una compilazione locale di libssl dovrebbe essere **/usr/local/ssl/cert.pem**, per una installazione di sistema invece dovrebbe essere **/usr/lib/ssl/cert.pem**.
  
-Vengono salvati due file nella directory **''/etc/postfix/ssl/''**, uno con il certificato **''postfix.crt''* ed uno con la chiave **''postfix.key''**. 
doc/appunti/linux/sa/ssl_cert.1281975752.txt.gz · Last modified: 2010/08/16 18:22 by niccolo