使用PKCS12证书的Java客户端握手

时间:2018-04-24 05:18:50

标签: java ssl handshaking

我使用以下握手代码连接到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 bidden服务器连接到下一个服务器。

提前致谢

1 个答案:

答案 0 :(得分:0)

如果通过“连接https网址”'你的意思是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(); } 的实现(子类)这里是我引用的两个例子:

public class MobileKeyViewData
{
    [Step(StepName="PersonalData")]
    public int PhoneNumber { get; set; }

    [Step(StepName="PersonalData")]
    public string Email { get; set; }

     [Step(StepName="Confirmation")]
    public int Code{ get; set; }
}

然而,在Java中有很多其他方法可以连接到https(和其他)URL;如果你真的想要别的东西,你必须更具体。