我开发了一个使用TCP套接字的应用程序。
现在,我希望它可以使用TLS连接。
我搜索了两天的资源,但是没有什么看起来像是有关如何实现TLS的教程。
这是我对必须要做的事情的理解:
我找不到清晰的代码示例来说明实际操作。
您能帮我提供一些客户端/服务器示例或其他有用的教程吗?(我已经尝试搜索“ TLS Java”,“ TLS Java示例”,“ TLS Java教程”...。但找不到任何令人满意的东西。)
预先感谢您的关注。
有两种方法可以实现此目的。
最简单的在于Java协议支持和URL
对象。
但是,由于我认为您已经弄清楚了,在new URL("https://www.google.com").openStream()
为您处理所有TLS / SSL内容的同时,还可以为您提供清晰的文本输入流,因此,我将采用“困难”的方式:)
在我将回答您的另一个问题之前:导入CA。CA证书位于您的Java主目录中的以下任一位置:$JAVA_HOME/lib/security/cacerts
(JRE)或$JAVA_HOME/jre/lib/security/cacerts
(JDK;请注意,在Java主目录之后为“ jre”),两个默认密码均为“ changeit”
要列出其内容,可以使用keytool
command:
$ keytool -list -keystore cacerts -storepass changeit
要添加新证书,只需使用-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
就这么简单。
如果你需要一个服务器套接字的代码几乎是一样的,你只需要交换SocketFactory
的ServerSocketFactory
和SSLSocketFactory
为SSLServerSocketFactory
希望这可以帮助
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句