Comment inspecter le certificat TLS du serveur SMTP distant?

63

Nous avons un serveur Exchange 2007 sous Windows Server 2008. Notre client utilise le serveur de messagerie d'un autre fournisseur. Leurs politiques de sécurité nous obligent à utiliser le protocole TLS appliqué. Cela fonctionnait bien jusqu'à récemment.

Désormais, lorsque Exchange tente de remettre du courrier au serveur du client, il enregistre les éléments suivants:

Une connexion sécurisée au domaine sécurisé 'ourclient.com' sur le connecteur 'Courrier externe par défaut' n'a pas pu être établie car la validation du certificat TLS (Transport Layer Security) pour ourclient.com a échoué avec le statut 'UntrustedRoot. Contactez l'administrateur de ourclient.com pour résoudre le problème ou supprimez le domaine de la liste des domaines sécurisés.

La suppression de ourclient.com de TLSSendDomainSecureList entraîne la remise réussie des messages à l'aide de TLS opportuniste, mais il s'agit au mieux d'une solution de contournement temporaire.

Le client est une très grande entreprise internationale sensible à la sécurité. Notre contact informatique dans ce pays affirme ne pas être au courant de modifications apportées à son certificat TLS. Je lui ai demandé à plusieurs reprises de bien vouloir identifier l'autorité qui a généré le certificat afin que je puisse résoudre l'erreur de validation, mais jusqu'à présent, il n'a pas été en mesure de fournir une réponse. Pour autant que je sache, notre client aurait pu remplacer son certificat TLS valide par un autre d’une autorité de certification interne.

Est-ce que quelqu'un connaît un moyen d'inspecter manuellement le certificat TLS d'un serveur SMTP distant, comme on peut le faire pour un certificat de serveur HTTPS distant dans un navigateur Web? Il pourrait être très utile de déterminer qui a émis le certificat et de comparer ces informations à la liste des certificats racine approuvés sur notre serveur Exchange.

Skyhawk
la source

Réponses:

100

Vous pouvez utiliser OpenSSL. Si vous devez vérifier le certificat avec STARTTLS, alors faites juste

openssl s_client -connect mail.example.com:25 -starttls smtp

ou pour un port smtp sécurisé standard:

openssl s_client -connect mail.example.com:465
Dan Andreatta
la source
Magnifique. Des erreurs de validation similaires dans OpenSSL, mais beaucoup plus détaillées. Nous savons maintenant que le problème ne se limite pas à notre serveur de messagerie.
Skyhawk
1
@Miles: Si vous essayez ceci sous Windows, n'oubliez pas que opensslle magasin de certificats Windows n'est pas pris en charge. Par conséquent, la validation échouera toujours.
Grawity
3
Comment voir la date d'expiration du certificat de serveur?
Nimrodm
9
@nimrodm: envoie le certificat à "openssl x509 -text"
Dan Andreatta
2
@DanAndreatta @nimrodm Ou dirigez-le vers openssl x509 -noout -datespour une sortie plus courte.
Skippy le Grand Gourou
9

Je sais que c’est une vieille question, mais elle est toujours pertinente, même aujourd’hui, pour les administrateurs souhaitant confirmer la validité du certificat SSL sur leurs serveurs de messagerie.

Vous pouvez visiter https://www.checktls.com et lancer le test gratuitement.

Ketan Patel
la source
Cela a fonctionné pour moi, était plus lisible que la ligne de commande
marijnz0r
1
Je n'arrive pas à trouver le test sur le site. Des pointeurs?
Zero3
1
Il y a un champ de saisie dans la section "La messagerie électronique sécurisée sur Internet est facile" avec le bouton "CheckTLS" en couleur noire.
Ketan Patel
@KetanPatel Aaaand ... Où puis-je trouver la section "La messagerie électronique sécurisée est facile"?
Zero3
Dommage, cela semble vérifier le domaine pour les serveurs SMTP répertoriés dans DNS et interroger ceux-ci, mais je voulais vérifier le serveur directement.
kerridge0
4

Si vous n'avez pas OpenSSL, vous pouvez également utiliser cet extrait de code Python:

import smtplib
import ssl

connection = smtplib.SMTP() 
connection.connect('[hostname].')
connection.starttls()
print ssl.DER_cert_to_PEM_cert(connection.sock.getpeercert(binary_form=True))

où [nom d'hôte] est le serveur.

Source: https://support.google.com/a/answer/6180220

Cela extrait la bibliothèque OpenSSL pour vous, ce qui facilite l’installation.

brusquement
la source
De la documentation du module python ssl : "Ce module utilise la bibliothèque OpenSSL." Donc, cette réponse est un peu trompeuse en ce qui concerne ce qui se passe.
fbmd
@fbmd Merci pour vos commentaires. Cette édition est-elle meilleure (voir dernière phrase)?
sourcils
Oui c'est mieux
fbmd