<p>Spring Boot 启用 HTTPS 的核心是配置内嵌 Tomcat 加载 SSL 证书并监听 HTTPS 端口,需三步:生成/获取证书(本地用 keytool 生成 PKCS12 自签名证书)、放入 resources 目录、在 application.yml 中正确配置 server.ssl.* 属性(含端口、路径、密码、别名等),生产环境需将 PEM 格式 CA 证书转为 PKCS12;还可通过添加 HTTP 重定向 Connector 实现自动跳转。</p>

Spring Boot 启用 HTTPS 的核心,是让内嵌 Tomcat 加载 SSL 证书并监听 HTTPS 端口。整个过程分三步:生成或获取证书、把证书放进项目资源目录、在配置文件中声明证书路径和密钥信息。不复杂但关键细节必须对齐,比如别名、密码、格式类型,否则启动直接报错。
本地开发用自签名证书(免费快速)
用 JDK 自带的 keytool 一行命令生成 PKCS12 格式证书:
keytool -genkeypair -alias myssl -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore src/main/resources/keystore.p12 -validity 3650 -storepass 123456 -keypass 123456- 执行时提示输入组织信息,CN(Common Name)建议填实际访问域名,如
localhost或dev.example.com,否则浏览器会提示“证书不匹配” - 生成后
keystore.p12自动落在resources目录下,Spring Boot 可通过classpath:加载
application.yml 中启用 HTTPS 配置
在 application.yml 里添加以下配置(注意缩进):
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
server.port: 8443—— 开发阶段推荐用 8443,避免需要管理员权限的 443 端口 server.ssl.key-store: classpath:keystore.p12server.ssl.key-store-password: 123456server.ssl.key-store-type: PKCS12-
server.ssl.key-alias: myssl—— 必须与生成时-alias值完全一致 -
server.ssl.key-password: 123456—— 若与密钥库密码相同,可省略此项
生产环境配正式 CA 证书(如 Let’s Encrypt 或云厂商)
云平台或 Certbot 下载的证书通常是 PEM 格式(cert.pem + privkey.pem),需转为 Spring Boot 支持的 PKCS12:
立即学习“Java免费学习笔记(深入)”;
- 执行转换命令:
openssl pkcs12 -export -in cert.pem -inkey privkey.pem -out keystore.p12 -name myssl -CAfile chain.pem -caname root - 过程中设置的导出密码,就是配置里的
key-store-password -
-name myssl要与配置中的key-alias保持一致 - 证书绑定的域名必须与用户实际访问域名完全匹配,否则浏览器拒绝信任
可选:HTTP 自动跳转 HTTPS
若希望用户访问 http://localhost:8080 时自动跳到 https://localhost:8443,需额外定义一个 HTTP 连接器:
- 在启动类中添加
@Bean方法,返回TomcatServletWebServerFactory - 创建一个
Connector,设port=8080、redirectPort=8443 - 将该 Connector 添加进工厂实例中
- 注意:此时需同时运行两个端口(HTTP + HTTPS),8080 仅作重定向,不处理业务逻辑

















