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>
相关推荐
转转技术团队20 分钟前
2024转转技术年货发布啦
前端·后端·测试工具·架构
长安不及十里22 分钟前
操作日志设计(一) Binlog 方案(Canal+Mq)
分布式·后端·学习·云原生
m0_7482405425 分钟前
Springboot 3项目整合Knife4j接口文档(接口分组详细教程)
java·spring boot·后端
ueanaIU潇潇子34 分钟前
前后端分离项目部署到云服务器、宝塔(前端vue、后端springboot)详细教程
vue.js·spring boot·云服务器·前后端分离项目部署
码蜂窝编程官方1 小时前
【含开题报告+文档+PPT+源码】基于SpringBoot的线上动物园售票系统设计
java·vue.js·spring boot·后端·spring
绝无仅有1 小时前
go项目zero框架中用gentool解决指定表生成结构体被覆盖的解决方案
后端·面试·架构
Bony-2 小时前
Go语言中值接收者和指针接收者的区别?
开发语言·后端·golang
Cikiss2 小时前
微服务实战——购物车模块实战
java·开发语言·后端·spring·微服务·springcloud
程序猿进阶2 小时前
大循环引起CPU负载过高
java·开发语言·后端·性能优化·并发编程·架构设计·问题排查
ss2733 小时前
被催更了,2025元旦源码继续免费送
java·vue.js·spring boot·后端·微信小程序·开源