web-dev-qa-db-ja.com

リモートSMTPサーバーのTLS証明書を検査する方法は?

Windows Server 2008で実行されているExchange 2007サーバーがあります。クライアントは別のベンダーのメールサーバーを使用しています。彼らのセキュリティポリシーでは、強制されたTLSを使用する必要があります。これは最近まで問題なく機能していました。

Exchangeがメールをクライアントのサーバーに配信しようとすると、次のログが記録されます。

Ourclient.comのトランスポート層セキュリティ(TLS)証明書の検証がステータス 'UntrustedRoot。 ourclient.comの管理者に連絡して問題を解決するか、ドメインをセキュリティ保護されたリストから削除してください。

TLSSendDomainSecureListからourclient.comを削除すると、便宜的TLSを使用してメッセージが正常に配信されますが、これは一時的な回避策です。

クライアントは、非常に大規模でセキュリティに敏感な国際企業です。私たちのIT担当者は、TLS証明書の変更に気付かないと主張しています。検証エラーをトラブルシューティングできるように、証明書を生成した機関を特定するように繰り返し彼に依頼しましたが、これまでのところ、彼は答えを出すことができませんでした。私が知っている限りでは、クライアントは有効なTLS証明書を社内の認証局からの証明書に置き換えた可能性があります。

WebブラウザーでリモートHTTPSサーバーの証明書を確認できるように、リモートSMTPサーバーのTLS証明書を手動で検査する方法を知っている人はいますか?誰が証明書を発行したかを特定し、その情報をExchangeサーバー上の信頼されたルート証明書のリストと比較すると非常に役立ちます。

65
Skyhawk

OpenSSLを使用できます。 STARTTLSで証明書を確認する必要がある場合は、次のようにします

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

または、標準の安全なSMTPポートの場合:

openssl s_client -connect mail.example.com:465
110
Dan Andreatta

これは古い質問であることは承知していますが、電子メールサーバーでSSL証明書の有効性を確認したい管理者にとって、今でも関連する質問です。

https://www.checktls.com にアクセスして、無料でテストを実行できます。

9
Ketan Patel

OpenSSLがない場合は、これも使用できますPython snippet:

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

ここで、[hostname]はサーバーです。

出典: https://support.google.com/a/answer/618022

これによりOpenSSLライブラリがプルされ、インストールが少し簡単になります。

4
browly