javax.net.ssl.SSLHandshakeException:java.security.cert.CertificateException:没有主题替代名称
基本上,我有一个测试服务器(基于Linux),公共IP机器人没有公共主机名。 所以我正在尝试使用IP地址为它创建ssl证书。 这样我的Java应用程序就可以使用IP地址访问另一个应用程序:例如:
https://210.10.10.10:8443/abc
我在下面发帖说明: 如何解析SSL证书服务器名称/我可以使用keytool添加备用名称吗?
我确实尝试了两种方法,以避免这种exception,但非工作。 我得到了同样的错误。
-
我尝试编辑“openssl.cnf”并添加:
[req] req_extensions = v3_req [ v3_req ] # Extensions to add to a certificate request subjectAltName=IP:210.10.10.10 # or subjectAltName=DNS:www.example.com basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment
2.还尝试使用Java 1.7 keytool:
就像创建(在具有java 1.7的Windows中创建并将所有证书和jks文件复制到Linx服务器env,在java 1.6上运行):
keytool -importkeystore -deststorepass changeit -destkeypass changeit -destkeystore myServerKeystore2.jks -srckeystore serverCertAsPK12.p12 -srcstoretype PKCS12 -alias servercertificate -ext SAN=ip:210.10.10.10
我的环境设置如下:服务器是Linux(CentOS),Tomcat 6,JDK 1.6,应用程序是JAVA应用程序使用Openssl创建所有证书和JKS
仍然获取java.security.cert.CertificateException:没有主题替代名称exception。
然后我尝试使用Windows机器上的keytool(在Java 1.7环境中)创建JKS文件并导入到默认的javastore文件(cacerts)中,并将这些JKS和cacert文件导出到Linux服务器。
然后还得到java.security.cert.CertificateException:没有主题替代名称exception。
——-下面于6月19日更新布鲁诺的答复———
下面是我的tomcat server.xml设置:
“cacerts.jks”是我的客户端密钥库文件,“myServerKeystore2.jks”是我的服务器密钥库文件。
我已按照本教程的每一步使用openssl创建ssl证书。
请帮忙。