使用BouncyCastle的轻量级TLS API的SMTP客户端

时间:2011-09-13 06:48:24

标签: java ssl bouncycastle

我需要为简单的基于Java的SMTP客户端添加TLS支持。客户端通过java.net.Socket实现SMTP协议,即它不使用Java Mail或其他高级API。

我想使用BouncyCastle的轻量级TLS API来执行此任务。我一直在寻找例子,但一直找不到太多。任何人都可以提供任何指示吗?

1 个答案:

答案 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是一个可以接受任何内容的虚拟验证者),但这已经是一个好的开始。