如何使用Java邮件API来验证SMTP服务器的SSL / TLS证书?(How to valida

2019-10-23 14:54发布

我们还添加了功能通过SMTP发送电子邮件。 基本上,当用户试图通过用户界面添加和保存SMTP服务器的细节,我将需要验证服务器的证书。 我可以把工作“发送邮件”的代码; 有足够数量的例子:)不过,我想看看是否有什么办法让从SMTP服务器证书的详细信息,并使用Java邮件API在客户端验证; 我可以看到Transport.connect()方法隐含验证服务器证书,但我想了解是否有这样做的任何明确的方式。 总之,这些都是两件事情我想要实现:

1)从服务器获取的SLL / TLS证书,并提示相关详细信息(如,证书是否有效)的用户。 2)如果证书无效,提供将其添加到密钥存储选项。

任何提示,让这个通过Java API邮件做,将不胜感激。

Answer 1:

您可以使用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邮件API要做到这一点,但也许你可以使用OpenSSL的包装器的Java执行等同于上面的命令行中的呼叫。



文章来源: How to validate SMTP server's SSL/TLS certificate using java mail API?