Tips:
- 使用 ketytool --help 获取所有可用命令
- 使用 keytool -command_name -help 来获取 command_name 的用法
- 常用参数
- -genkey 产生密钥对(genkeypair 简写);表示要创建一个新的密钥;alias和keystore缺省时,在用户主目录中创建一个”.keystore”文件,且别名为mykey,包含用户的公钥、私钥证书 -alias 产生证书别名,和keystore关联的唯一别名,不区分大小写(默认 `mykey`) -keystore 指定密钥库文件的名称(默认在用户主目录创建证书库) -keyalg 指定密钥的算法(可选择密钥算法:`RSA`、`DSA`、`EC`,默认`DSA`) -keysize 指定密钥长度(与keyalg默认对应关系:`RSA=2048`、`DSA=2048`、`EC=256`) -sigalg 指定签名算法(MD5和 SHA1的签名算法已经不安全) -validity 指定证书有效期天数(默认 `90`天) -storepass 指定密钥库口令,推荐与keypass一致(获取keystore信息所需的密码) -storetype 指定密钥库的类型,可用类型为:JKS、PKCS12等。(jdk9以前,默认为JKS。自jdk9开始,默认为PKCS12) -keypass 指定别名条目口令(私钥的密码) -dname 指定证书发行者信息(其中 CN 要和服务器的域名相同,本地测试则使用localhost,其他的可以不填) -list 显示密钥库中的证书信息 -v 详细输出,显示密钥库中的证书详细信息 -file 指定导出或导出的文件名 -export 将别名指定的证书导出到文件(exportcert 简写) -import 将已签名数字证书导入密钥库(importcert 简写) -printcert 查看导出的证书信息 -delete 删除密钥库中某条目 -keypasswd 修改密钥库中指定条目口令 -storepasswd 修改keystore口令 -ext X.509 扩展
- 所有密码长度必须大于或等于 6 位
- keyalg 指定加密算法;可以选择的密钥算法有:RSA、DSA(默认)、EC。
- sigalg 指定签名算法(MD5和 SHA1的签名算法已经不安全):
- keyalg = RSA 时,签名算法有:MD5withRSA、SHA1withRSA、SHA256withRSA(默认)、SHA384withRSA、SHA512withRSA
- keyalg = DSA 时,签名算法有:SHA1withDSA、SHA256withDSA(默认)
- dname 表明了密钥的发行者身份(Distinguished Names)
- CN = 域名或IP(Common Name) 注:生成服务器证书时,CN要和服务器的域名相同,本地测试则使用localhost,其他的可以不填(客户端证书无要求)
- OU = 组织单位名称(Organization Unit)
- O = 组织名称(Organization Name)
- L = 城市或区域名称(Locality Name)
- ST = 州或省份名称(State Name)
- C = 国家的简写(Country,CN 代表中国)
创建证书#
创建秘钥库(keystore),秘钥库是存储一个或多个密钥条目的文件,每个密钥条目应该以一个别名标识,它包含密钥和证书相关信息。
- Usage:
- keytool -genkey -alias -keyalg RSA [-sigalg SHA256withRSA] [-keysize 2048] -keypass
-keystore -storetype JKS|PKCS12 -storepass -validity 3650 -dname "CN=github.com,OU=github.com,Inc.,O=Github, Inc.,L=San Francisco,ST=California,C=US" -ext SAN=dns:github.com,dns:www.github.com,ip:127.0.0.1 - Options:
- -genkey 产生密钥对(genkeypair 简写) -alias 证书别名;和keystore关联的唯一别名,这个alias通常不区分大小写(默认`mykey`) -keyalg 指定加密算法,RSA:非对称加密(默认`DSA`) -sigalg 指定签名算法,可选; -keysize 指定密钥长度,可选; -keypass 指定别名条目口令(私钥的密码) -storetype 生成证书类型,可用的证书库类型为:JKS、PKCS12等。 -keystore 指定产生的密钥库的位置; -storepass 指定密钥库的存取口令,推荐与keypass一致 -validity 证书有效期天数;(默认为 90天) -dname 表明了密钥的发行者身份(Distinguished Names)生成证书时,其中 CN 要和服务器的域名相同,本地测试则使用localhost,其他的可以不填 -ext X.509 扩展