Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.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中用SSL调用WS_Java_Ssl_Jks - Fatal编程技术网

在java中用SSL调用WS

在java中用SSL调用WS,java,ssl,jks,Java,Ssl,Jks,我使用此客户端连接到一个工作正常的web服务: WSCSI WSCS = new WSCSI("http://localhost:8080/ServiceV2/services/WSCSISoap?wsdl","WSCSI","WSCSISoap"); IScoring instance = new ScoringCFA(WSCS); assertEquals(true, instance.statusService()); 我需要使用SSL,因此我将url更改为: 并将其添加到VM选项中

我使用此客户端连接到一个工作正常的web服务:

WSCSI WSCS = new WSCSI("http://localhost:8080/ServiceV2/services/WSCSISoap?wsdl","WSCSI","WSCSISoap");
IScoring instance = new ScoringCFA(WSCS);

assertEquals(true, instance.statusService());
我需要使用SSL,因此我将url更改为:

并将其添加到VM选项中:

-Djavax.net.ssl.trustStore="C:\cacerts.jks"
('Keytool-list-keystore“C:\cacerts.jks',当我运行这个命令时,我看到我需要的证书在那里)

运行客户端时,出现以下错误:

java.security.cert.CertificateException: No name matching localhost found.)

听起来可能对您有用。

这可能是因为您使用的证书是针对特定主机名(www.myhost.com)颁发的。请尝试此解决方案。

但是请注意,该代码示例仅用于本地主机测试,一旦在适当的服务器上进行集成/组装测试,请将其删除。

非常感谢!现在,当我必须在生产中部署该项目时,我需要证书具有我尝试连接的域的名称?(这是代码之外的证书问题…?)如果我使用此“修复”部署客户端“,问题是可能我连接到未知主机?JMira-此“修复程序”不是修复程序,而是仅用于本地主机测试的“黑客程序”,您应该在投入生产之前删除该代码。是的,风险是您可能调用了不正确识别的主机(尽管“黑客程序”仅适用于作为主机名的“本地主机”)。在生产环境中,您尝试调用的URL必须与服务器标识的主机名相匹配,因此证书中的名称需要与您连接到的域相匹配。希望这能提供进一步的清晰度。