Navigation --> NiQoZ WeB  >>  Gentoo  >>  Tutoriels Gentoo
Tutoriel :

Configurer TLS SSL et Cyrus SASL avec Postfix

Sécurisez votre serveur de courrier Postfix

mardi 26 septembre 2006.

Ce tutoriel donne une configuration pas à pas de Postfix, afin d’obtenir un serveur SMTP sécurisé TLS, un client SMTP sécurisé TLS, ainsi qu’un e authentification SASL.
Ce tutoriel est complémentaire du tutoriel Configurer Postfix amavisd-new clamav spamassassin sur Gentoo.
Il necessite un serveur Postfix qui émet et reçois le courrier local et distant, la gestion du Spam étant évidemment optionnelle smiley .Consultez la doc officielle pour plus de détails.
Ce tutoriel ne saurait être un cour sur ces technologies, ce n’est qu’une méthode pas à pas adaptées à la distribution Gentoo smiley.

Sommaire

Installation des logicielspage 1
Créer son propre certificat serveur auto signé SSL page 1
Création du jeu clé + certificat pour le serveur Postfix page 1
Utilisation de postconfpage 2
Paramètrez TLS pour le serveur SMTP ( Postfix )page 2
Paramètrez TLS pour le client SMTPpage 2
Paramètrez l’autorisation SASL pour le serveur SMTPpage 2
Fichiers exemplespage 2

Installation des logiciels

Installation de ’ OpenSSL ’ : (Normalement cela doit être déjà fait)

# echo 'dev-libs/openssl sse2 zlib' >> /etc/portage/package.use
# emerge openssl
La variable USE=sse2 suppose que votre architecture est Intel X86...

Installation de ’ Cyrus SASL ’ :

# echo 'dev-libs/cyrus-sasl crypt pam ssl urandom' >> /etc/portage/package.use
# emerge cyrus-sasl
Bien évidemment cette configuration est le minimum requis et vos besoin peuvent nécessiter d’autres paramètres USE.

Il faut recompiler ’ Postfix ’ avec tous les supports :

# echo 'mail-mta/postfix pam sasl ssl' >> /etc/portage/package.use
# emerge postfix
Comme pour cyrus-sasl c’est un minimum !

Créer son propre certificat serveur auto signé SSL

Maîtrisez les commandes OpenSSL de création de certificat n’est pas aisé, du fait du nombre de paramètres, heureusement OpenSSL fournis avec son logiciels des scripts de configuration automatique.
Cependant ils ont l’inconvénient de masquer la procédure exacte la rendant encore plus obscure.
La méthode détaillé ferait l’objet d’un tutoriel complet à elle toute seule, j’ai donc fait le compromis suivant : la création de l’ AC (Autorité de Certification) sera faite avec le script OpenSSL , mais la clé serveur, la DSC (Demande de Signature de Certificat) et le certificat final seront créés avec la commande OpenSSL traditionnelle.


Préparations

/etc/ssl/openssl.cnf :
# Cherchez la ligne suivante dans [ CA_default ] :
dir                = ./demoCA
# Remplacez la par :
dir                 = ./monAC

# puis la ligne :
default_days        = 365
# à remplacer par :
default_days        = 3650 # A moins que vous vouliez changer de CA tous les ans... (les négociants en matériaux fissibles m'auront compris ;p )

# Dans la section [ req ], identifiez :
default_bits                = 1024
# et remplacez par :
default_bits                = 2048 # La puissance des ordinateurs ne cesse de croître, soyons paranoiaques...

# Section [ req_distinguished_name ], identifiez :
countryName_default                = AU
stateOrProvinceName_default        = Some-State #optionel
0.organizationName_default        = Internet Widgits Pty Ltd #optionel
# et replacez par (évitez les accents) :
countryName_default                = FR # Ou votre pays
stateOrProvinceName_default        = (Votre Region)
0.organizationName_default        = (votre organisation)
/etc/ssl/misc/CA.sh :
# Cherchez la ligne :
CATOP=./demoCA
# Remplacez la par :
CATOP=./monAC
La modification de ces fichiers est surtout destiné à la convivialité des futures configurations, et est entièrement optionelle.

Création de l’Autorité de Certification

Allez dans le répertoire de votre choix et tapez la commande suivante et répondez aux questions : (pas d’accents)

# /etc/ssl/misc/CA.sh -newca
CA certificate filename (or enter to create) ==> Tapez Entrée seulement.

Making CA certificate ...
Generating a 2048 bit RSA private key
......................+++
...........................................................+++
writing new private key to './monAC/private/./cakey.pem' ==> La clé privée du CA est créé.
Enter PEM pass phrase: ==> Entrez la phrase de passe .
Verifying - Enter PEM pass phrase: ==> à nouveau.
----
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) [FR]: ==> Si Ok juste entrée.
State or Province Name (full name) [(Votre region)]: ==> Pareil (optionnel mettez un "." pour laissez vide)
Locality Name (eg, city) []:Trabazouille les oies !!
Organization Name (eg, company) [Votre organisation]: ==> Entrée si OK (optionnel)
Organizational Unit Name (eg, section) []:. ==> Mettez un "."
Common Name (eg, YOUR name) []:machine.domaine.ext ==> Si vous voulez faire un CA pour serveur il est IMPERATIF de mettre le nom complêt de la machine et de vous en souvenir car il faudra utilisez le MEME NOM pour le certificat signé.
Email Address []:votremail@votrefai.qqechose ==> Votre Email.

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: ==> Appuyez sur Entrée
An optional company name []: ==> IDEM.
Using configuration from /etc/ssl/openssl.cnf
Enter pass phrase for ./niqozportableCA/private/./cakey.pem: ==> Entrez votre phrase depasse de tout à l'heure.
Check that the request matches the signature
Signature ok
Certificate Details:
       Serial Number: 0 (0x0)
       Validity
           Not Before: Sep 22 08:50:23 2006 GMT
           Not After : Sep 21 08:50:23 2009 GMT
       Subject:
           countryName               = FR
           stateOrProvinceName       = Votre Region
           organizationName          = Votre Org
           commonName                = machine.domaine.ext
           emailAddress              = votremail@votrefai.qqechose
       X509v3 extensions:
           X509v3 Basic Constraints:
               CA:FALSE
           Netscape Comment:
               OpenSSL Generated Certificate
           X509v3 Subject Key Identifier:
               26:C8:E4:60:14:01:BB:B3:81:A5:F6:55:34:FC:90:20:5F:58:08:91
           X509v3 Authority Key Identifier:
               keyid:20:C3:E0:66:14:02:4F:B7:D1:A3:F6:55:34:FF:90:20:2A:58:08:91

Certificate is to be certified until Sep 21 08:50:23 2009 GMT (1095 days)

Write out database with 1 new entries
Data Base Updated


Si tous c’est bien passé vous disposez d’un répertoire “monAC” avec le contenu suivant :
# ls -Rl monAC/
monAC/:
total 28
-rw-r--r-- 1 root root 4698 sep 22 10:50 cacert.pem ==> Votre Certificat d'AC.
-rw-r--r-- 1 root root 1098 sep 22 10:50 careq.pem ==> La DSC de L'AC (sans intêrets)
drwxr-xr-x 2 root root   48 sep 22 10:49 certs
drwxr-xr-x 2 root root   48 sep 22 10:49 crl
-rw-r--r-- 1 root root  140 sep 22 10:50 index.txt
-rw-r--r-- 1 root root   21 sep 22 10:50 index.txt.attr
-rw-r--r-- 1 root root    0 sep 22 10:49 index.txt.old
drwxr-xr-x 2 root root   72 sep 22 10:50 newcerts
drwxr-xr-x 2 root root   80 sep 22 10:49 private
-rw-r--r-- 1 root root    3 sep 22 10:50 serial
-rw-r--r-- 1 root root    3 sep 22 10:49 serial.old

monAC/certs:
total 0

monAC/crl:
total 0

monAC/newcerts:
total 8
-rw-r--r-- 1 root root 4698 sep 22 10:50 00.pem ==> Une Copie de cacert.pem (?)

monAC/private:
total 4
-rw-r--r-- 1 root root 1743 sep 22 10:50 cakey.pem ==> La clé privé de l'AC.

Conservez votre répertoire d’ AC à l’emplacement de votre choix, par exemple : # mv monAC /etc/ssl/
Vous voila donc munis d’une AC entièrement fonctionnelle. Elle se compose :

  • D’une clé privé :
    • monAC/private/cakey.pem
  • D’un certificat ou clé publique :
    • monAC/cacert.pem

Avec cette AC vous allez signer vos futurs certificats.

Création du jeu clé + certificat pour le serveur Postfix

Création de la clé privée serveur


IMPORTANT :
Que ce soit pour le serveur SMTPD Postfix, pour le serveur local LMTPD "local" ou pour le serveur IMAPD Cyrus-IMAP, il faut toujours renseigner ces trois questions :

  • indiquez quel fichier contient la clef PRIVÉE RSA NON CHIFFRÉE au format .pem du serveur SMTP / LMTP / IMAP .
  • indiquez quel fichier contient la clef PUBLIQUE RSA NON CHIFFRÉE (certificat serveur signé) au format .pem du serveur SMTP / LMTP / IMAP
  • indiquez quel fichier contient le certificat de l’ AC .

Si tous les services ( IMAP , SMTP , LMTP ) tournent sur la même machine, alors un seul jeu de clefs publique/privée de serveur ( serveur au sens machine et non pas service !) est suffisant.

Création d’une clé privée non chiffrée :

# cd /etc/ssl/
# openssl genrsa -out monAC/private/serveur_key.pem 2048Generating RSA private key, 2048 bit long modulus
.............................+++
.....+++
e is 65537 (0x10001)
Le fichier serveur_key.pem est créé dans monAC/private/, c’est votre clé secrète.

Création de la DSC

Tapez la commande suivante et répondez aux questions exactement comme pour le CA .

# openssl req -new -nodes -key monAC/private/serveur_key.pem -out monAC/newcerts/serveur_DSC.pem
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) [FR]:
State or Province Name (full name) [(Votre Region)]:
Locality Name (eg, city) []: Trabazouille les oies !!
Organization Name (eg, company) [(Votre organisation)]:
Organizational Unit Name (eg, section) []:.
Common Name (eg, YOUR name) []:machine.domaine.ext ==> TRES IMPORTANT DOIT ETRE IDENTIQUE AU CA..CAD LE NOM FQDN DE VOTRE MACHINE !!!
Email Address []:votreemail@votrefai.qquechose

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Une demande de signature de certificat ( DSC ) nommée serveur_DSC.pem est créé dans monAC/newcerts/ .
Il suffit ensuite de signer ce certificat afin d’obtenir le certificat serveur.

Création du certificat final signé

Signons la DSC avec la commande suivante

# openssl ca -in monAC/newcerts/serveur_DSC.pem -out monAC/certs/serveur_CRT.pem -keyfile monAC/private/cackey.pem -cert monAC/cacert.pem -days 3650
Using configuration from /etc/ssl/openssl.cnf
Enter pass phrase for monAC/private/cakey.pem: ==> Entrez votre phrase de passe.
Check that the request matches the signature
Signature ok
Certificate Details:
       Serial Number: 1 (0x1)
       Validity
           Not Before: Sep 22 10:07:15 2006 GMT
           Not After : Sep 19 10:07:15 2016 GMT
       Subject:
           countryName               = FR
           stateOrProvinceName       = (Votre region)
           organizationName          = (Votre Organisation)
           commonName                = niqozportable.homelinux.org
           emailAddress              = webmaster@niqozweb.web-hebergeur.com
       X509v3 extensions:
           X509v3 Basic Constraints:
               CA:FALSE
           Netscape Comment:
               OpenSSL Generated Certificate
           X509v3 Subject Key Identifier:
               D0:11:2C:17:30:2D:CF:38:B6:EB:66:96:FC:EA:D5:FB:D6:60:37:E7
           X509v3 Authority Key Identifier:
               keyid:20:C8:E0:60:14:01:4F:B3:81:A3:F6:55:34:FC:90:20:2A:58:08:91

Certificate is to be certified until Sep 19 10:07:15 2016 GMT (3650 days)
Sign the certificate? [y/n]:y ==> y


1 out of 1 certificate requests certified, commit? [y/n]y ==> y
Write out database with 1 new entries
Data Base Updated
Et voila smiley , Vous disposez d’un jeu de clé et d’une AC , pour sécurisez vos serveurs.

Détail des fichiers :

  • La clé secrète se trouve dans :
    • monAC/private/serveur_key.pem
  • La clé publique ou certificat signé par l’AC :
    • monAC/certs/serveur_CRT.pem
  • Le certificat de l’AC :
    • monAC/cacert.pem
  • La clé privé de l’AC :
    • monAC/private/cakey.pem

Les 3 premiers fichiers vous serons demandés par Postfix lors de la configuration TLS .

Vous pouvez donc les copier dans son répertoire :

# mkdir /etc/postfix/ssl
# cd /etc/ssl/monAC
# cp {private/serveur_key.pem,certs/serveur_CRT.pem,cacert.pem}  /etc/postfix/ssl/
Mieux vaux de bonnes permissions :
# cd /etc/postfix/ssl
# chown root:root *
# chmod 0400 serveur_key.pem
# chmod 0440 serveur_CRT.pem cacert.pem
Il n’est pas necessaire que les fichiers appartiennent à postfix car ils seronts lus avec le privilège root au démarrage du programme.


Ce tutoriel est un "condensé" des différentes documentations sur le sujet, il s’avère donc non exaustif.
Voir la documentation officielle pour plus de détails.