【发布时间】:2011-08-24 17:23:50
【问题描述】:
我想创建一个设置了 SAN 字段(主题备用名称)的自签名证书,但 Java keytool 工具似乎不支持这一点。我最好的选择是什么?这是供 Java 使用的,因此即使使用非 Java 工具创建证书,密钥库仍必须与 JKS 格式匹配。
【问题讨论】:
我想创建一个设置了 SAN 字段(主题备用名称)的自签名证书,但 Java keytool 工具似乎不支持这一点。我最好的选择是什么?这是供 Java 使用的,因此即使使用非 Java 工具创建证书,密钥库仍必须与 JKS 格式匹配。
【问题讨论】:
您可以通过在创建 CSR 时将 SAN 功能添加到命令中来做到这一点:
创建密钥库:
keytool -genkey -alias SANTEST -keyalg RSA -keystore SANTEST.jks -keysize 2048
发布 CSR:
keytool -certreq -alias SANtest01 -keystore SANTEST.jks -ext san=dns:san.yourdomain.com -keysize 204
http://download.java.net/jdk8/docs/technotes/tools/solaris/keytool.html
【讨论】:
您只能使用 JDK7 或更高版本的 keytool 执行此操作。 OpenJDK 7 有。
【讨论】:
听起来获取更新的 keytool 可能最简单,但您也可以使用 openssl 和 import that into keytool 创建具有备用名称集的证书。
【讨论】:
JDK7 建议不错。与此同时,我可以使用 Bouncy Castle 库来做到这一点。以编程方式而不是使用 keytool 来实现这一点很有教育意义,并且以 jks 格式获取商店很简单。
【讨论】:
您可以使用http://Ssltools.com/manager 创建 San 证书并将其导出,然后将其导入密钥库。
keytool -importkeystore -deststorepass changeit -destkeypass changeit -destkeystore my-keystore.jks -srckeystore cert-and-key.p12 -srcstoretype PKCS12 -srcstorepass cert-and-key-password -alias 1
【讨论】: