gpt4 book ai didi

java - Java 和 Tomcat Web 服务中的 SSL 握手问题

转载 作者:行者123 更新时间:2023-11-30 05:06:12 25 4
gpt4 key购买 nike

我必须使用我的 Java Web 应用程序(在 Tomcat 上运行)在 Axis 中完成的 Web 服务。制作 Web 服务的公司使用 HTTPS 和自签名证书进行测试。

我已经运行 Netbeans 向导来生成基于 WSDL 的 Web 服务,并且操作正确。如果我使用浏览器进入 Web 服务的网站,我会因 SSL 证书而收到警告,并且我必须创建异常(exception)。

当尝试运行我的代码时,在建立 SSL 连接时出现异常。异常(exception)情况是:

1.

com.sun.xml.ws.client.ClientTransportException: HTTP transport error: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

有时(不更改代码)

2.

com.sun.xml.ws.client.ClientTransportException: HTTP transport error: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

我想我必须将证书合并到 Java VM 和/或 Tomcat 中,并且还告诉我忽略这不是受信任的来源。

如何做到这一点?如何正确使用这个安全的网络服务?

如果我提供的信息不够,请询问更多。

谢谢

埃兹奎尔

更新:

我已经尝试过这两件事,都没有成功,异常(exception)情况是相同的。

选项 1)

System.setProperty("javax.net.ssl.trustStore","/home/serverapp/BSS-cert.p12");
System.setProperty("javax.net.ssl.trustStorePassword","password");
System.setProperty("javax.net.ssl.trustStoreType","PKCS12");

选项 2) KeyStore ks = KeyStore.getInstance( "pkcs12"); ks.load( new FileInputStream("/home/serverapp/BSS-cert.p12"), "密码".toCharArray() );

    KeyStore jks = KeyStore.getInstance( "JKS" );
jks.load( null );


KeyManagerFactory kmf = KeyManagerFactory.getInstance( "SunX509" );
kmf.init( ks, "f0p6k9n2".toCharArray() );

TrustManagerFactory tmf = TrustManagerFactory.getInstance( "SunX509" );
tmf.init( jks );

SSLContext ctx = SSLContext.getInstance( "TLS" );
ctx.init( kmf.getKeyManagers(), tmf.getTrustManagers(), null );

此外,由于我认为问题可能出在 Web 服务上,因此我尝试建立 HTTPS 连接,但在打开输入流时失败并出现相同的错误。

   String httpsURL = "https://serverurl:443/theservice?wsdl";
URL myurl = new URL(httpsURL);
HttpsURLConnection con = (HttpsURLConnection)myurl.openConnection();
InputStream ins = con.getInputStream(); //Exception here!
InputStreamReader isr = new InputStreamReader(ins);
BufferedReader in = new BufferedReader(isr);

最佳答案

关于java - Java 和 Tomcat Web 服务中的 SSL 握手问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5011792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com