有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javax。网ssl。SSLHandshakeException:java。安全cert.CertificateException:不存在主题替代名称

基本上,我有一个测试服务器(基于Linux),带有一个公共IP bot,没有公共主机名。所以我尝试使用IP地址为它创建ssl证书。因此,我的Java应用程序可以使用IP地址访问另一个应用程序:例如:

https://210.10.10.10:8443/abc

我遵循以下帖子: How are SSL certificate server names resolved/Can I add alternative names using keytool?

我确实尝试了建议的两种方法来避免此异常,但non正在工作。我也犯了同样的错误

  1. 我尝试编辑“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
    

二,。 并尝试使用Java 1.7 keytool:

类似于创建(在具有java 1.7的windows中创建,并将所有证书和jks文件复制到在java 1.6上运行的Linx server env):

    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)、Tomcat6、JDK1.6,应用程序是JAVA应用程序 使用Openssl创建所有证书和JK

仍在使用java。安全cert.CertificateException:没有主题替代名称例外

然后,我尝试在windows机器上创建JKS文件,并使用keytool(在Java1.7env中)将其导入默认javastore文件(cacerts),然后将这些JKS和cacert文件导出到Linux服务器

然后还得到了java。安全cert.CertificateException:没有主题替代名称例外

------6月19日回复布鲁诺后更新如下---------

下面是我的tomcat服务器。xml设置:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
           maxThreads="150" scheme="https" secure="true"
           truststoreFile="/usr/local/apache-tomcat-6.0.37/conf/cacerts.jks" truststorePass="changeit"
           keystoreFile="/usr/local/apache-tomcat-6.0.37/conf/myServerKeystore2.jks" keystorePass="changeit"
           clientAuth="false" sslProtocol="TLS" />

其中,“cacerts.jks”是我的客户机密钥库文件,“myServerKeystore2.jks”是我的服务器密钥库文件

我按照this tutorial上的每个步骤使用openssl创建ssl证书

请帮忙


共 (0) 个答案