如何将主题alernative名称添加到ssl证书?

Sap*_*ire 44 ssl keytool ssl-certificate x509certificate

我正在使用openssl来创建自签名证书.我使用我生成的证书收到此错误:javax.net.ssl.SSLHandshakeException:java.security.cert.CertificateException:没有主题替代名称

有没有人知道如何在创建证书时指定"主题备用名称"?这就是我生成密钥库的方式:

sudo $JAVA_HOME/bin/keytool -genkey -dname "CN=192.168.x.xxx, OU=I, O=I, L=T, ST=On, C=CA" -alias tomcat -validity 3650 -keyalg RSA -keystore /root/.keystore -keypass abcd -storepass abcd
Run Code Online (Sandbox Code Playgroud)

要生成密钥:

 openssl s_client -connect 192.168.x.xxx:8443 2>/dev/null
Run Code Online (Sandbox Code Playgroud)

请帮忙!谢谢!

Bru*_*uno 63

虽然这个问题更具体地涉及Subject Alt中的IP地址.名称,命令类似(使用DNS主机名IP条目和IP地址条目).

引用自己:

如果您正在使用keytool,从Java 7开始,keytool可以选择包含主题备用名称(请参阅-ext文档中的表格):您可以使用-ext san = dns:www.example.com或-ext SAN = IP:10.0.0.1

请注意,您只需要Java 7 keytool即可使用此命令.准备好密钥库后,它应该与以前版本的Java一起使用.

(这个答案的其余部分也提到了如何使用OpenSSL执行此操作,但它似乎并不是您正在使用的.)

  • 不要避免这种检查.正如我所说,你只需要Java 7来使用这个`keytool`命令.一旦完成,您应该能够将JKS文件与Java 6(或更低版本)安装一起使用(它甚至不必在同一台机器上).或者,您可以使用OpenSSL生成此(自签名)证书(命令和设置可能有点复杂):您可以将使用OpenSSL生成的PEM密钥/证书转换为`.p12`文件并直接使用它从Java作为密钥库使用密钥库类型`PKCS12`.您也可以使用主机名而不是IP地址:您可以使用CN. (3认同)

小智 23

可以使用keytool附加参数指定IP和DNS -ext SAN=dns:abc.com,ip:1.1.1.1

例:

keytool -genkeypair -keystore <keystore> -dname "CN=test, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown" -keypass <keypwd> -storepass <storepass> -keyalg RSA -alias unknown -ext SAN=dns:test.abc.com,ip:1.1.1.1
Run Code Online (Sandbox Code Playgroud)

  • 请注意,上述命令不能**创建CSR.Java的keytool在密钥存储区中以自签名证书的形式创建密钥对,并且SAN属性进入该自签名证书.如果要使用SAN属性发出CSR,则需要将相同的-ext参数传递给"keytool -certreq".有趣的是,keytool的自我文档帮助**不包括-ext选项,尽管keytool处理-ext就好了. (5认同)

小智 6

生成CSR时,可以再次指定-ext属性以将其插入CSR中

keytool -certreq -file test.csr -keystore test.jks -alias testAlias -ext SAN=dns:test.example.com
Run Code Online (Sandbox Code Playgroud)

此处的完整示例:如何使用keytool使用SAN创建CSR