Vraag Hoe het TLS-certificaat van externe SMTP-server te inspecteren?


We hebben een Exchange 2007-server die wordt uitgevoerd op Windows Server 2008. Onze client gebruikt de e-mailserver van een andere leverancier. Hun beveiligingsbeleid vereist dat we afgedwongen TLS gebruiken. Dit werkte tot voor kort prima.

Nu, wanneer Exchange e-mail naar de server van de client probeert af te leveren, registreert het het volgende:

Een beveiligde verbinding met domein-beveiligd domein 'ourclient.com' op connector 'Standaard externe e-mail' kon niet worden vastgesteld omdat de validatie van het Transport Layer Security (TLS) -certificaat voor ourclient.com mislukt met de status 'UntrustedRoot. Neem contact op met de beheerder van ourclient.com om het probleem op te lossen of verwijder het domein uit de domeinbeveiligde lijst.

Door ourclient.com uit de TLSSendDomainSecureList te verwijderen, worden berichten met behulp van opportunistische TLS met succes afgeleverd, maar dit is op zijn best een tijdelijke oplossing.

De klant is een extreem grote, veiligheidsgevoelige internationale onderneming. Onze IT-contactpersoon daar beweert niet op de hoogte te zijn van eventuele wijzigingen aan hun TLS-certificaat. Ik heb hem herhaaldelijk gevraagd om de autoriteit te identificeren die het certificaat heeft gegenereerd, zodat ik de validatiefout kan oplossen, maar tot nu toe heeft hij geen antwoord kunnen geven. Voor zover ik weet, had onze klant zijn geldige TLS-certificaat kunnen vervangen door een certificaat van een interne certificeringsinstantie.

Weet iemand een manier om het TLS-certificaat van een externe SMTP-server handmatig te inspecteren, zoals kan worden gedaan voor een certificaat van een externe HTTPS-server in een webbrowser? Het zou erg handig kunnen zijn om te bepalen wie het certificaat heeft uitgegeven en die informatie te vergelijken met de lijst met vertrouwde basiscertificaten op onze Exchange-server.


48
2018-04-12 15:18


oorsprong




antwoorden:


U kunt OpenSSL gebruiken. Als u het certificaat moet controleren met STARTTLS, dan gewoon doen

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

of voor een standaard beveiligde smtp-poort:

openssl s_client -connect mail.example.com:465

84



Mooi. Vergelijkbare validatiefouten in OpenSSL, maar veel meer details. Nu weten we dat het probleem niet beperkt is tot onze mailserver. - Skyhawk
@Miles: als u dit in Windows probeert, vergeet dat dan niet openssl biedt geen ondersteuning voor het gebruik van het Windows-certificaatarchief, dus het valideert altijd. - grawity
Hoe kan ik de vervaldatum van het servercertificaat zien? - nimrodm
@nimrodm: pijp de cert naar "openssl x509 -text" - Dan Andreatta
@DanAndreatta @nimrodm Of pijp het naar openssl x509 -noout -dates voor kortere output. - Skippy le Grand Gourou


Ik weet dat dit een oude vraag is, maar vandaag nog steeds een relevante vraag voor beheerders die de geldigheid van het SSL-certificaat op hun e-mailservers willen bevestigen.

Je zou kunnen bezoeken https://www.checktls.com en voer de test gratis uit.


8



Dit werkte voor mij, was leesbaarder dan de opdrachtregel - marijnz0r
Ik heb problemen met het vinden van de test op de site. Alle wijzers? - Zero3
Er is een invoervak ​​in de sectie 'Internet Secure Email is Easy' met de knop 'CheckTLS' in zwarte kleur. - Ketan Patel


Als je geen OpenSSL hebt, kun je dit Python-fragment ook gebruiken:

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))

waarbij [hostnaam] de server is.

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

Dit trekt de OpenSSL-bibliotheek voor u, wat de installatie een beetje eenvoudiger maakt.


1



Van de Python ssl-module documentatie: "Deze module maakt gebruik van de OpenSSL-bibliotheek." Dus dit antwoord is een beetje misleidend in termen van wat er gaande is. - fbmd
@fbmd Bedankt voor de feedback. Is deze bewerking beter (zie laatste zin)? - browly
Ja, dat is beter. - fbmd