[笔记] keytool 导入服务器证书和证书私钥

背景

我当前手头已有一个服务器证书和对应的私钥,现在需要转换为 Java KeyStore 格式使用,找了一大圈才发现 keytool 无法直接导入服务器证书和私钥,当然证书可以直接导入,但是私钥是无法直接导入。找了一大圈发现可以先将服务器证书和证书私钥转为 PKCS12 格式的密钥库,然后通过 PKCS12 格式证书转为 Java KeyStore 格式。

首先通过 openssl 生成ca证书,服务器证书和服务器私钥:

openssl req -new -nodes -sha256 -newkey rsa:2048 -keyout ca.key -out ca.csr \
-subj "/C=CN/ST=Zhejiang/L=Hangzhou/O=Ghimi Technology/OU=Ghimi Cloud/CN=ghimi.top"
openssl x509 -req -in ca.csr -key ca.key -out ca.crt -days 3650
# ca.key ca 证书私钥
# ca.csr ca 证书签名请求
# ca.crt ca 证书(自签名证书)
openssl req -new -nodes -sha256 -newkey rsa:2048 -keyout server.key -out server.csr \
-subj "/C=CN/ST=Zhejiang/L=Hangzhou/O=Ghimi Technology/OU=Ghimi Blog/CN=blog.ghimi.top"
# server.key 服务器证书私钥
# server.csr 服务器证书签名请求
# server.crt 服务器证书
openssl x509 -req -in server.csr -out server.crt -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 \
-extensions SAN \
-extfile <(cat /etc/ssl/openssl.cnf <(printf "\n[SAN]\nsubjectAltName=DNS:dns.ghimi.top,IP:127.0.0.1"))

然后将上述服务器证书转为 PKCS12 格式:

openssl pkcs12 -export -in server.crt -inkey server.key -CAfile ca.crt \
-password pass:123456 -name server -out server.p12
# 如果证书私钥设置了密码的话使用 -passin pass:123456 输入密码
# -password pass:123456 为 pkcs12 密钥库设置密码

最后通过 keytool 命令将证书导出为 Java Keystore 密钥库格式:

# 导出服务器证书和证书私钥为 java keystore 格式
keytool -importkeystore -srckeystore server.p12 -destkeystore server.jks \
-srcstoretype pkcs12 -deststoretype jks -srcalias server -destalias server \
-deststorepass 123456 -srcstorepass 123456
# server.jks 为最终的导出结果
# 将 ca 证书导入到 server.jks 中
keytool -importcert -keystore server.jks -file ca.crt -alias root-ca -storepass 123456 -noprompt

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值