【问题标题】:Does JavaMail support Certificate Revoke check thru CRL or OCSP?JavaMail 是否支持通过 CRL 或 OCSP 检查证书撤销?
【发布时间】:2017-08-08 00:17:07
【问题描述】:

在最新的几个JavaMail版本中,如果要检查Email Server的Server身份,可以在代码中设置一个JavaMail属性“mail.smtps.ssl.checkserveridentity”。 JavaMail 客户端将检查电子邮件服务器证书以防止中间人攻击。 (https://javaee.github.io/javamail/docs/api/com/sun/mail/smtp/package-summary.html)。

我的问题是,是否可以设置任何 JavaMail 属性来检查电子邮件服务器证书是否已通过 CRL 或 OCSP 支持被撤销?如果没有,您能否建议我们可以做到这一点的任何方法?

【问题讨论】:

  • JSSE 已经可以进行撤销检查。请参阅 JSSE 参考指南。 RFC 2595 主机名检查 JavaMail 通过您提到的属性(您似乎拼写错误)在 JSSE 所做的任何事情之上和之后。
  • 感谢您的回复。我不认为我的 JavaMail 属性拼写错误。根据 JavaMail API:“请注意,如果您使用“smtps”协议通过 SSL 访问 SMTP,则所有属性都将命名为“mail.smtps.*”。因此,“mail.smtps.ssl.checkserveridentity”是要求 JavaMail 根据 RFC 2595 执行服务器身份检查的正确属性。
  • 啊,当然很好。

标签: java jakarta-mail jsse


【解决方案1】:

如果您设置特定的 SocketFactory,在 JavaMail Session 对象中使用属性mail.smtp.ssl.socketFactory,那么 JavaMail 将获得标准的com.sun.mail.util.MailSSLSocketFactory,并且此 SocketFactory 使用标准的 TrustManager ,当ocsp.enabled属性设置为true时支持OCSP(默认为false)。

所以,在程序的开头添加这一行:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 2018-12-30
    • 1970-01-01
    • 2021-03-31
    相关资源
    最近更新 更多