Java 创建web服务客户端时,没有主题替代名称出现异常
我想使用wsdl2java实用程序创建一个web服务客户端。 我必须通过SSL连接到此服务器 此wsdl如下所示:Java 创建web服务客户端时,没有主题替代名称出现异常,java,ssl,ssl-certificate,axis2,wsdl2java,Java,Ssl,Ssl Certificate,Axis2,Wsdl2java,我想使用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' > abcCertificat
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
当我尝试使用wsdl2java
创建web服务客户端时,它抛出异常:
我使用这些信息
.您似乎混淆了“导入”和“生成”证书 如果
openssl s_client
命令不生成证书,它将检索该服务器上正在使用的证书
之后使用的keytool-import
命令将证书按原样导入信任库。在那里使用-ext san=ip:xxx.xx.xx.xx
没有任何意义:您没有生成证书,只是导入了它
如果您控制着该服务器,则应该生成(或从其他地方获取证书)具有IP地址SAN(自)
如果您无法控制该服务器,请使用其主机名(前提是现有证书中至少有一个CN与该主机名匹配)
一般来说,直接将仅从这样的服务器获得的证书导入到您的信任存储中并不太好,因为您假设该特定连接未被篡改。我使用的
NoopHostnameVerifier
的可能副本,请查看我是否不在服务器的控制范围内,为了避免主题启动程序的问题,我可以做些什么?我在这里贴了一个我所做的描述-。
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
javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names present