根据RFC 2818(第3.1节)RFC 2459 - 似乎允许将DNS名称条目列表作为SAN名称的一部分并涵盖多个域:
SubjectAlternativeName [
DNSName: localhost
DNSName: *.i.mydomain.net
DNSName: *.mydomain.net
]
使用Java keytool
应用程序 - 它似乎不允许SAN条目在DNS名称中包含通配符。有谁知道我是否可以使用一些技巧(!)来做到这一点?
答案 0 :(得分:2)
我过去遇到过这个问题并通过使用OpenSSL生成CSR并且只在必要时使用keytool(导入和导出证书和密钥)来解决这个问题。
编辑:这是我所做的博士有一个req.cfg
文件,如下所示:
[req]
req_extensions = v3_req
[v3_req]
subjectAltName = @san
[san]
DNS.1 = *.mydomain.com
DNS.2 = mydomain.com
然后运行:
$ openssl req -new -newkey rsa:2048 -sha256 -nodes -out keypair.csr -keyout keypair.key -config req.cfg
现在您已拥有证书签名请求和私钥,您可以将CSR发送到CA或使用OpenSSL使用刚刚生成的keypair.csr
对证书进行自签名。但是,如果您这样做,我们假设您获得了我们称之为mycert.crt
的证书
您现在已经完成了很多工作,但棘手的部分是您现在需要在尝试导入JKS密钥库之前将证书密钥对转换为PKCS12密钥库。
openssl pkcs12 -export -name mycertname -in mycert.crt -inkey keypair.key -out keystore.p12
keytool -importkeystore -destkeystore keystore.jks -srckeystore keystore.p12 -srcstoretype pkcs12 -alias mycertname