-2

我正在使用以下握手代码连接到 dc bidden 服务器

System.setProperty("javax.net.ssl.keyStore",".p12 file path");
System.setProperty("javax.net.ssl.keyStorePassword",keystorePassword);
System.setProperty("javax.net.ssl.keyStoreType",""pkcs12"");

我可以使用此代码连接到第一台服务器,但对于下一个服务器,tomcat 忽略最近的属性集,因此我无法使用相同类型的 dc 投标服务器连接到下一个服务器。

提前致谢

4

1 回答 1

0

如果通过“连接 https URL”,您的具体意思是java.net.URL类和new java.net.URL("https://something") .openConnection()返回实现(子类)的类,javax.net.HttpsURLConnection这是我引用的两个示例:

static void SO49993912ExampleClientPKCS12 (String[] args) throws Exception {
    FileInputStream fis = new FileInputStream (args[0]);
    KeyStore ks = KeyStore.getInstance("PKCS12"); 
    ks.load (fis, args[1].toCharArray()); fis.close();
    KeyManagerFactory kf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
    kf.init (ks, args[1].toCharArray());
    SSLContext ctx = SSLContext.getInstance ("TLS"); 
    ctx.init (kf.getKeyManagers(), null /*default TM(s)*/, null);
    // method 1
    HttpsURLConnection conn1 = (HttpsURLConnection) new URL (args[2]).openConnection();
    conn1.setSSLSocketFactory(ctx.getSocketFactory());
    conn1.connect(); System.out.println (conn1.getResponseCode()); conn1.disconnect();
    // method 2
    HttpsURLConnection.setDefaultSSLSocketFactory(ctx.getSocketFactory());
    HttpsURLConnection conn2 = (HttpsURLConnection) new URL (args[2]).openConnection();
    conn1.connect(); System.out.println (conn2.getResponseCode()); conn2.disconnect();
}

然而,在 Java 中还有很多其他方式可以连接到 https(和其他)URL;如果您实际上意味着其他内容,则必须更具体。

于 2018-05-02T08:23:54.563 回答