Présentation

Il s’agit de mon pense-bête pour la création d’un certificat SSL autosigné et son utilisation avec :
stunnel,
apache2,
postfix,
dovecot.

Prérequis

Bien entendu il faut avoir OpenSSL sur sa machine. Pour ne pas avoir à le taper à chaque fois on passe le nom d’hôte en variable.
host=myhost.example.com

Création de l’autorité de certification

On a besoin d’une clé et d’un certificat.
# génération de la clé privée pour l’autorité de certification (soi-même en l’occurence) (avec passphrase)
openssl genrsa -des3 1024 > /etc/ssl/private/myca.$host.key

# génération du certificat de l’autorité de certification (pour 10 ans histoire de pas recommencer tous les jours)
# On répondra $host à la question « Common Name »
openssl req -new -x509 -days 3650 -key /etc/ssl/private/myca.$host.key > /etc/ssl/certs/myca.$host.crt

Crétion du certificat

On a encore besoin d’une clé privé, d’un fichier de demande de signature et de la signature elle même.
# génération de la clé privée
openssl genrsa 1024 > /etc/ssl/private/$host.key

# création du fichier de demande de signature de certificat (CSR Certificate Signing Request)
# On répondra $host à la question « Common Name (eg, YOUR name) »
# Ce sera le CN (Common Name) du certificat
openssl req -new -key /etc/ssl/private/$host.key > /etc/ssl/certs/$host.csr

# reste à signer son certificat (valide 10 an)
openssl x509 -days 365 -req -in /etc/ssl/certs/$host.csr -out /etc/ssl/certs/$host.crt -CA /etc/ssl/certs/myca.$host.crt -CAkey /etc/ssl/private/myca.$host.key -CAcreateserial -CAserial ca.srl

On mixe la clé et le certificat dans un seul fichier.
cat /etc/ssl/private/$host.key /etc/ssl/certs/$host.crt > /etc/ssl/certs/$host.pem
openssl gendh >> /etc/ssl/certs/$host.pem

Applications

Pour stunnel tout se passe dans /etc/stunnel/stunnel.conf
cert = /etc/ssl/certs/$host.pem
key = /etc/ssl/private/$host.key
Pour apache2 tout se passe dans /etc/apache2/sites-availables/default-ssl
SSLCertificateFile /etc/ssl/certs/$host.pem
Pour postfix dans /etc/postfix/main.cf
smtpd_tls_cert_file=/etc/ssl/certs/$host.pem
smtpd_tls_key_file=/etc/ssl/private/$host.key
Et pour dovecot dans /etc/dovecot/dovecot.conf
ssl_cert_file = /etc/ssl/certs/$host.pem
ssl_key_file = /etc/ssl/private/$host.key

copié de http://www.deb-indus.org/autohebergement/cacert.htm

Optimization WordPress Plugins & Solutions by W3 EDGE