Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

sendmail + letsencrypt

5 réponses
Avatar
Laurent
Sur un serveur Linux avec sendmail 8.15.2, j'ai installé un certificat
letsencrypt.

Voici la partie significative de la configuration

define(`CERT_DIR', `/etc/letsencrypt/live/home.n22.fr/')dnl
define(`confSERVER_CERT', `CERT_DIR/fullchain.pem')dnl
define(`confSERVER_KEY', `CERT_DIR/privkey.pem')dnl
define(`confCLIENT_CERT', `CERT_DIR/fullchain.pem')dnl
define(`confCLIENT_KEY', `CERT_DIR/privkey.pem')dnl
define(`confCACERT_PATH', `/etc/ssl/certs/')dnl
define(`confCACERT', `/etc/ssl/certs/root.pem')dnl
define(`confCRL', `/etc/ssl/certs/revoke.crl')dnl

mais le certificat ne peut pas être vérifié.

En m'envoyant un mail depuis un autre mta j'ai :
STARTTLS=client, relay=home.n22.fr., version=TLSv1.2, verify=FAIL,
cipher=ECDHE-RSA-AES256-GCM-SHA384, bits=256/256

Et avec openssl
openssl s_client -connect home.n22.fr:25 -starttls smtp
ça me renvoie
Verify return code: 21 (unable to verify the first certificate)

Pourtant le même certificat fonctionne en https et en imaps.

Une idée ?

5 réponses

Avatar
Marc SCHAEFER
dyrmak wrote:
Les seuls CA standard sont dans /etc/ssl/certs ou ailleurs...

Let's Encrypt fonctionne avec le web:
openssl s_client -connect www.INNOCENT-PROTECTED.ch:443
[ ... ]
Certificate chain
0 s:/CN=INNOCENT-PROTECTED.ch
i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
i:/O=Digital Signature Trust Co./CN=DST Root CA X3
[ ... ]
Verify return code: 0 (ok)
Justement par ce que le certificat est bien là:
openssl x509 -in /etc/ssl/certs/DST_Root_CA_X3.pem -text
[ ... ]
Issuer: O=Digital Signature Trust Co., CN=DST Root CA X3
Validity
Not Before: Sep 30 21:12:19 2000 GMT
Not After : Sep 30 14:01:15 2021 GMT
[ ... ]
Toutefois, dans le cas qui nous occupe, je me demande
s'il ne manque pas un certificat intermédiaire sur
le serveur SMTP ?
Tiens ce soir ça marche:
openssl s_client -connect home.n22.fr:25 -starttls smtp
Hier soir il me semble que la certificate chain ne
remontait pas jusqu'au DST.
Avatar
Laurent
Le 28-01-2019, Marc SCHAEFER a écrit :
Toutefois, dans le cas qui nous occupe, je me demande
s'il ne manque pas un certificat intermédiaire sur
le serveur SMTP ?

C'était exactement ca.
Tiens ce soir ça marche:

Oui, j'ai recopié le certificat intermédiaire
/etc/letsencrypt/live/fqdn/chain.pem dans /etc/ssl/certs
et ça fonctionne
Merci Beaucoup
Avatar
Marc SCHAEFER
Laurent wrote:
Oui, j'ai recopié le certificat intermédiaire
/etc/letsencrypt/live/fqdn/chain.pem dans /etc/ssl/certs
et ça fonctionne

Donc sur le client ?
L'autre solution pourrait être de concaténer ce certificat au
fichier pem du *serveur* de mail. Cela permettrait l'accès
depuis tout Internet sans modifier les configs :)
C'est ainsi que les serveurs web fonctionnent: ils donnent
les certificats intermédiaires.
P.ex. je l'ai fait ici -- ok, pour un certificat acheté,
wildcard, pas let's encrypt sur smtp.alphanet.ch --
j'ai cru comprendre que let's encrypt fait aussi du
wildcard maintenant.
Typiquement: fichier wildcard-combined.pem qui contient:
les deux certif intermédiaires, le certif, la clé
privée.
Avatar
Laurent
Le 28-01-2019, Marc SCHAEFER a écrit :
Laurent wrote:
Oui, j'ai recopié le certificat intermédiaire
/etc/letsencrypt/live/fqdn/chain.pem dans /etc/ssl/certs
et ça fonctionne

Donc sur le client ?
L'autre solution pourrait être de concaténer ce certificat au
fichier pem du *serveur* de mail. Cela permettrait l'accès
depuis tout Internet sans modifier les configs :)

Dans la config j'avais
define(`CERT_DIR', `/etc/letsencrypt/live/home.n22.fr/')dnl
define(`confSERVER_CERT', `CERT_DIR/fullchain.pem')dnl
fullchain.pem incluant le certificat intermédiaire chain.pem mais
ça ne fonctionnait pas pour autant.
Alors j'ai copié chain.pem dans /etc/ssl/certs/letsencrypt.pem et j'ai fait
define(`confCACERT_PATH', `/etc/ssl/certs/')dnl
define(`confCACERT', `/etc/ssl/certs/letsencrypt.pem')dnl
Et là ça marche sendmail envoie le certificat intermédiaire.
Avatar
Marc SCHAEFER
Laurent wrote:
Alors j'ai copié chain.pem dans /etc/ssl/certs/letsencrypt.pem et j'ai fait
define(`confCACERT_PATH', `/etc/ssl/certs/')dnl
define(`confCACERT', `/etc/ssl/certs/letsencrypt.pem')dnl
Et là ça marche sendmail envoie le certificat intermédiaire.

Ok, parfait alors, j'avais mal compris.