A proposito di TSL/SSL (Transport Layer Security (TLS) and its predecessor, Secure Sockets Layer (SSL))...

Cosa serve

  1. un certificato locale
  2. firma della certification autority

CaCert

CaCert è un ente certificatore che si basa sul principio di web of trust. Al momento è supportato di default solo su qualche distribuzione GNU/linux.

Generazione di certificati con CaCert

Ecco come fare in breve:

   1 openssl req -nodes -newkey rsa:4096 -keyout dominio.it.key -out dominio.it.csr
   2 openssl req -nodes -sha256 -newkey rsa:4096 -keyout private.risca.eu.key -out private.risca.eu.csr \
   3 -subj "/C=US/ST=City/L=City/O=company/OU=SSLServers/CN=localhost/emailAddress="

Molto importante la corretta compilazione del Common Name (e.g. server FQDN or YOUR name) []:, altrimenti il certificato non sarà riconosciuto dal browser. Riguardo al tipo di algoritmo di criptazione non usare nulla sotto i 2048. Consiglio inoltre di usare sha256 (sha1 è deprecato)

Usiamo il file .csr per la CERTIFICATE REQUEST.

Inviamo la richiesta di certificato (dominio.it.crt) alla nostra CA. Attenzione che con gli standard attuali se l'algoritmo di firma è inferiore al sha512 alcuni browser potrebbero riportare errore1. Su CAcert è necessario selezionare l'algoritmo sha512 nelle impostazioni avanzate.

Riavviamo il server web.

Per test:

   1 openssl verify -CAfile root.crt -purpose sslserver dominio.it.crt
   2 openssl x509 -text -in dominio.it.crt

Riferimenti

LetsEncrypt

Ecco alcuni riferimenti utili:

Alternative gratuite

Sitografia

Note

  1. Da firefox 20 in avanti l'algoritmo sha256 è deprecato e non più abilitato, probabilmente tale discorso vale anche su altri browsers (1)