gpt4 book ai didi

java - 带有Java自签名证书的PHP SoapClient

转载 作者:行者123 更新时间:2023-11-30 11:37:14 26 4
gpt4 key购买 nike

我们需要连接的其中一个 WS 有 PHP 示例代码。他们为我们签署了 CSR ...所以我们现在有用于身份验证的私钥和证书。

他们建议将私钥和签名证书放入一个 .pem 文件,并在 PHP 中使用如下代码:

$client = new SoapClient('https://www.example.com/api/server.php?wsdl', array('local_cert' => "custom-pc.pem", "trace"=>1));
$result = $client->Login();

而且效果很好。

但我们使用的是 Java,这里没有 PHP 专家 - 所以我将 PRIVATE KEY 和 CERTIFICATE 导入到 cacerts(导出到 PKCS12,然后合并 keystore )。

openssl pkcs12 -export -in signed.pem -inkey server.key -out signed.p12 -name custom -CAfile ca.crt -caname root
sudo keytool -importkeystore -deststorepass changeit -destkeypass changeit -destkeystore /Library/Java/JavaVirtualMachines/jdk1.7.0_06.jdk/Contents/Home/jre/lib/security/cacerts -srckeystore signed.p12 -srcstoretype PKCS12 -srcstorepass changeit -alias custom

但是,运气不好 :(

总是有异常:

javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1977)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1093)
at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:884)
at sun.security.ssl.AppInputStream.read(AppInputStream.java:102)

知道我们做错了什么吗?

最佳答案

javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure
这通常在服务器无法访问时遇到。可能是防火墙问题?
您可以使用 java -Djavax.net.debug=ssl 运行您的客户端或通过 wireshark 查看握手以了解问题出在哪里

关于java - 带有Java自签名证书的PHP SoapClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14127891/

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