当前位置: 首页 > news >正文

[笔记] 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

参考资料

http://www.lryc.cn/news/385365.html

相关文章:

  • 【2024-热-办公软件】ONLYOFFICE8.1版本桌面编辑器测评
  • C# 23设计模式备忘
  • STL中的迭代器模式:将算法与数据结构分离
  • TCP、UDP详解
  • 【脚本工具库】批量下采样图像(附源码)
  • Web渗透:文件包含漏洞
  • 什么是yum源?如何对其进行配置?
  • Node.js全栈指南:认识MIME和HTTP
  • 基于weixin小程序智慧物业系统的设计
  • 成功解决​​​​​​​TypeError: __call__() got an unexpected keyword argument ‘first_int‘
  • vue3用自定义指令实现按钮权限
  • Nuxt3:当前页面滚动到指定位置
  • word图题表题公式按照章节编号(不用题注)
  • 最小生成树模型
  • 基于盲信号处理的声音分离-基于改进的信息最大化的ICA算法
  • 如何在Qt Designer中管理QSplitter
  • 关于新零售的一些思考
  • C++初学者指南-2.输入和输出---从输入流错误中恢复
  • 毫秒级响应!清科优能应用 TDengine 建设虚拟电厂运营管理平台
  • 【Ubuntu noble】apt 无法安装软件 Unable to locate package vim
  • Instagram APIj接口——快速获取Ins帖子媒体内容下载链接
  • Java基础(四)——字符串、StringBuffer、StringBuilder、StringJoiner
  • 吐血推荐!3款视频生成工具,全部国产,都免费
  • 【Web3】Web3.js 启动!并解决Web3 is not a constructor报错
  • 算法训练营第六十七天 | 卡码网110 字符串接龙、卡码网105 有向图的完全可达性、卡码网106 岛屿的周长
  • 搭建 MySQL MHA
  • python中的线程与进程
  • 网络安全筑基篇——反序列化漏洞
  • 帝国cms定时审核并更新的方法
  • 一个简单好用安全的开源交互审计系统,支持SSH,Telnet,Kubernetes协议