web-dev-qa-db-fra.com

Comment inspecter le certificat TLS du serveur SMTP distant?

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

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

Une connexion sécurisée au domaine sécurisé par domaine '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 des messages avec succès à l'aide de TLS opportuniste, mais il s'agit au mieux d'une solution temporaire.

Le client est une grande entreprise internationale extrêmement sensible à la sécurité. Notre contact informatique sur place affirme ne pas être au courant des 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 répondre. Pour autant que je sache, notre client aurait pu remplacer son certificat TLS valide par un certificat d'une autorité de certification interne.

Quelqu'un connaît-il 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 avec la liste des certificats racine approuvés sur notre serveur Exchange.

65
Skyhawk

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

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
110
Dan Andreatta

Je sais que c'est une vieille question, mais toujours une question 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 exécuter le test gratuitement.

9
Ketan Patel

Si vous n'avez pas OpenSSL, vous pouvez également utiliser cet extrait 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/618022

Cela tire la bibliothèque OpenSSL pour vous, ce qui rend l'installation un peu plus facile.

4
browly