Como inspecionar o certificado TLS do servidor SMTP remoto?

63

Temos um servidor Exchange 2007 em execução no Windows Server 2008. Nosso cliente usa o servidor de email de outro fornecedor. Suas políticas de segurança exigem que usemos TLS imposto. Isso estava funcionando bem até recentemente.

Agora, quando o Exchange tenta enviar email para o servidor do cliente, ele registra o seguinte:

Não foi possível estabelecer uma conexão segura ao domínio protegido pelo domínio 'ourclient.com' no conector 'Correio externo padrão' porque a validação do certificado TLS (Transport Layer Security) para ourclient.com falhou com o status 'UntrustedRoot. Entre em contato com o administrador do ourclient.com para resolver o problema ou remova o domínio da lista de domínios protegidos.

A remoção de ourclient.com do TLSSendDomainSecureList faz com que as mensagens sejam entregues com êxito usando TLS oportunista, mas essa é uma solução temporária, na melhor das hipóteses.

O cliente é uma corporação internacional extremamente grande e sensível à segurança. Nosso contato de TI alega não ter conhecimento de quaisquer alterações em seu certificado TLS. Pedi-lhe várias vezes para identificar a autoridade que gerou o certificado para que eu possa solucionar o erro de validação, mas até agora ele não conseguiu fornecer uma resposta. Pelo que sei, nosso cliente poderia ter substituído seu certificado TLS válido por um de uma autoridade de certificação interna.

Alguém conhece uma maneira de inspecionar manualmente o certificado TLS de um servidor SMTP remoto, como se pode fazer pelo certificado de um servidor HTTPS remoto em um navegador da web? Pode ser muito útil determinar quem emitiu o certificado e comparar essas informações com a lista de certificados raiz confiáveis ​​em nosso servidor Exchange.

Falcão do céu
fonte

Respostas:

100

Você pode usar o OpenSSL. Se você precisar verificar o certificado STARTTLS, basta fazer

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

ou para uma porta smtp segura padrão:

openssl s_client -connect mail.example.com:465
Dan Andreatta
fonte
Bela. Erros de validação semelhantes no OpenSSL, mas com muito mais detalhes. Agora sabemos que o problema não se limita ao nosso servidor de correio.
quer
11
@ Miles: Se você está tentando fazer isso no Windows, não se esqueça de que opensslele não suporta o armazenamento de certificados do Windows, portanto sempre falha na validação.
grawity
3
Como posso ver a data de validade do certificado dos servidores?
Nimrodm
9
@nimrodm: canalizar a cert para "openssl x509 -text"
Dan Andreatta
2
@DanAndreatta @nimrodm Ou canalize-o para openssl x509 -noout -datesobter uma saída mais curta.
Skippy le Grand Gourou
9

Sei que essa é uma pergunta antiga, mas ainda é uma pergunta relevante ainda hoje para os administradores que desejam confirmar a validade do certificado SSL em seus servidores de email.

Você pode visitar https://www.checktls.com e executar o teste gratuitamente.

Ketan Patel
fonte
Isso funcionou para mim, era mais legível do que a linha de comando
marijnz0r
11
Estou com problemas para encontrar o teste no site. Alguma dica?
Zero3 26/06
11
Há uma caixa de entrada na seção 'E-mail seguro da Internet é fácil' com o botão 'CheckTLS' na cor preta.
Ketan Patel
@KetanPatel Aaaand ... Onde encontro a seção 'E-mail seguro da Internet é fácil'?
Zero3
Que pena, isso parece verificar o domínio dos servidores SMTP listados no DNS e consultá-los, mas eu queria verificar o servidor diretamente.
kerridge0
4

Se você não possui o OpenSSL, também pode usar este snippet do 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))

onde [hostname] é o servidor.

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

Isso puxa a biblioteca OpenSSL para você, o que facilita a instalação.

browly
fonte
Na documentação do módulo SSL do Python : "Este módulo usa a biblioteca OpenSSL." Portanto, essa resposta é um pouco enganadora em termos do que está acontecendo.
Fbmd
@fbmd Obrigado pelo feedback. Esta edição é melhor (veja a última frase)?
browly
Sim, está melhor.
Fbmd