总体分三步:
第一步:生成证书文件
JDK 中keytool管理工具
keytool是创建和管理证书的工具
具体功能有:
创建和管理证书
创建和管理对称性加密算法需要用到的密钥
用自己的证书给别人签发证书(CA)
导入别人发布的证书
证书扩展名:
.crt证书文件,可以是DER(二进制)编码。也可以是PEM(ASCII(BASE64))编码的,在linux系统中常见。
.cer也是证书文件,常见于windows系统,编码类型同样可以是DER或PEM,windows下有工具可以转换crt到cer。
.csr证书签名请求,一般是生成请求以后发送给CA,然后CA会给你签名并发回证书。
.key一般是公钥或密钥,都会用这种扩展名。
.p12证书,包含一个X509证书和一个被密码保护的私钥。
命令
1.生成服务器私钥和包含公钥的证书库
keytool -validity 365 -genkey -v -alias server -keyalg RSA -keystore e:\\cer\\server.keystore -dname "CN=localhost,OU=sumscope,O=sumscope,L=Pudong,ST=Shanghai,c=com" -storepass 123456 -keypass 123456
2.生成客户端证书库
keytool -validity 365 -genkeypair -v -alias client -keyalg RSA -storetype PKCS12 -keystore e:\\cer\\client.p12 -dname "CN=client,OU=sumscope,O=sumscope,L=Pudong,ST=Shanghai,c=com" -storepass 123456 -keypass 123456
3.从客户端证书库导出客户端证书
keytool -export -v -alias client -keystore e:\\cer\\client.p12 -storetype PKCS12 -storepass 134679 -rfc -file e:\\cer\\client.cer
4.从服务器证书库导出服务器证书
keytool -export -v -alias server -keystore e:\\cer\\server.keystore -storepass 123456 -rfc -file e:\\cer\\server.cer
5.生成客户端信任证书库(由服务端证书库生成的证书库)
keytool -import -v -alias server -file e:\\cer\\server.cer -keystore e:\\cer\\client.truststore -storepass 123456
执行此命令后 需要确认:Y
6.将客户端证书导入到服务器端证书库(使得服务器端信任客户端证书)
keytool -import -v -alias cl