keytool生成多级证书链
前言
Keytool常用命令如下
Keytool生成多级证书链
下面以生成三级证书链为例:
建立根CA
根CA实际是一张自签CA,自签CA的使用者和颁发者都是它自己。首先建立一个密钥库文件keystore.jks,并创建rootca条目。
keytool -genkeypair -alias rootca -storetype PKCS12 -keystore keystore.jks -validity 3650 -keysize 2048 -keyalg RSA -storepass 12345678
从密钥库中导出rootca的证书rootca.cer
keytool -exportcert -keystore keystore.jks -storepass 12345678 -alias rootca -file rootca.cer
建立二级CA并签发该CA证书
二级CA证书需要由根证书进行签发,首先需要使用keytool生成二级CA的证书,但是此时的证书还是张自签证书,我们需要从中生成一个二级CA的证书请求(包含了公钥),然后通过将证书请求到rootca签发我们的二级证书,然后我们在将rootca签发的二级CA证书导入到导出证书请求的秘钥库中,完成二级CA的生成。
创建subca条目并保存至keystore.jks文件中
keytool -genkeypair -alias subca -storetype PKCS12 -keystore keystore.jks -validity 3650 -keysize 2048 -keyalg RSA -storepass 12345678
查看一下subca条目信息
keytool -list -v -alias subca -keystore keystore.jks -storepass 12345678
此时该条目还是张自签证书,无法直接使用,需要用rootca来签发subca的证书
生成证书请求文件subca.csr
keytool -certreq -alias subca -keystore keystore.jks -storepass 12345678 -file subca.csr
使用subca.csr去rootca签发证书subca.cer
keytool -gencert -keystore keystore.jks -storepass 12345678 -alias rootca -infile subca.csr -outfile subca.cer
更新密钥库keystore.jks中的subca条目
keytool -importcert -file subca.cer -alias subca -keystore keystore.jks -storepass 12345678
此时再查看subca条目颁发者已经变成rootca了
keytool -list -v -alias subca -keystore keystore.jks -storepass 12345678
建立用户user并使用subca签发用户证书
由于该步骤与上一步类似,这里就不再截图了
创建user条目并保存至keystore.jks文件中
keytool -genkeypair -alias user -storetype PKCS12 -keystore keystore.jks -validity 3650 -keysize 2048 -keyalg RSA -storepass 12345678
生成证书请求文件user.csr
keytool -certreq -alias user -keystore keystore.jks -storepass 12345678 -file user.csr
使用user.csr去subca签发证书user.cer
keytool -gencert -keystore keystore.jks -storepass 12345678 -alias subca -infile user.csr -outfile user.cer
更新密钥库keystore.jks中的user条目
keytool -importcert -file user.cer -alias user -keystore keystore.jks -storepass 12345678
我们可以把rootca.cer、subca.cer、user.cer安装至本机上,然后查看user.cer,可以看到证书链结构