JKS 密钥库生成及使用指南

2025-06-14 46 0

JKS 密钥库生成及使用指南

一. 概述

JKS全名Java Key Store,是Java平台中用于存储密钥和证书的标准格式,主要用于安全地管理加密密钥、证书及相关安全凭证,本文旨在指导运维为Spring Gateway+OAuth2的微服务生成、更新和管理JWT认证所需的密钥对,通过为不同项目创建独立的密钥对,提升系统安全性

二. 环境准备

采用JDK自带的keytool工具作为主要方案,无需额外依赖,操作简单,适合企业级应用,要确保已安装JDK8+,并配置好环境变量,验证keytool工具命令:

keytool -help

生产环境,可以直接使用认证微服务的JDK容器环境

三、生成私钥+公钥

  • 生成JKS私钥文件

执行以下命令生成 RSA 密钥对并存储在my.jks文件中:

keytool -genkeypair \
  -keyalg RSA \
  -keysize 2048 \
  -storetype JKS \
  -keystore my.jks \
  -validity 3650 \
  -dname "CN=hushow, OU=hushow, O=hushow, L=hushow, ST=cs, C=cn" \
  -alias test \
  -storepass test@8888 \
  -keypass test@8888

私钥用于认证服务颁发jwt token

参数说明

参数 描述
-genkeypair 生成密钥对
-alias test 密钥条目的别名,用于后续引用该密钥对
-keyalg RSA 使用 RSA 算法生成密钥对
-keysize 2048 密钥长度,推荐使用 2048 位或更高
-storetype JKS 指定密钥库类型为 JKS (Java Key Store)
-keystore my.jks 生成的密钥库文件名,存储密钥对和证书信息
-validity 3650 证书有效期(天),此处设置为 10 年
  • 生成公钥文件

基于已生成的my.jks私钥导出对应的公钥文件:

keytool -exportcert -alias xmgl -keystore dm.jks -rfc > pubkey.txt

公钥用于网关等服务进行JWT token的验签

四、密钥对部署流程

配置文件建议通过nacos共用配置文件(common.yml)统一配置和覆盖

  • 认证服务(uaa-server)更新秘钥+配置
    1.将生成的dm.jks文件部署到服务的classpath 下,并更新配置文件的secret和alias参数:

    encrypt:
    key-store:
    location: file:./dm-test.jks  #外部配置文件覆盖
    secret: test@8888
    alias: test

    重要:通过location路径覆盖jar中的默认秘钥,否则不会生效,密钥文件按项目命名

  • 网关服务(gateway)更新秘钥+配置
    1.将生成的dm.jks文件部署到服务的classpath 下,并更新配置文件的secret和alias参数:

    encrypt:
    key-store:
    location: file:./dm-test.jks  #外部配置文件覆盖
    secret: test@8888
    alias: test

    重要:通过location路径覆盖jar中的默认秘钥,否则不会生效,建议密钥文件按项目命名

  • 报表服务(metadata-report-app)更新秘钥+配置
    1.将生成的dm.jks文件部署到服务的classpath 下,并更新配置文件的secret和alias参数:

    encrypt:
    key-store:
    location: file:./dm-test.jks  #外部配置文件覆盖
    secret: test@8888
    alias: test

    重要:通过location路径覆盖jar中的默认秘钥,否则不会生效,密钥文件按项目命名

五. 安全注意事项

  1. 妥善保管生成的 dm.jks 文件和相关密码
  2. 定期轮换密钥(建议每年更换一次)
  3. 不同项目应使用独立的密钥对
  4. 避免将密钥文件提交到版本控制系统

六. 常见问题

  • 忘记密钥库密码
    无法直接恢复密码,需重新生成密钥库

  • 证书过期
    使用相同别名重新生成密钥对将覆盖原有条目

  • 密钥库损坏
    尝试使用备份恢复,或重新生成密钥库

七. 附录:常用 keytool 命令

  • 查看 JKS 证书信息
    keytool -list -v -keystore dm.jks -storepass your\_password

查看证书有效期

keytool -list -v -keystore dm.jks -storepass your\_password | grep "Valid from"

导出证书为DER格式

keytool -export -alias dd -keystore dm.jks -file certificate.der -storepass your\_password

将DER格式证书转换为PEM格式

openssl x509 -inform der -in certificate.der -out certificate.pem

删除JKS中的密钥条目

keytool -delete -alias dd -keystore dm.jks -storepass your\_password

更新密钥库密码

keytool -storepasswd -keystore dm.jks -storepass old\_password -new new\_password

相关文章

轻量级微服务监控方案:Spring Boot Admin+Cloud+Nacos
PF4J ExtensionPoint核心原理与实战示例
当Actuator失效时:Tomcat线程池监控的全面解决方案
快速实现通用的办公文档在线预览方案
Spring Feign大文件上传踩坑记
MinIO分布式存储方案预研

发布评论