gpt4 book ai didi

java - 创建 Web 服务客户端时没有主题备用名称出现异常

转载 作者:行者123 更新时间:2023-11-30 09:31:44 25 4
gpt4 key购买 nike

我想使用 wsdl2java 实用程序创建一个 Web 服务客户端。我必须通过 SSL 连接到此服务器

这个 wsdl 看起来像这样:

https://xxx.xx.xx.xx:8443/api/wsdl/xxxxxxx.wsdl

我使用以下方法生成了证书:

openssl s_client -connect xxx.xx.xx.x:8443 </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > abcCertificate.pem

并使用以下方法将其添加到 keystore :

keytool -import -noprompt -trustcacerts -alias testcert -file abcCertificate.pem -keystore /usr/java/jdk1.7.0_06/jre/lib/security/cacerts -ext san=ip:xxx.xx.xx.xx

当我尝试使用 wsdl2java 创建 web 服务 客户端时,它抛出异常:

javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names present

我使用这些信息 from this link .

最佳答案

您似乎对“导入”和“生成”证书感到困惑。

您的 openssl s_client 命令不会生成证书,它会检索该服务器上正在使用的证书。

您随后使用的 keytool -import 命令将该证书原样导入到您的信任库中。在那里使用 -ext san=ip:xxx.xx.xx.xx 没有意义:您没有生成证书,您只是导入它。

如果您控制该服务器,则应使用 IP 地址 SAN(自 Java follows the specification strictly on this 起)生成(或从其他地方获取证书)。

如果您无法控制该服务器,请使用其主机名(前提是现有证书中至少有一个 CN 与该主机名匹配)。

一般来说,将仅从这样的服务器获得的证书直接导入到您的信任库中并不好,因为您假设该特定连接未被篡改。

关于java - 创建 Web 服务客户端时没有主题备用名称出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12792586/

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