Table of Contents
Certificati SSL
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.):
openssl x509 -text -noout -in pop3d.pem
Ispezionare una CRL in formato PEM
Anche una Certificate Revocation List ha la sue date di validità, ecc. Per ispezionarla:
openssl crl -text -noout -in openvpn_crl.pem
Courier POP3 e IMAP
- Debian fornisce gli script
mkpop3dcert
emkimapdcert
. - La configurazione è in
/etc/courier/pop3d.cnf
e/etc/courier/imapd.cnf
. - I certificati vengono salvati in
/etc/courier/pop3d.pem
e/etc/courier/imapd.pem
.
Per allungare la durata del certificato (predefinita solo 365 giorni) e personalizzare la configurazione:
- Modificare gli script cambiando la direttiva
-days
, salvare in/usr/local/sbin/
. - Editare i file
.cnf
impostando i valori richiesti. - Eliminare i vecchi
.pem
ed eseguire nuovamente gli script.
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 pagina uno script in grado di generare i due file.
Editare /etc/postfix/main.cf
e impostare:
# TLS parameters smtpd_tls_cert_file=/etc/postfix/ssl/postfix.crt smtpd_tls_key_file=/etc/postfix/ssl/postfix.key smtpd_use_tls=yes
ejabber
La generazione del certificato è inclusa nello script di postinst
, eccola con l'unica variazione sulla durata: tre anni invece di uno:
#!/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 +++
Verificare un certificato SSL su HTTPS
Con il tool openssl è possibile verificare la possibilità di stabilire una connessione SSL con un server via HTTPS:
openssl s_client -connect www.domain.tld:443
Se la verifica funziona correttamente, l'ultima riga dell'output dovrebbe essere:
Verify return code: 0 (ok)
La mancata installazione in locale del certificato della CA invece produce questo errore:
Verify return code: 20 (unable to get local issuer certificate)
È possibile specificare manualmente il percorso del certificato con l'opzione -CAfile:
openssl s_client -connect www.domain.tld:443 -CAfile /usr/lib/ssl/certs/DigiCert_Global_Root_CA.pem
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.