我们正在添加通过SMTP发送电子邮件的功能。基本上,当用户尝试通过UI添加和保存SMTP服务器详细信息时,我需要验证服务器的证书。我可以得到"发送邮件"代码完成;有足够数量的例子:)但是,我试图看看是否有任何方法可以从SMTP服务器获取证书详细信息,并使用java邮件API在客户端进行验证;我可以看到Transport.connect()方法隐式验证服务器证书,但我试图了解是否有任何明确的方法。简而言之,这些是我试图实现的两件事:
1)从服务器获取SLL / TLS证书,并提示用户提供相关详细信息(例如,证书是否有效)。 2)如果证书无效,请提供将其添加到密钥库的选项。
任何通过java邮件API完成此任务的提示都将受到赞赏。
答案 0 :(得分: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 Mail API执行此操作,但也许您可以使用openssl包装器来执行与上述命令行中相同的调用。