大概思路:
# -genkey[产生密钥对] -alias[密钥对别名] -validity[密钥有效期] -keyalg[密钥算法参数] -keysize[密钥位数]
# -keypass[密钥保护密码]- storepass[存储密码]
# -dname[别名相关附加信息,其中cn是服务器的名字一定要与WEB服务器中设置的一样] -keystore[密钥存储文件路径]
keytool -genkey -alias server -validity 720 -keyalg RSA -keysize 512 -keypass tomcat -storepass tomcat -keystore server.jks
2、生成证书请求文件
# -keypass[密钥保护密码] -keystore[存储文件路径] -storepass[存储密码]
keytool -certreq -alias server -sigalg MD5withRSA -file server.csr -keypass tomcat -keystore server.jks -storepass tomcat
# x509[签发x509证书命令] -req[输入待签发证书] -in[输入待签发证书文件路径] -out[产生x509证书文件输出路径]
# -CA[签发根证书] -CAkey[根证书密钥文件] -days[证书有效期] -CAserial[CA序列号文件]
#CA序列号文件可以自己手工创建一个文本文件,并写入初始值01;或者使用“-set_serial 1” 参数手工指定为1,后续生成时+1
openssl x509 -req -in server.csr -out server.crt -CA root.crt -CAkey root.key -days 365 -CAserial root.serial -sha1 -trustout
# -import[导入命令] -v trustcacerts[导入信任证书] -storepass[存储密码] -keypass[密钥保护密码]
# -alias[服务器证书的别名] -file[证书文件路径] -keystore[导入文件路径] -noprompt[不提示"您仍然想要将它添加到自己的keystore 吗?"]
keytool -import -v -trustcacerts -storepass tomcat -keypass tomcat -alias root -file root.crt -keystore server.jks
5、将服务端证书导入服务器密钥库
# -import[导入命令] -v trustcacerts[导入信任证书] -storepass[存储密码] -keypass[密钥保护密码]
# -alias[服务器证书的别名] -file[证书文件路径] -keystore[导入文件路径]
keytool -import -v -trustcacerts -storepass tomcat -keypass tomcat -alias server -file server.crt -keystore server.jks
6、将CA证书导入信任密钥库
# -import[导入命令] -v trustcacerts[导入信任证书] -storepass[存储密码] -keypass[密钥保护密码]
# -alias[服务器证书的别名] -file[证书文件路径] -keystore[导入文件路径] -noprompt[不提示"您仍然想要将它添加到自己的keystore 吗?"]
keytool -import -v -trustcacerts -storepass tomcat -keypass tomcat -alias server-ca -file root.crt -keystore servertrust.jks
# genrsa [产生密钥命令] -out[密钥文件输出路径] 512 [密钥位数]
openssl genrsa -des3 -out client.key 512
2、生成客户端证书申请文件
# req[产生证书命令] -new[新生成] -out[证书文件输出路径] -key[私钥文件路径]
openssl req -new -out client.csr -key client.key
3、使用CA证书为客户端证书签名
# x509[签发x509证书命令] -req[输入待签发证书] -in[输入待签发证书文件路径] -out[产生x509证书文件输出路径]
# -signkey [密钥文件路径]
# -CA[签发根证书] -CAkey[根证书密钥文件] -days[证书有效期] -CAserial[CA序列号文件]
openssl x509 -req -in client.csr -out client.crt -signkey client.key -CA root.crt -CAkey root.key -days 365 -CAserial root.serial
# pkcs12[生成PKS12格式证书命令] -export[导出文件] -clerts[仅导出client证书]
# -in[输入的client证书文件路径] -inkey[client证书密钥文件路径] -out[导出PKS12格式文件路径]
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
在导出时可以设置密码,只有知道该密码才能将证书导入浏览器。
keytool -import -alias client -trustcacerts -storepass tomcat -file client.crt -keystore servertrust.jks