Java SSL证书-不存在受试者备选名称

Java SSL证书-不存在受试者备选名称,java,ssl,ssl-certificate,cas,Java,Ssl,Ssl Certificate,Cas,我试图生成自签名SSL证书,但在cas sso中出现以下错误: java.lang.RuntimeException: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names present 我使用的是open jdk 7,并使用了以下命令: keytool-genkey-alias axyz-keypass changeit-keyal

我试图生成自签名SSL证书,但在cas sso中出现以下错误:

java.lang.RuntimeException: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names present
我使用的是open jdk 7,并使用了以下命令:

keytool-genkey-alias axyz-keypass changeit-keyalg RSA-ext san=ip:192.168.1.4

keytool-export-alias axyz-keypass changeit-file axyz.crt

keytool-import-file axyz.crt-alias axyz-keystore/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/security/cacerts

主机名:vaapdev 内部ip地址:192.168.1.4 公共IP地址:108.51.62.36

我不确定哪里出了问题,我尝试了192.168.1.4和108.51.62.36 in-ext
尝试不使用-ext参数。

使用主机名时,可能会退回到服务器证书的使用者DN中的公用名称,而不是使用使用者替代名称

使用IP地址时,证书中必须有一个使用者备选名称条目(类型为IP地址,而不是DNS名称)


您将在此处找到有关规范和如何生成此类证书的更多详细信息:

您可以在此处执行两项操作,即更改自签名证书中的CN名称以与您运行应用程序的域相匹配(如果是localhost,则CN名称应为localhost),或者添加所述的主题alt名称下面

请看这个

上述错误意味着您的JKS文件缺少您尝试访问应用程序所需的域。您将需要使用Open SSL和密钥工具添加多个域

  • 将openssl.cnf复制到当前目录中
  • echo'[subject\u alt\u name]>>openssl.cnf
  • echo'subjectAltName=DNS:example.mydomain1.com,DNS:example.mydomain2.com,DNS:example.mydomain3.com,DNS:localhost'>>openssl.cnf
  • openssl-req-x509-nodes-newkey rsa:2048-config openssl.cnf-extensions subject\u alt\u name-keyout private.key-out self-signed.pem-out subj'/C=gb/ST=edinburgh/L=edinburgh/O=mygroup/OU=service/CN=www.example.com/emailAddress=postmaster@example.com“-365天
  • 将公钥(.pem)文件导出为PKS12格式。这将提示您输入密码

    openssl pkcs12 -export -keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES -export -in
    self-signed.pem -inkey private.key -name myalias -out keystore.p12
    
  • 从自签名PEM(密钥库)创建a.JKS

  • 从上述密钥库或JKS文件生成证书

    keytool -export -keystore keystore.jks -alias myalias -file selfsigned.crt
    
  • 由于上述证书是自签名的,且未经CA验证,因此需要将其添加到Truststore中(对于MAC,请在下面的位置找到Cacerts文件,对于Windows,请查找JDK的安装位置。)

  • 原始答案张贴

    keytool -export -keystore keystore.jks -alias myalias -file selfsigned.crt
    
    sudo keytool -importcert -file selfsigned.crt -alias myalias -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/jre/lib/security/cacerts