我开发了一个使用TCP套接字的应用程序.
现在我希望它能与TLS连接一起使用.
我现在搜索了一些资源2天,但没有什么看起来像是关于如何实现TLS的教程.
以下是我对自己所要做的事情的理解:
我找不到一个明确的代码示例来解释实际上该做什么.
你能帮助我一些客户端/服务器示例或其他有用的教程吗?(我已经尝试搜索"TLS java","TLS Java示例","TLS Java教程"......但我找不到令人满意的东西.)
提前感谢您的关注.
Cer*_*ber 18
实现这一目标有两种方法.
最简单的是java协议支持和URL对象.
但是,既然我认为你已经想到了new URL("https://www.google.com").openStream()为你提供明确的文本输入流,同时处理所有TLS/SSL的东西,我会选择"硬"的方式:)
就在我回答你的另一个问题之前:导入CA. CA证书位于java home中的任何一个位置:$JAVA_HOME/lib/security/cacerts(JRE)或$JAVA_HOME/jre/lib/security/cacerts(JDK;请注意java home之后的'jre'),默认密码为"changeit"
要列出它的内容,您可以使用keytool命令:
$ keytool -list -keystore cacerts -storepass changeit
Run Code Online (Sandbox Code Playgroud)
要添加新证书,只需使用-import子命令而不是-list
那么现在让我们采用"硬"方式(客户端代码):
import javax.net.SocketFactory;
import javax.net.ssl.SSLSocketFactory;
...
String host = "www.google.com";
int port = 443;
SocketFactory basicSocketFactory = SocketFactory.getDefault();
Socket s = basicSocketFactory.createSocket(host,port);
// s is a TCP socket
SSLSocketFactory tlsSocketFactory = SSLSocketFactory.getDefault();
s = tlsSocketFactory.createSocket(s, host, port, true);
// s is now a TLS socket over TCP
Run Code Online (Sandbox Code Playgroud)
就这么简单.
如果你需要一个服务器套接字代码几乎相同,你只需要交换SocketFactoryfor ServerSocketFactory和SSLSocketFactoryforSSLServerSocketFactory
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
19922 次 |
| 最近记录: |