我正在使用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)
请帮忙!谢谢!
我想问一下是否可以创建包含SAN记录的CSR.
我创建了密钥库
keytool -genkeypair -keyalg RSA -keysize 2048 -alias testAlias -ext SAN=dns:test.example.com -keystore test.jks -storetype JKS -dname "CN=test"
Run Code Online (Sandbox Code Playgroud)
我可以使用keytool检查SAN是否在密钥库中
keytool -list -v -keystore test.jks
Run Code Online (Sandbox Code Playgroud)
和输出的相关部分是
#1: ObjectId: 2.5.29.17 Criticality=false
SubjectAlternativeName [
DNSName: test.example.com
]
Run Code Online (Sandbox Code Playgroud)
然后我使用keytool创建了CSR:
keytool -certreq -file test.csr -keystore test.jks -alias testAlias
Run Code Online (Sandbox Code Playgroud)
但在CSR中有关于缺少SAN的信息.
如何检查:
keytool -printcertreq -file test.csr -v
Run Code Online (Sandbox Code Playgroud)
正确地应该有类似的东西
Extension Request:
#1: ObjectId: 2.5.29.17 Criticality=false
SubjectAlternativeName [
DNSName: test.example.com
]
Run Code Online (Sandbox Code Playgroud)
我错过了一些选择certreq
吗?