2017-08-08 60 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");