我需要为简单的基于Java的SMTP客户端添加TLS支持。客户端通过java.net.Socket实现SMTP协议,即它不使用Java Mail或其他高级API。
我想使用BouncyCastle的轻量级TLS API来执行此任务。我一直在寻找例子,但一直找不到太多。任何人都可以提供任何指示吗?
答案 0 :(得分:5)
事实证明这比我预期的要容易得多。我可以通过修改原始SMTP客户端代码来建立到SMTP邮件服务器的安全SSL连接:
Socket s = new Socket(server, port);
InputStream is = s.getInputStream();
InputStream os = s.getOutputStream();
[...]
对此:
Socket s = new Socket(server, port);
TlsProtocolHandler handler = new TlsProtocolHandler(s.getInputStream(),
s.getOutputStream());
handler.connect(new AlwaysValidVerifyer());
InputStream is = handler.getInputStream();
InputStream os = handler.getOutputStream();
[...]
服务器的证书尚未验证(AlwaysValidVerifier
是一个可以接受任何内容的虚拟验证者),但这已经是一个好的开始。