如何使用keytool使用SAN创建CSR

Bet*_*sta 9 certificate keytool

我想问一下是否可以创建包含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吗?

小智 20

生成CSR时,需要再次指定-ext属性

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

  • 使用多个DNS甚至IP也是可能的,例如:-ext"san = dns:test.example.com,dns:test.example.net,dns:test2.example.com,ip:XX.XXX.XX.XXX"创建CSR文件对我有用...只需要获取我的证书以确保工作正常 (3认同)