Bohdan Zograf's bielorussian translation

Postfix, authentification par certificats

L'utilisation croissante des ordinateurs portables pose le problème suivant : comment être en mesure d'envoyer un mail depuis n'importe quel réseau (comprendre fournisseur d'accès) sans avoir à modifier la configuration de son MTA (mail transport agent, postfix) ou MUA (Mail user agent, mutt, thunderbird ou kmail) et ce, de façon sécurisée ?

Le moyen le plus généralement employé est l'utilisation d'une authentification par couple login / mot de passe (SASL). Pour protéger le mot de passe qui circule en clair, on utilise du TLS (chiffrement du flux). C'est une solution efficace, mais la configuration de SASL peut être parfois difficile.

La configuration de TLS impliquant de toute façon la création, la diffusion et l'utilisation de certificats, on peut utiliser avantageusement la fonctionnalité d'authentification de ceux-ci pour remplacer le couple login / mot de passe.

Note: Cet article ne couvre pas la création des certificats.

Configuration serveur

main.cf

smtpd_recipient_restrictions =
       [..]
       permit_tls_clientcerts,
       [..]

relay_clientcerts = hash:/etc/postfix/relay_clientcerts

smtpd_tls_CAfile = /etc/ssl/local/asyd-dot-net-ca.pem
smtpd_tls_cert_file = /etc/ssl/local/kaoru.asyd.net.pem
smtpd_tls_key_file = /etc/ssl/local/kaoru.asyd.net.pem
smtpd_use_tls = yes
smtpd_tls_ask_ccert = yes
smtpd_tls_req_ccert = yes
smtpd_tls_ccert_verifydepth = 5
smtpd_tls_loglevel = 1

relay_clientcerts

Ce fichier est composé de deux champs séparés par un caractère blanc (espace ou tabulation) :

5B:57:FE:31:CA:69:3D:FB:9E:99:22:9D:2B:8B:89:73   *.montravail.com
42:4A:62:71:DF:FC:3D:47:FA:27:77:D0:BB:46:8B:05   *

Le fingerprint du certificat peut être obtenu avec la commande suivante :

# openssl x509 -fingerprint -noout -md5 -in fichier
MD5 Fingerprint=5B:57:FE:31:CA:69:3D:FB:9E:99:22:9D:2B:8B:89:73

master.cf

Vérifiez la présence d'une entrée pour le service tlsmgr.

Configuration client

main.cf

relayhost = kaoru.asyd.net

smtp_tls_cert_file = /etc/ssl/local/laptop.pem
smtp_tls_key_file = $smtp_tls_cert_file
smtp_tls_CAfile = /etc/ssl/local/asyd-dot-net-ca.pem
smtp_tls_loglevel = 1
smtp_use_tls = yes
smtp_tls_per_site = hash:/etc/postfix/tls_per_site
smtp_enforce_tls = yes

tls_per_site

<nomdns>         <policy>

Avec les policy suivantes : NONE, MAY, MUST, MUST_NOPEERMATCH

master.cf

Vérifiez la présence d'une entrée pour le service tlsmgr.

Références