Certification Authority con OpenSSL 2008.08.04 11:39

Per rendere funzionali servizi SSL/TLS-aware è necessario disporre di certificati SSL/TLS. Con una propria Certification Authority si possono creare e gestire tali certificati senza limiti di sorta, consapevoli che nessuno nell'universo conosciuto riterrà la nostra CA trusted. Problemi zero finché si tratta di applicazioni non critiche o di ambienti casalinghi/intranet.

Una CA non è altro che un certificato self-signed. La password è fondamentale per firmare le successive richieste di certificati. Il resto dei dati (country, organization, ...) sono da inserire a piacere.

$ openssl req -new -x509 -newkey rsa:4096 -keyout my_CA_private.key \
  -out my_CA.crt -days 3650
WARNING
La chiave privata my_CA_private.key deve rimanere privata, non deve assolutamente essere resa nota, nonostante sia criptata e utilizzabile solo con la password.

Fatto: la nostra CA è operativa. Quando serve un nuovo certificato devo creare una richiesta, quindi firmarla con la CA.

$ openssl req -new -newkey rsa:4096 -nodes -keyout ssl.example.net_private.key \
  -out ssl.example.net.csr -days 365
$ openssl x509 -req -in ssl.example.net.csr -CA my_CA.crt \
  -CAkey my_CA_private.key -CAcreateserial -CAserial my_CA.srl \
  -out ssl.example.net.crt -days 365

Così è pronto un certificato valido un anno con chiave privata non privata (-nodes) altrimenti verrebbe chiesta la password all'avvio del servizio relativo. A questo punto è sufficiente mettere i file nel posto giusto e configurare in maniera appropriata i servizi - Apache, Postfix, vsftp, radius, ...

Last

Valid HTML 4.01 Strict Valid CSS

pippofante.it by Federico Mion