SSL : Gestion des certificats

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search

1 Problématique

Après un an de bon et loyaux services, votre serveur Courier (pop3 ou imap) vous lâche pour un simple problème SSL ! Et oui, au bout d'un an ça expire !

2 Préparation

Il va donc falloir en regénérer de nouveaux. Pour ça, nous allons nous placer au bon endroit :

cd /etc/courier/

Ensuite, on supprime l'ancien :

rm pop3d.pem

3 Génération

3.1 Automatique

Si tous les ans, vous décidez de renouveller de façon simple ce certificat, alors éditez le fichier ".cnf" et renseignez le correctement. Voici un exemple :

RANDFILE = /usr/lib/courier/pop3d.rand

[ req ]
default_bits = 1024 # Mettez 2056 si vous êtes parano
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no

[ req_dn ]
C=FR
ST=France
L=Paris
O=Société
OU=Managed by Deimos System Engineer
CN=société.fr
emailAddress=admin@société.fr

[ cert_type ]
nsCertType = server

Ensuite, on lance la commande de régénération du certificat :

/usr/lib/courier/mkpop3dcert

On devrait avoir quelquechose comme ceci :

generating a 1024 bit RSA private key
...........................++++++
.++++++
writing new private key to '/usr/lib/courier/imapd.pem'
-----
1024 semi-random bytes loaded
Generating DH parameters, 512 bit long safe prime, generator 2
This is going to take a long time
.....................+.........................+..........+.....................
....+...............+........+............................................+..+..
.................................+....+................................+...+....
....................+...........................................................
.+...........................+..........+........................+..............
............+............++*++*++*++*++*++*

3.2 Manuelle

Pour créer sa clef à la mano, voici la commande qui va permettre de générer la clef :

openssl genrsa -out pop3d.pem 1024

Remplacez pop3.pem par imap.pem dans le cas de l'imap ( a adapter).
1024 correspond au nombre de bits d'encryption. Monter si nécessaire.

Ensuite, 2 options s'offrent à nous :

  • L'auto-signature
  • Signature de la part d'une autorité

3.2.1 Auto-signature

L'option -x509 sert à autosigner :

openssl req -new -days 365 -key pop3d.pem -x509 -out pop3d.crt
  • 365 : nombre de jours avant expiration
  • pop3d.pem : certificat à signer
  • pop3d.crt : certificat faisant autorité

3.2.2 Signature de la part d'une autorité

Voilà un exemple :

openssl req -new -days 365 -key pop3d.pem -out pop3d.crt
  • 365 : nombre de jours avant expiration
  • pop3d.pem : certificat à signer
  • pop3d.crt : certificat faisant autorité, il faut insérer ici le certificat fourni par l'autorité

4 Application des nouveaux certificats

Pour appliquer ces nouveaux certificats, il suffit de redémarrer les services appropriés. Ex :

/etc/init.d/courier-pop-ssl restart

5 Modification du script de génération automatique des certificats

Comme nous l'avons vu plus haut pour la génération automatique des certificats, on lance un script. Mais vi nous voulons changer un peu le contenu pour avoir par exemple 2 ou 3 ans de surcis, c'est pratique, même si ce n'est pas recommandé.

Editons alors le fichier "/usr/lib/courier/mkpop3dcert" :

test -x /usr/bin/openssl || exit 0

prefix="/usr"

if test -f /usr/lib/courier/popd.pem
then
       echo "/usr/lib/courier/popd.pem already exists."
       exit 1
fi

umask 077 
cp /dev/null /usr/lib/courier/popd.pem
chmod 600 /usr/lib/courier/popd.pem
chown daemon /usr/lib/courier/popd.pem

cleanup() {
       rm -f /usr/lib/courier/popd.pem
       rm -f /usr/lib/courier/popd.rand
       exit 1
}

cd /usr/lib/courier
dd if=/dev/urandom of=/usr/lib/courier/popd.rand count=1 2>/dev/null
/usr/bin/openssl req -new -x509 -days 365 -nodes \
       -config /etc/courier/popd.cnf -out /usr/lib/courier/popd.pem -keyout /usr/lib/courier/popd.pem || cleanup
/usr/bin/openssl gendh -rand /usr/lib/courier/popd.rand 512 >>/usr/lib/courier/popd.pem || cleanup
/usr/bin/openssl x509 -subject -dates -fingerprint -noout -in /usr/lib/courier/popd.pem || cleanup
rm -f /usr/lib/courier/popd.rand

Maintenant que vous êtes arrivé là, vous devez mieux cerner les options à modifier.

6 Ressources

Créer sa propre Autorite de Certification