在证书的帮助下使用 SSL 套接字连接到服务器

Connect to Server using SSL Socket with the help of certificate

我有一个使用 SSL Java 编写的 SSL 服务器 Socket.Server 运行 properly.Now 我需要使用客户端应用程序连接到服务器。

客户代码:

System.setProperty("javax.net.ssl.trustStore", "C:\cacerts.jks");        
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");

try {
    SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
    SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket("127.0.0.1", 800);

    InputStream inputstream = System.in;
    InputStreamReader inputstreamreader = new InputStreamReader(inputstream);
    BufferedReader bufferedreader = new BufferedReader(inputstreamreader);

    OutputStream outputstream = sslsocket.getOutputStream();
    OutputStreamWriter outputstreamwriter = new OutputStreamWriter(outputstream);
    BufferedWriter bufferedwriter = new BufferedWriter(outputstreamwriter);

    bufferedwriter.write("test"+"\n");
    bufferedwriter.flush();
    bufferedwriter.close();

} catch (Exception exception) {
    exception.printStackTrace();
}

在上面的代码中,我使用了与信任库相同的密钥库文件。

在客户端使用与信任库相同的密钥库文件是个好主意吗?如果不是,我如何以安全的方式连接到服务器?

In the above code,i'm using the same keystore file as truststore.

不,你不是。您只使用信任库。如果您使用的是密钥库,则必须指定它:

System.setProperty("javax.net.ssl.keyStore", ...);        
System.setProperty("javax.net.ssl.keyStorePassword", ...);

你当然应该而不是对两者使用相同的文件。