簡體   English   中英

如何使用Java Mail API驗證SMTP服務器的SSL / TLS證書?

[英]How to validate SMTP server's SSL/TLS certificate using java mail API?

我們添加了通過SMTP發送電子郵件的功能。 基本上,當用戶嘗試通過UI添加和保存SMTP服務器詳細信息時,我將需要驗證服務器的證書。 我可以完成“發送郵件”代碼; 有足夠多的示例:)但是,我試圖查看是否有任何方法可以從SMTP服務器獲取證書詳細信息並使用Java Mail API在客戶端進行驗證; 我可以看到Transport.connect()方法隱式地驗證了服務器證書,但是我試圖了解是否有任何明確的方法來進行驗證。 簡而言之,以下是我要實現的兩件事:

1)從服務器獲取SLL / TLS證書,並提示用戶相關詳細信息(例如,該證書是否有效)。 2)如果證書無效,請提供將其添加到密鑰存儲區的選項。

通過Java郵件API完成此操作的任何提示將不勝感激。

您可以使用openssl獲取SSL / TLS或STARTTLS的服務器證書。

對於SSL / TLS:

openssl s_client -connect smtp.gmail.com:465 -CApath /etc/ssl/ </dev/null

對於STARTTLS:

openssl s_client -starttls smtp -crlf -connect smtp.gmail.com:587 -CApath /etc/ssl/ </dev/null

我不知道如何使用Java Mail API來執行此操作,但是也許可以使用Java的openssl包裝器來執行與上述命令行中的調用等效的調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM