在 Spring Boot 项目中添加 SSL 证书的完整指南
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
美国云虚拟主机 助力出海企业低成本上云 WAF网站防火墙 为您的业务网站保驾护航
随着互联网安全意识的不断增强,HTTPS 已成为现代 Web 应用的标准通信协议,作为当前最流行的 Java 开发框架之一,Spring Boot 对 HTTPS 的支持非常友好,内置了灵活的 SSL 配置机制,本文将详细介绍如何在 Spring Boot 项目中配置 SSL 证书,实现安全的 HTTPS 访问。
-
SSL 证书文件
可以使用自签名证书(适用于开发和测试环境),也可以使用由权威证书机构(如 Let’s Encrypt、阿里云、腾讯云等)签发的正式证书,常见的证书格式包括.jks
、.p12
,或者.crt
和.key
的配对文件。 -
Java 运行环境
Spring Boot 的 SSL 支持依赖于 Java 的安全模块,建议使用 Java 8 或更高版本,以确保对 TLS 1.2 及以上协议的支持。 -
Spring Boot 项目
本文基于 Spring Boot 2.x 版本进行配置,虽然 3.x 版本也支持 HTTPS,但部分配置方式可能略有不同。
生成自签名证书(可选)
对于开发或测试环境,我们可以使用 Java 自带的 keytool
工具生成一个自签名证书,执行以下命令:
keytool -genkeypair -alias myssl \ -keyalg RSA -keysize 2048 \ -storetype PKCS12 \ -keystore myssl.p12 \ -validity 3650
参数说明:
-alias
:证书的别名,用于后续配置时引用。-keyalg
:密钥算法,通常使用 RSA。-keystore
:生成的密钥库文件名。-validity
:证书的有效天数,这里设置为 3650 天(约 10 年)。
执行完成后,会在当前目录下生成一个名为 myssl.p12
的证书文件,请牢记设置的密钥库密码和别名。
配置 Spring Boot 项目启用 HTTPS
将证书放入资源目录
将生成的 .p12
或 .jks
文件放入项目的 src/main/resources
目录中,src/main/resources/myssl.p12
。
修改配置文件
使用 application.properties
:
server.port=8443 server.ssl.key-store=classpath:myssl.p12 server.ssl.key-store-password=your_password server.ssl.key-store-type=PKCS12 server.ssl.key-alias=myssl
使用 application.yml
:
server: port: 8443 ssl: key-store: classpath:myssl.p12 key-store-password: your_password key-store-type: PKCS12 key-alias: myssl
⚠️ 注意:将
your_password
替换为你在生成证书时设置的实际密码。
启动并测试访问
启动项目后,在浏览器中访问:https://localhost:8443
(确保 8443 端口未被防火墙拦截),由于使用的是自签名证书,浏览器会提示“证书不受信任”,点击“继续访问”即可正常使用。
使用正式 SSL 证书(推荐用于生产环境)
在生产环境中,建议使用由权威机构颁发的正式 SSL 证书,以提升网站的安全性和用户信任度。
如果你使用的是 Nginx + Spring Boot 的部署方式,可以将 HTTPS 的处理交给 Nginx 等反向代理服务器,也可以直接在 Spring Boot 中启用正式证书。
如果证书是以 .crt
和 .key
文件形式提供,需要将其转换为 Java 支持的 .jks
或 .p12
格式,可以使用如下命令进行转换:
openssl pkcs12 -export -in your_domain.crt -inkey your_domain.key -out your_domain.p12 -name myssl
然后使用 keytool
导入 .p12
文件到 .jks
(如果需要):
keytool -importkeystore -deststorepass your_password \ -destkeypass your_password \ -destkeystore your_domain.jks \ -srckeystore your_domain.p12 \ -srcstoretype PKCS12 \ -srcstorepass your_password
转换完成后,即可将 .jks
或 .p12
文件放入资源目录,并更新配置文件。
强制 HTTPS 访问(可选)
为了进一步提升安全性,可以通过 Spring Security 配置,强制所有请求使用 HTTPS 协议访问,以下是一个简单的配置示例:
@Configuration @EnableWebSecurity public class SecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http .authorizeRequests() .anyRequest().authenticated() .and() .requiresChannel() .requestMatchers(ChannelRequestMatcher.anyOf()) .requiresSecure(); // 强制跳转 HTTPS return http.build(); } }
⚠️ 注意:该配置要求项目中已集成 Spring Security,并正确配置了 HTTPS。
通过本文的介绍,我们了解了在 Spring Boot 中配置 SSL 证书的完整流程,包括:
- 如何生成自签名证书;
- 如何在 Spring Boot 中配置 HTTPS;
- 如何使用正式证书;
- 如何强制使用 HTTPS 协议。
无论是在开发测试环境还是生产环境中,Spring Boot 都提供了灵活而强大的支持,帮助开发者快速实现安全的 Web 通信。
在现代 Web 应用中,HTTPS 不仅是保障数据传输安全的重要手段,更是提升用户信任度、符合行业标准的必要措施,希望本文能够帮助开发者更高效地掌握在 Spring Boot 中配置 SSL 证书的方法,为构建更安全的 Web 应用打下坚实基础。
如需进一步优化性能,还可以结合 Nginx、负载均衡、证书自动更新(如 Let’s Encrypt + Certbot)等方案,实现更完善的 HTTPS 安全架构。