SpringBoot 启用 Https,生成 jks 自签证书

使用 Java 提供的工具生成 jks 自签证书

keytool 是 Java Development Kit (JDK) 中的一个工具,用于管理公钥和私钥对以及相关的证书。以下命令用于生成一个密钥对并将其存储在密钥库中:

shell 复制代码
keytool -genkeypair -alias www.example.com -keyalg RSA -keypass 123456 -storepass 123456 -keysize 2048 -validity 3650 -keystore www.example.com.jks

其中部分参数解释如下:

  • -genkeypair 告诉 keytool 生成一个新的密钥对。
  • -alias 为生成的密钥对指定一个别名,可填写网站域名。
  • -keyalg 指定生成密钥对时使用的算法,这里是 RSA
  • -keypass 设置私钥的密码。
  • -storepass 设置密钥库的密码。
  • -keysize 指定 RSA 密钥对的大小,这里是 2048 位。这是一个常见的选择,因为它提供了足够的安全性,同时也在性能上是可接受的。
  • -validity 设置证书的有效期,这里是 3650 天,即大约 10 年。
  • -keystore 指定密钥库文件的名称和位置。
可选操作:将 jks 密钥库转为 pkcs12 类型。
shell 复制代码
keytool -importkeystore -srckeystore www.example.com.jks -destkeystore www.example.com.pkcs12 -deststoretype pkcs12

配置 SpringBoot

将生成的 jks 或者 pkcs12 文件放到项目的 src/main/resources 目录下,在项目的 application.yml 配置文件中添加以下内容:

yml 复制代码
# 开启 SSL
server.ssl.key-store: classpath:www.example.com.jks
server.ssl.key-store-password: 123456
server.ssl.key-store-type: JKS
server.ssl.key-alias: www.example.com

如果是 pkcs12 密钥库:

yml 复制代码
# 开启 SSL
server.ssl.key-store: classpath:www.example.com.pkcs12
server.ssl.key-store-password: 123456
server.ssl.key-store-type: PKCS12
server.ssl.key-alias: www.example.com

这时候启动 springboot 如果读取密钥库报错,大概率是 maven 对密钥文件进行了重新编码导致的,需要将密钥文件排除。在 pom.xml 文件中添加以下代码:

xml 复制代码
<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <configuration>
            <nonFilteredFileExtensions>
                <nonFilteredFileExtension>jks</nonFilteredFileExtension>
            </nonFilteredFileExtensions>
        </configuration>
    </plugin>
</plugins>

如果是 pkcs12 密钥库:

xml 复制代码
<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <configuration>
            <nonFilteredFileExtensions>
                <nonFilteredFileExtension>pkcs12</nonFilteredFileExtension>
            </nonFilteredFileExtensions>
        </configuration>
    </plugin>
</plugins>
相关推荐
码兄科技2 分钟前
24小时自助健身房系统软件开发实战指南:功能设计与部署方案
java·spring boot·uni-app
拖孩18 分钟前
代码我能全交给 AI,流量主这 500 个访客它一个都替不了我
前端·后端·微信小程序
paopaokaka_luck37 分钟前
智慧社区综合服务小程序(人脸识别、AI问答、Echarts图形化分析)
前端·javascript·spring boot·spring·数据分析·echarts
需要8261 小时前
JVM 内存区域与对象创建:一次 GC 从哪来
java·jvm·spring boot·spring·servlet·tomcat
烈风逍遥1 小时前
第七篇:提示词模板管理与 Agent 提示词编排
前端·人工智能·后端
站大爷IP1 小时前
Python的Django ORM把我坑惨了,原来select_related和prefetch_related的区别这么大
后端
2501_916007471 小时前
苹果商店iOS应用上架费用全面解析:开发者计划与审核费用计算
android·ios·小程序·https·uni-app·iphone·webview
用户EasyAdminBlazor1 小时前
AdminTable 源码解析:EasyAdminBlazor 如何实现通用 CRUD?
后端
凤山老林1 小时前
Spring Boot 应用 JVM 性能调优实战:GC 日志分析、堆内存规划与容器环境避坑
jvm·spring boot·gc·堆内存
Lsetea1 小时前
证书没到期却报certificate has expired:OpenSSL定位中间证书与系统时间
运维·https·ssl证书·openssl·证书链