Creare certificati SSL/TLS su CentOS 6 è molto semplice grazie ad alcuni script messi a disposizione dalla distribuzione.
Questi certificati potranno essere integrati alla configurazione di postfix, sendmail, apache, dovecot ecc…

Scenario e requisiti

Ambiente di test

Prerequisiti

  • openssl

Creazione chiave e certificati

  1. Con l’utenza di root, entrare nella directory contenente gli script e creare la chiave privata:
[root@certs_test ~]# cd /etc/pki/tls/certs
[root@certs_test certs]#
[root@certs_test certs]# make server.key
umask 77 ; \
        /usr/bin/openssl genrsa -aes128 2048 > server.key
Generating RSA private key, 2048 bit long modulus
............................................................................................+++
...............................................................................................................+++
e is 65537 (0x10001)
Enter pass phrase:                 <--- Inserire una password per la generazione della chiave
Verifying - Enter pass phrase:     <--- Reinserire la password
  1. Rimuovere la password dalla chiave privata (Altrimenti verrebbe richiesta ogni volta che un qualsiasi servizio cercasse di caricare il certificato).
[root@certs_test certs]# openssl rsa -in server.key -out server.key
Enter pass phrase for server.key:      <--- Reinserire la password
writing RSA key
  1. Creare un certificato X509 auto-firmato con la chiave RSA precedentemente generata:
[root@certs_test certs]# make server.csr
umask 77 ; \
        /usr/bin/openssl req -utf8 -new -key server.key -out server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:IT
State or Province Name (full name) []:Roma
Locality Name (eg, city) [Default City]:Roma
Organization Name (eg, company) [Default Company Ltd]:Example S.r.l
Organizational Unit Name (eg, section) []:Example S.r.l
Common Name (eg, your name or your server's hostname) []:www.example.it
Email Address []:[email protected]

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:         <-- Lasciare vuto
An optional company name []:     <-- Lasciare vuoto

[root@certs_test certs]# touch /etc/pki/CA/index.txt      
[root@certs_test certs]# echo 1000 > /etc/pki/CA/serial
[root@certs_test certs]#
[root@certs_test certs]# openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 1825     <--- valido per 5 anni
Signature ok
subject=/C=IT/ST=Roma/L=Roma/O=Example S.r.l/OU=Example S.r.l/CN=www.example.it/[email protected]
Getting Private key
  1. Cambiare i permessi in sola lettura della chiave e dei certificati:

[root@certs_test certs]# chmod 400 server.*