如何使用Java中的JKS文件建立SSL连接

时间:2015-10-22 09:25:12

标签: java ssl ssl-certificate x509certificate client-certificates

尝试使用以下两种方法从Java建立连接SSL,尝试实现其中一种方法。这两种方法都有错误,请找到代码和错误。

我们已添加https://github.com/gpotter2/SSLKeystoreFactories插件来建立连接

方法1

- SSLSocket s = SSLSocketKeystoreFactory.getSocketWithCert(neHost, Integer.parseInt(port), 
Main.class.getResourceAsStream(Utilities.readGRCParameter("KeyStore", macro)), 
Utilities.readGRCParameter("KeyStore_password", macro)); 
s.startHandshake(); httpsConn = (HttpsURLConnection) this.httpURL.openConnection(); 
String authString = this.username + ":" + this.password; 
byte[] authEncBytes = Base64.encodeBase64(authString.getBytes()); 
String authStringEnc = new String(authEncBytes); httpsConn.setRequestProperty("Authorization", "Basic " + authStringEnc);
StringBuffer responseHeader = getHttpResponseHeader(httpConn);

错误

  

Thread-2,处理异常:java.lang.RuntimeException:意外   错误:java.security.InvalidAlgorithmParameterException :.   trustAnchors参数必须是非空的Thread-2,SEND TLSv1 ALERT:   致命的,描述= internal_error线程-2,写:TLSv1警报,   长度= 2 [原始写入]:长度= 7 0000:15 03 01 00 02 02 50 ...... P.   Thread-2,名为closeSocket()7900 SOAP910一般错误:   java.lang.RuntimeException:意外错误:   java.security.InvalidAlgorithmParameterException:trustAnchors   参数必须为非空

方法2

SSLServerSocket s = SSLServerSocketKeystoreFactory.getServerSocketWithCert(Integer.parseInt(port), Main.class.getResourceAsStream(Utilities.readGRCParameter("KeyStore", macro)), Utilities.readGRCParameter("KeyStore_password", macro)); 
s.setEnabledCipherSuites(s.getSupportedCipherSuites()); 
SSLSocket ss = (SSLSocket) s.accept(); 
ss.startHandshake(); httpsConn = (HttpsURLConnection) this.httpURL.openConnection(); 
String authString = this.username + ":" + this.password; byte[] authEncBytes = Base64.encodeBase64(authString.getBytes()); 
String authStringEnc = new String(authEncBytes);
 httpsConn.setRequestProperty("Authorization", "Basic " + authStringEnc); 
StringBuffer responseHeader = getHttpResponseHeader(httpConn);

获取错误

trigger seeding of SecureRandom
  

完成播种SecureRandom忽略不可用的密码套件:   TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA忽略不可用的密码套件:   TLS_DHE_RSA_WITH_AES_256_CBC_SHA忽略不可用的密码套件:   TLS_ECDH_RSA_WITH_AES_256_CBC_SHA忽略不可用的密码套件:   TLS_DHE_DSS_WITH_AES_256_CBC_SHA256忽略不可用的密码套件:   TLS_DHE_RSA_WITH_AES_256_CBC_SHA256忽略不可用的密码套件:   TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384忽略不可用的密码   套件:TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384忽略不可用   密码套件:TLS_RSA_WITH_AES_256_CBC_SHA256忽略不可用   密码套件:TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA忽略   不可用的密码套件:TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384   忽略不可用的密码套件:TLS_DHE_DSS_WITH_AES_256_CBC_SHA   忽略不可用的密码套件:   TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384忽略不可用的密码   套件:TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA忽略不可用的密码   套件:TLS_RSA_WITH_AES_256_CBC_SHA忽略不可用的密码套件:   TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA忽略不可用的密码套件:   TLS_DHE_RSA_WITH_AES_256_CBC_SHA忽略不可用的密码套件:   TLS_ECDH_RSA_WITH_AES_256_CBC_SHA忽略不可用的密码套件:   TLS_DHE_DSS_WITH_AES_256_CBC_SHA256忽略不可用的密码套件:   TLS_DHE_RSA_WITH_AES_256_CBC_SHA256忽略不可用的密码套件:   TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384忽略不可用的密码   套件:TLS_ECDH_anon_WITH_AES_256_CBC_SHA忽略不可用的密码   套件:TLS_DH_anon_WITH_AES_256_CBC_SHA忽略不可用的密码   套件:TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384忽略不可用   密码套件:TLS_DH_anon_WITH_AES_256_CBC_SHA256忽略不可用   密码套件:TLS_RSA_WITH_AES_256_CBC_SHA256忽略不可用   密码套件:TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA忽略   不可用的密码套件:TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384   忽略不可用的密码套件:TLS_DHE_DSS_WITH_AES_256_CBC_SHA   忽略不可用的密码套件:   TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384忽略不可用的密码   套件:TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA忽略不可用的密码   套件:TLS_RSA_WITH_AES_256_CBC_SHA忽略不可用的密码套件:   TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA忽略不可用的密码套件:   TLS_DHE_RSA_WITH_AES_256_CBC_SHA忽略不可用的密码套件:   TLS_ECDH_RSA_WITH_AES_256_CBC_SHA忽略不可用的密码套件:   TLS_DHE_DSS_WITH_AES_256_CBC_SHA256忽略不可用的密码套件:   TLS_DHE_RSA_WITH_AES_256_CBC_SHA256忽略不可用的密码套件:   TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384忽略不可用的密码   套件:TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384忽略不可用   密码套件:TLS_RSA_WITH_AES_256_CBC_SHA256忽略不可用   密码套件:TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA忽略   不可用的密码套件:TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384   忽略不可用的密码套件:TLS_DHE_DSS_WITH_AES_256_CBC_SHA   忽略不可用的密码套件:   TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384忽略不可用的密码   套件:TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA忽略不可用的密码   套件:TLS_RSA_WITH_AES_256_CBC_SHA $ CTRL $恐慌 - 流程终止。

请帮助我使用其中任何一种方法,或提供任何建议来完成ssl连接。

0 个答案:

没有答案