- Pré-requis
- Création de la clé privée
- Création de la clé de certification
- Création du certificat signé par StartCom Ltd
- Utilisation avec Nginx
- Utilisation avec Dovecot
- Utilisation avec Postfix
- Pour finir
1. Pré-requis
OpenSSL, cette boite à outil tant décrié par Matthew Green, les gens du projet ClearCrypt et bien d'autres, enfin bon…
Sous Arch Linux :
[root@serveur ~]# pacman -Qs openssl
local/openssl 1.0.1.g-1
The Open Source toolkit for Secure Sockets Layer and Transport Layer
Security
C'est déjà installé, on peut continuer, sinon on installe :
[root@serveur ~]# pacman -S openssl
Pour les autres distributions, vous les connaissez mieux que moi.
2. Création de la clé privée
[root@serveur ~]# openssl genrsa -out tetsumaki.net.key 4096
Generating RSA private key, 4096 bit long modulus
.................................................
........++
e is 65537 (0x10001)
[root@serveur ~]# chmod 400 tetsumaki.net.key
Pour plus d'informations sur les commandes précédentes :
[root@serveur ~]# man openssl
[root@serveur ~]# man genrsa
3. Création de la clé de certification
[root@serveur ~]# openssl req -new -key tetsumaki.net.key -out tetsumaki.net.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) [AU]:FR
State or Province Name (full name) [Some-State]:.
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:.
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:tetsumaki.net
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Pour plus d'informations sur les commandes précédentes :
[root@serveur ~]# man openssl
[root@serveur ~]# man req
Le fichier tetsumaki.net.csr peut maintenant nous servir à générer un certificat auto-signé ou alors à l'envoyer à une autorité de certification, c'est la dernière solution qui nous intéresse.
4. Création du certificat signé par StartCom Ltd
- Direction https://www.startcomca.com/
- Control Panel -> Certificates Wizard -> Web Server SSL/TLS Certificate -> Skip
On colle le contenu de notre clé de certification tetsumaki.net.csr.
Quelques instants plus tard nous obtenons notre certificat signé :
- ssl.crt que je renomme en tetsumaki.net.crt
Ainsi que les certificats Root CA et Class 1 Intermediate Server CA :
Nous nous retrouvons donc avec :
- ca.pem
- sub.class1.server.ca.pem
- tetsumaki.net.crt
- tetsumaki.net.csr
- tetsumaki.net.key
5. Utilisation avec Nginx
Il faut créer un certificat unifié avec notre certificat ainsi que les CA certificats :
[root@serveur ~]# cat tetsumaki.net.crt sub.class1.server.ca.pem ca.pem > /etc/nginx/conf/ssl-unified.crt
[root@serveur ~]# chmod 600 /etc/nginx/conf/ssl-unified.crt
Puis il faut copier la clé privée :
[root@serveur ~]# cp tetsumaki.net.key /etc/nginx/conf/ssl.key
[root@serveur ~]# chmod 600 /etc/nginx/conf/ssl.key
Nous nous retrouvons donc avec :
- ssl-unified.crt
- ssl.key
Pour le fichier de configuration /etc/nginx/nginx.conf :
# […]
ssl_certificate ssl-unified.crt;
ssl_certificate_key ssl.key;
# […]
6. Utilisation avec Dovecot
Il faut créer un certificat unifié avec notre certificat ainsi que le Class 1 Intermediate Server CA :
[root@serveur ~]# cat tetsumaki.net.crt sub.class1.server.ca.pem > /etc/dovecot/ssl-unified.crt
[root@serveur ~]# chmod 600 /etc/dovecot/ssl-unified.crt
Puis il faut copier la clé privée ainsi que le Root CA :
[root@serveur ~]# cp tetsumaki.net.key /etc/dovecot/ssl.key
[root@serveur ~]# cp ca.pem /etc/dovecot/
[root@serveur ~]# chmod 600 /etc/dovecot/ca.pem /etc/dovecot/ssl.key
Nous nous retrouvons donc avec :
- ca.pem
- ssl-unified.crt
- ssl.key
Pour le fichier de configuration /etc/dovecot/conf.d/10-ssl.conf :
; […]
ssl_ca = </etc/dovecot/ca.pem
ssl_cert = </etc/dovecot/ssl-unified.crt
ssl_key = </etc/dovecot/ssl.key
; […]
7. Utilisation avec Postfix
C'est exactement la même méthode que pour Dovecot, donc nous récupérons les fichiers :
[root@serveur ~]# cd /etc/dovecot/
[root@serveur dovecot]# cp ca.pem ssl-unified.crt ssl.key /etc/postfix/
[root@serveur dovecot]# cd /etc/postfix/
[root@serveur postfix]# chmod 600 /etc/dovecot/ca.pem /etc/dovecot/ssl.key
Pour le fichier de configuration /etc/postfix/main.cf :
; […]
smtpd_tls_key_file = /etc/postfix/ssl.key
smtpd_tls_cert_file = /etc/postfix/ssl-unified.crt
smtpd_tls_CAfile = /etc/postfix/ca.pem
; […]
Il aurait bien sûr été possible d'utiliser directement les fichiers de configuration dans /etc/dovecot/ ou encore d'avoir une configuration unifiée dans /etc/ssl/tetsumaki.net/ et bien d'autres possibilités, mais libre à vous de gérer votre configuration comme vous le souhaitez.
8. Pour finir
Il est fortement recommandé de garder précieusement et à l'abri des regards les fichiers générés du chapitre 2 à 4, à savoir :
- ca.pem
- sub.class1.server.ca.pem
- tetsumaki.net.crt
- tetsumaki.net.csr
- tetsumaki.net.key
Ma méthode, compression au format .tar.xz puis chiffrement asymétrique grâce à GnuPG avec ma clé publique :
Admettons que mes 5 fichiers se trouvent dans ~/tls :
[root@serveur ~]# cd ~/tls
[root@serveur tls]# tar Jcfv tetsumaki.net.tls.tar.xz *
[root@serveur tls]# gpg --recipient BACFBBBB --encrypt tetsumaki.net.tls.tar.xz
Je copie mon archive chiffré sur une clé USB ainsi que mon raid ou libre à vous de choisir :
[root@serveur tls]# cp tetsumaki.net.tls.tar.xz.gpg /mnt/raid/
[root@serveur tls]# cp tetsumaki.net.tls.tar.xz.gpg /run/media/tetsumaki/tet_key/
Puis je supprime le répértoire ~/tls :
[root@serveur tls]# cd ~
[root@serveur ~]# rm -r ~/tls
Si j'ai de nouveau besoin des fichiers, il me suffira de déchiffrer puis d'extraire :
[root@serveur ~]# mkdir ~/tls
[root@serveur tls]# cd ~/tls
[root@serveur tls]# gpg --decrypt /mnt/raid/tetsumaki.net.tls.tar.xz.gpg > tetsumaki.net.tls.tar.xz
[root@serveur tls]# tar Jxvf tetsumaki.net.tls.tar.xz
Et voilà !