Keytool 自签名证书(PKCS12)
Keytool
自签名证书(PKCS12
)
一、生成证书
示例命令:
keytool -genkey -alias gateway -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore scg-keystore.p12 -validity 3650 -keypass <keypass> -storepass <storepass>
参数说明:
-genkey 生成秘钥
-alias 别名
-keyalg 秘钥算法
-keysize 秘钥长度
-validity 有效期(天)
-keystore 生成秘钥库的存储路径和名称
-keypass 秘钥口令
-storepass 秘钥库口令
-dname 拥有者信息,CN:姓名;OU:组织单位名称;O:组织名称;L:省/市/自治区名称;C:国家/地区代码
二、将证书导入JDK
信任库
- 由于不能直接将
PKCS12
格式的证书库导入,必须先把客户端证书导出为一个单独的CER文件,使用如下命令并输入秘钥库口令:
keytool -export -alias <alias> -keystore scg-keystore.p12 -storetype PKCS12 -file scg-keystore.cer
- 根据您从您使用的证书颁发机构收到的证书,您可能需要将中间证书和/或根证书导入
cacerts
文件。使用以下语法导入证书:
keytool -import -alias <alias> -keystore <cacerts_file> -trustcacerts -file <certificate_filename>
可以使keytool
与 Java 安装一起使用,并且应该在$JAVA_HOME/bin
. Java 密钥库位于$JAVA_HOME/lib/security/cacerts
或$JAVA_HOME/jre/lib/security/cacerts
取决于您是否安装了 JDK
或 JRE
。
如果使用 Java 9 或更高版本,则无需知道确切位置。您可以将该-cacerts
选项用作快捷方式。
Java9 +
因此,对于 Java 9(又名 Java 1.9)或更高版本,只需使用
keytool -importcert -trustcacerts -cacerts -file <file> -alias <alias>
较早的 Java 版本
对于 Java 8(又名 1.8)或更早版本,您必须像这样指定密钥库位置
keytool -importcert -trustcacerts -keystore $JAVA_HOME/lib/security/cacerts -file <file> -alias <alias>
对于 Java 5(又名 1.5)或更早版本,该-importcert
选项不存在。它被称为-import
,但在其他方面是相同的。所以用
keytool -import -trustcacerts -keystore $JAVA_HOME/lib/security/cacerts -file <file> -alias <alias>
注
导入jdk
信任库时输入的秘钥库密钥为 changeit
-
查看受信任的证书
keytool -list -v -keystore <keystorePath> # 例如windows上查看jdk11的密钥信任库 .\keytool.exe -list -v -keystore 'C:\Program Files\Java\jdk-11.0.14\lib\security\cacerts'