2017-08-08 66 views
0

在最新的幾個JavaMail版本中,如果要檢查電子郵件服務器的服務器標識,可以在代碼中設置JavaMail屬性「mail.smtps.ssl.checkserveridentity」。 JavaMail客戶端將檢查電子郵件服務器證書以防止Man-In-Middle攻擊。 (https://javaee.github.io/javamail/docs/api/com/sun/mail/smtp/package-summary.html)。JavaMail是否支持通過CRL或OCSP進行Certificate Revoke檢查?

我的問題是,是否有任何JavaMail屬性可以設置爲檢查電子郵件服務器證書是否已通過CRL或OCSP支持被吊銷?如果沒有,你能提出一些我們可以做到的方法嗎?

+0

JSSE已經可以做作了吊銷檢查。請參閱JSSE參考指南。 JavaMail通過您提到的屬性來檢查JavaMail的RFC 2595主機名,這似乎是錯誤的,在JSSE的頂部和之後。 – EJP

+0

感謝您的回覆。我不認爲我的JavaMail屬性有拼寫錯誤。根據JavaMail API:「請注意,如果您使用」smtps「協議通過SSL訪問SMTP,則所有屬性都將命名爲」mail.smtps。*「。因此,」mail.smtps.ssl.checkserveridentity「是根據RFC 2595要求JavaMail執行服務器身份檢查的正確屬性。 –

+0

當然,這很好。 – EJP

回答

1

如果你設定一個特定的SocketFactory,隨着JavaMail會話對象的屬性mail.smtp.ssl.socketFactory,那麼JavaMail的將獲得標準的com.sun.mail.util.MailSSLSocketFactory,而這個的SocketFactory利用標準的TrustManager的,支持OCSP當ocsp.enabled財產設置爲true(默認爲false)。

所以,在你的程序的開始加入這一行:

java.security.Security.setProperty("ocsp.enabled", "true");