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

Gro*_*uez 3 java ssl bouncycastle

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

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

Gro*_*uez 5

事实证明,这比我预期的要容易得多.我可以通过修改原始SMTP客户端代码来建立到SMTP邮件服务器的安全SSL连接:

Socket s = new Socket(server, port);
InputStream is = s.getInputStream();
InputStream os = s.getOutputStream();
[...]
Run Code Online (Sandbox Code Playgroud)

对此:

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();
[...]
Run Code Online (Sandbox Code Playgroud)

服务器的证书尚未被验证(AlwaysValidVerifier是一个可以接受任何东西的虚拟验证器),但这已经是一个好的开始.