Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-找不到合适的证书-在没有客户端身份验证的情况下继续_Java_Ssl_Https_Certificate_Tls1.2 - Fatal编程技术网

Java-找不到合适的证书-在没有客户端身份验证的情况下继续

Java-找不到合适的证书-在没有客户端身份验证的情况下继续,java,ssl,https,certificate,tls1.2,Java,Ssl,Https,Certificate,Tls1.2,我正在尝试创建一个简单的restful程序来从java调用API。它将是独立的java程序只。密钥没有问题,因为我可以通过soapUI直接调用API Request request = new Request(); ..... String jsonRequest = gsonObj.toJson(request); String url="..../ethoca-rest/rest/api/v1/transactions/batch"; System.setProperty

我正在尝试创建一个简单的restful程序来从java调用API。它将是独立的java程序只。密钥没有问题,因为我可以通过soapUI直接调用API

Request request = new Request();
.....
String jsonRequest = gsonObj.toJson(request);
String url="..../ethoca-rest/rest/api/v1/transactions/batch";
System.setProperty("javax.net.ssl.trustStore", "C:\\cacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
System.setProperty("javax.net.ssl.keyStore", "C:\\key.pfx");
System.setProperty("javax.net.ssl.keyStorePassword","1234");         
System.setProperty("javax.net.ssl.keyStoreType","PKCS12");
System.setProperty("javax.net.debug","ssl,handshake");
HttpClient client = HttpClients.createDefault();
HttpPost httpRequest = new HttpPost(url);
httpRequest.setEntity(new StringEntity(gsonObj.toJson(request), ContentType.APPLICATION_JSON));
HttpResponse response = client.execute(httpRequest);
下面是SSL日志

    *** CertificateRequest
Cert Types: RSA, DSS, ECDSA
Supported Signature Algorithms: SHA512withRSA, Unknown (hash:0x6, signature:0x2), SHA512withECDSA, SHA384withRSA, Unknown (hash:0x5, signature:0x2), SHA384withECDSA, SHA256withRSA, SHA256withDSA, SHA256withECDSA, Unknown (hash:0x3, signature:0x1), Unknown (hash:0x3, signature:0x2), Unknown (hash:0x3, signature:0x3), SHA1withRSA, SHA1withDSA, SHA1withECDSA
Cert Authorities:
<Empty>
update handshake state: unknown[13]
upcoming handshake states: server_hello_done[14]
upcoming handshake states: client certificate[11](optional)
upcoming handshake states: client_key_exchange[16]
upcoming handshake states: certificate_verify[15](optional)
upcoming handshake states: client change_cipher_spec[-1]
upcoming handshake states: client finished[20]
upcoming handshake states: server change_cipher_spec[-1]
upcoming handshake states: server finished[20]
check handshake state: server_hello_done[14]
update handshake state: server_hello_done[14]
upcoming handshake states: client certificate[11](optional)
upcoming handshake states: client_key_exchange[16]
upcoming handshake states: certificate_verify[15](optional)
upcoming handshake states: client change_cipher_spec[-1]
upcoming handshake states: client finished[20]
upcoming handshake states: server change_cipher_spec[-1]
upcoming handshake states: server finished[20]
*** ServerHelloDone
Warning: no suitable certificate found - continuing without client authentication
*** Certificate chain
<Empty>
***
***认证请求
证书类型:RSA、DSS、ECDSA
支持的签名算法:SHA512 WithRSA,Unknown(哈希:0x6,签名:0x2),SHA512 WithECDSA,SHA384 WithRSA,Unknown(哈希:0x5,签名:0x2),SHA384 WithECDSA,SHA256 WithDSA,SHA256 WithECDSA,Unknown(哈希:0x3,签名:0x1),Unknown(哈希:0x3,签名:0x3),SHA1 WithRSA,SHA1withDSA,SHA1与ECDSA
核证机关:
更新握手状态:未知[13]
即将到来的握手状态:服务器\你好\完成[14]
即将到来的握手状态:客户端证书[11](可选)
即将到来的握手状态:客户端密钥交换[16]
即将到来的握手状态:证书验证[15](可选)
即将到来的握手状态:客户端更改\u密码\u规范[-1]
即将到来的握手状态:客户端已完成[20]
即将到来的握手状态:服务器更改\u密码\u规范[-1]
即将到来的握手状态:服务器已完成[20]
检查握手状态:服务器\你好\完成[14]
更新握手状态:服务器\你好\完成[14]
即将到来的握手状态:客户端证书[11](可选)
即将到来的握手状态:客户端密钥交换[16]
即将到来的握手状态:证书验证[15](可选)
即将到来的握手状态:客户端更改\u密码\u规范[-1]
即将到来的握手状态:客户端已完成[20]
即将到来的握手状态:服务器更改\u密码\u规范[-1]
即将到来的握手状态:服务器已完成[20]
***海龙石
警告:找不到合适的证书-在没有客户端身份验证的情况下继续
***证书链
***

Hi Paul,您尝试连接的服务器是否正确安装了证书?证书的公共部分是JVM中所需要的,以便能够连接到它。试着从explorer下载它,将它转换成jks,然后将它添加到您的信任库中,我想这就是您所需要的。