文章目录
- 前言
- https改造-自签CA证书相关证书创建
- 1. CA证书创建
- 1.1. 将 JKS 格式的密钥库转换为 PKCS12 格式
- 1.2. 验证转换后的 PKCS12 密钥库
- 1.3. 导出根证书
- 2. 根据CA证书进行签发服务端证书
- 2.1. 生成服务端证书请求(CSR)
- 2.2. 使用根证书CA证书签发服务端证书
- 2.3. 将根证书导入到服务端 keystore
- 2.4. 确认证书扩展名的正确性
- 3. 信用库制作
- 3.1. 导出证书到信用库
- 3.2. 查看信任库
- 3.3. 删除信用库条目命令
- 4. keystore工具安装
- 5. 证书pem,私钥pem,信用库pem制作
- 5.1. 证书pem制作
- 5.2. 私钥pem制作
- 5.3. 信用库pem制作
- 5.4. 验证证书pem与秘钥pem
前言
如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!
https改造-自签CA证书相关证书创建
1. CA证书创建
keytool -genkeypair -alias rootkey -keyalg RSA -keysize 2048 -keystore rootca.jks -dname "CN=rootYzy, OU=yzy, O=yzy, L=Beijing, ST=Beijing, C=CN" -validity 8000 -storepass changeit -ext BasicConstraints:critical=CA:true -ext KeyUsage=keyCertSign,cRLSign
1.1. 将 JKS 格式的密钥库转换为 PKCS12 格式
keytool -importkeystore -srckeystore rootca.jks -destkeystore rootca.p12 -deststoretype PKCS12 -srcstorepass changeit -deststorepass changeit
1.2. 验证转换后的 PKCS12 密钥库
keytool -list -v -keystore rootca.p12 -storetype pkcs12 -storepass changeit
1.3. 导出根证书
keytool -export -alias rootkey -keystore rootca.p12 -rfc -file rootca.crt -storepass changeit
2. 根据CA证书进行签发服务端证书
2.1. 生成服务端证书请求(CSR)
服务端证书中的CN 通常是服务器的域名。
keytool -genkeypair -alias yzy_service -keyalg RSA -keysize 2048 -keystore yzy_service.jks -dname "CN=www.yzy.com, OU=yzy, O=yzy, L=Beijing, ST=Beijing, C=CN" -validity 7300 -storepass yzy@yzykeytool -importkeystore -srckeystore yzy_service.jks -destkeystore yzy_service.p12 -deststoretype pkcs12 -srcstorepass yzy@yzy -deststorepass yzy@yzykeytool -certreq -alias yzy_service -keystore yzy_service.p12 -file yzy_service.csr -storepass yzy@yzy
2.2. 使用根证书CA证书签发服务端证书
keytool -gencert -alias rootkey -keystore rootca.p12 -infile yzy_service.csr -outfile yzy_service.crt -validity 7300 -storepass changeit -ext BasicConstraints:critical=CA:false -ext KeyUsage=keyEncipherment,dataEncipherment,digitalSignature -ext ExtendedKeyUsage=serverAuth
验证证书链:
openssl verify -CAfile rootca.crt yzy_service.crt
查看证书:
openssl x509 -in yzy_service.crt -text -noout
2.3. 将根证书导入到服务端 keystore
也可以作为客户端证书
keytool -import -alias rootkey -keystore yzy_service.p12 -file rootca.crt -noprompt -storepass yzy@yzy
2.4. 确认证书扩展名的正确性
确认证书扩展名的正确性,确保证书中包含正确的 Key Usage 和 Extended Key Usage:
openssl x509 -in yzy_client.crt -noout -text | find "X509v3"
确保根证书的扩展名正确,检查 Basic Constraints
openssl x509 -in rootca.crt -noout -text | find "X509v3 Basic Constraints"
3. 信用库制作
3.1. 导出证书到信用库
keytool -import -alias yzy_service -keystore rootca.p12 -file yzy_service.crt -storepass changeit
因为信用库要包含CA证书,所以直接拿rootca.p12作为信用库的地基。
3.2. 查看信任库
keytool -list -v -keystore rootca.p12 -storepass changeit
3.3. 删除信用库条目命令
keytool -delete -alias yzy_service -keystore rootca.p12 -storepass changeit
keytool -list -v -keystore rootca.p12 -storepass changeit
测试完删除条目后,把条目加回来。
4. keystore工具安装
下载地址:
https://keystore-explorer.org/downloads.html
安装后的样子:
5. 证书pem,私钥pem,信用库pem制作
5.1. 证书pem制作
打开KeyStore Explorer,并导入您的 yzy_service.p12 文件。
输入你制作yzy_service.p12时候的密码
选择您的客户端证书。
右键点击选择“Export” -> “Export Certificate Chain”。
选择导出格式为 .pem 并保存为 yzy_service_cert.pem。
导出成功!!!
5.2. 私钥pem制作
右键点击选择“Export” -> “Export Key Pair”。
选择导出格式为 .pem 并保存为 yzy_service_key.pem
输入你制作yzy_service.p12时候的密码
导出成功!!!
使用 OpenSSL 将私钥文件转换为不加密的 PEM 格式:
openssl rsa -in yzy_service_key.pem -out yzy_service_key_unencrypted.pem
5.3. 信用库pem制作
生成yzy_service_full_chain.pem,包含完整的证书链
type yzy_service_cer.pem rootca.crt > yzy_service_full_chain.pem
5.4. 验证证书pem与秘钥pem
openssl x509 -noout -modulus -in yzy_service_cert.pem | openssl md5
openssl rsa -noout -modulus -in yzy_service_key_unencrypted.pem | openssl md5
查看生成的md5值是否一样: