有两种方法可以实现这一目标。
最简单的在于Java协议支持和对象。URL
但是,由于我认为您已经弄清楚了在为您处理所有TLS / SSL内容时为您提供清晰的文本输入流,因此我将采用“硬”方式:)new URL("https://www.google.com").openStream()
在我回答您的另一个问题之前:导入 CA.CA 证书位于 Java 家中的以下任一位置:
-
$JAVA_HOME/lib/security/cacerts
(杰瑞)
-
$JAVA_HOME/jre/lib/security/cacerts
(JDK;注意 Java 主页后面的“jre”)
对于这两个密码,默认密码都是“changeit”。
要列出其内容,您可以使用以下命令:keytool
$ 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
希望这有帮助。