特网科技为您提供高速、稳定、安全、弹性的云计算服务计算、存储、监控、安全,完善的云产品满足您的一切所需,深耕云计算领域10余年;我们拥有前沿的核心技术,始终致力于为政府机构、企业组织和个人开发者提供稳定、安全、可靠、高性价比的云计算产品与服务。

当前位置:首页 > 行业资讯 > SSL证书 > 正文内容

Spring Boot 配置 SSL 证书详解 实现 HTTPS 安全通信

2025-09-12SSL证书468

海外云服务器 40个地区可选            亚太云服务器 香港 日本 韩国

云虚拟主机 个人和企业网站的理想选择            俄罗斯电商外贸虚拟主机 赠送SSL证书

美国云虚拟主机 助力出海企业低成本上云             拨号云主机


在现代 Web 应用中,安全通信已成为不可或缺的一部分,随着网络安全威胁的日益增加,HTTPS(HyperText Transfer Protocol Secure)协议通过 SSL/TLS 协议对数据进行加密传输,有效防止了数据在传输过程中被窃取或篡改,保障了用户隐私和系统安全。 Spring Boot 作为一个广泛使用的快速开发框架,内置了对 HTTPS 的良好支持,使得开发者可以便捷地为应用配置 SSL 证书,从而轻松实现 HTTPS 安全访问,本文将详细介绍如何在 Spring Boot 项目中配置 SSL 证书,涵盖开发测试和生产环境两种场景,并提供常见问题的解决方案,帮助开发者快速掌握 HTTPS 的配置技巧。

在开始配置 SSL 之前,我们需要准备以下几项内容:

  1. SSL 证书文件

    • 可以是用于开发测试的自签名证书,也可以是权威机构(如 Let’s Encrypt、阿里云、腾讯云等)颁发的正式证书
    • 常见格式包括 .jks(Java KeyStore)、.p12(PKCS#12)以及 .crt/.key(PEM 格式)等。
  2. Java 开发环境

    Spring Boot 使用 Java 的 KeyStore 来管理 SSL 证书,因此需要安装 JDK(推荐使用 JDK 8 及以上版本)。

  3. Spring Boot 项目

    • 可以通过 Spring Initializr 快速创建一个 Spring Boot 项目,确保项目中包含 Web 依赖。

生成自签名证书(用于开发测试)

如果你只是在本地环境中测试 HTTPS 功能,可以使用 Java 自带的 keytool 工具生成一个自签名证书。

生成命令如下:

keytool -genkeypair -alias myssl \
  -keyalg RSA -keysize 2048 \
  -storetype PKCS12 \
  -keystore myssl.p12 \
  -validity 3650

执行上述命令后,系统会提示你输入以下信息:

  • 密码(如:123456
  • 姓名、组织单位、组织名称等
  • 确认信息无误后,将生成一个名为 myssl.p12 的密钥库文件。

该证书的有效期为 10 年,适合开发测试使用。


配置 Spring Boot 项目启用 HTTPS

将证书文件放入资源目录

将生成的 myssl.p12 文件复制到 Spring Boot 项目的 src/main/resources 目录下,以便在运行时加载。

配置 application.yml 或 application.properties

application.yml 中添加以下配置:

server:
  port: 8443
  ssl:
    key-store: classpath:myssl.p12
    key-store-password: 123456
    key-store-type: PKCS12
    key-alias: myssl

或者在 application.properties 中配置:

server.port=8443
server.ssl.key-store=classpath:myssl.p12
server.ssl.key-store-password=123456
server.ssl.key-store-type=PKCS12
server.ssl.key-alias=myssl

启动项目并测试访问

启动 Spring Boot 项目后,访问 https://localhost:8443,浏览器会提示“证书不受信任”,这是由于使用的是自签名证书,选择继续访问即可正常测试 HTTPS 接口。


使用正式证书(由 CA 颁发)

如果你使用的是由权威机构颁发的正式 SSL 证书(如从 Let’s Encrypt、阿里云、腾讯云等获取),通常需要将证书转换为 Java 支持的格式(如 .p12.jks)。

将 PEM 格式证书转换为 PKCS#12

假设你有以下证书文件:

  • domain.crt:网站证书
  • domain.key:私钥文件
  • ca.crt:CA 中间证书

可以使用 OpenSSL 工具合并并转换为 PKCS12 格式:

openssl pkcs12 -export \
  -in domain.crt \
  -inkey domain.key \
  -out domain.p12 \
  -name mydomain \
  -CAfile ca.crt \
  -caname root

执行完成后,会生成一个名为 domain.p12 的密钥库文件。

配置 Spring Boot 启用正式证书

domain.p12 文件放入 src/main/resources 目录,并在 application.yml 中添加如下配置:

server:
  port: 443
  ssl:
    key-store: classpath:domain.p12
    key-store-password: your_password
    key-store-type: PKCS12
    key-alias: mydomain

注意:正式证书应部署在 443 端口,这是 HTTPS 的标准端口。

部署应用并绑定域名

将应用部署到服务器后,配置域名解析,通过 HTTPS 协议访问即可实现安全通信。


同时支持 HTTP 和 HTTPS(可选)

在某些场景中,我们可能希望同时支持 HTTP 和 HTTPS 协议,Spring Boot 可以通过编程方式实现双协议监听。

示例配置(Java 配置类):

@Configuration
public class HttpConfig {
    @Bean
    public WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer() {
        return factory -> factory.setPort(8080); // HTTP 默认端口
    }
    @Bean
    public WebServerFactoryCustomizer<EmbeddedWebApplicationContext> httpsWebServerFactoryCustomizer() {
        return context -> {
            context.addWebServerFactoryCustomizer(factory -> {
                factory.setPort(443);
                Ssl ssl = new Ssl();
                ssl.setKeyStore("classpath:domain.p12");
                ssl.setKeyStorePassword("your_password");
                ssl.setKeyStoreType("PKCS12");
                ssl.setKeyAlias("mydomain");
                factory.setSsl(ssl);
            });
        };
    }
}

注意:Spring Boot 2.x 之后使用 WebServerFactoryCustomizer 替代旧版本的 EmbeddedServletContainerCustomizer,请根据你的 Spring Boot 版本进行调整。


常见问题及解决方案

证书未生效,仍使用 HTTP 访问?

  • 检查端口配置:是否使用 HTTPS 端口(如 8443 或 443)。
  • 检查配置文件拼写:确保 server.ssl.* 配置项无误。
  • 确保证书路径正确:确保证书文件在 src/main/resources 下,并使用 classpath: 引用。

证书不被信任?

  • 自签名证书:需手动将证书添加为受信任的根证书。
  • 正式证书:确保证书链完整,中间证书已正确配置。

启动时报错:java.io.IOException: Keystore was tampered with, or password was incorrect

  • 检查密码是否正确:确保配置文件中密码与生成证书时设置的一致。
  • 检查证书文件是否损坏:尝试重新生成或重新下载证书文件。

在 Spring Boot 中配置 SSL 证书是构建安全 Web 应用的关键步骤,无论是用于开发测试的自签名证书,还是用于生产环境的正式证书,Spring Boot 都提供了良好的支持,开发者只需通过简单的配置即可启用 HTTPS 协议。

Spring Boot 还支持灵活的配置方式,满足不同部署场景的需求,掌握这些配置技巧,不仅能提升应用的安全性,也能增强开发者的工程实践能力。


参考文献

字数统计:约 1500 字

如需进一步扩展,可结合 HTTPS 强制跳转、HTTP/2 配置、证书自动续签(如 ACME 客户端)等内容,进行深入讲解,欢迎继续关注相关内容更新!

扫描二维码推送至手机访问。

版权声明:本文由特网科技发布,如需转载请注明出处。

本文链接:https://www.56dr.com/mation/76225.html

分享给朋友:

“Spring Boot 配置 SSL 证书详解 实现 HTTPS 安全通信” 的相关文章

阿里云免费服务器,开启你的云计算之旅

阿里巴巴云推出免费300元服务器,助力开发者快速构建和部署应用。在数字化时代,数据和信息的爆炸性增长为各行各业带来了前所未有的机遇,为了帮助企业更好地应对这些挑战,云计算应运而生,阿里云作为全球领先的云计算服务提供商,致力于提供稳定、安全、高效的云资源,满足用户对计算资源的需求。让我们一起走进阿里云...

全球用户最喜爱的海外服务器购买平台推荐

在全球用户中,AWS(Amazon Web Services)以其丰富的服务和灵活的价格策略成为了首选。它提供了各种类型的服务器,包括虚拟机、云存储、数据库服务等,能满足不同需求的用户。AWS还支持多种编程语言和开发框架,使得开发者可以快速构建应用程序。AWS是全球最受欢迎的海外服务器购买平台之一。...

使用OpenSSL创建自签名证书

生成自己的SSL证书涉及几个步骤:首先需要选择一个合适的CA(证书颁发机构),然后获取一个私钥和公钥对。使用这些密钥对创建一个CSR(证书请求)文件,并将该文件提交给CA。CA审核通过后,它会签发一个证书,并将证书发送给你。你需要将证书和私钥存储在安全的地方,以便将来使用。在现代互联网时代,安全的通...

选择域名和SSL证书,买还是不买?

选择购买域名和SSL证书是一个重要的决策过程。域名是网站的标识符,它决定了你的网站在互联网上的可见性和访问性。SSL证书则提供了数据传输的安全保障,保护用户的数据不被窃取或篡改。,,在决定是否购买域名和SSL证书时,需要考虑以下几个因素:,,1. **安全性**:确保你的网站具有良好的安全记录,避免...

域名型SSL证书的价格分析

域名型SSL证书的价格主要受到以下几个因素影响:证书类型(单年、两年、三年)、域名注册时间、选择的CA机构以及是否包含其他安全功能。单年的价格相对较低,而三年以上的价格会更高。一些高级功能如IP地址绑定、自定义域名解析和HTTPS加密等也会增加费用。建议在购买前详细了解各个选项,以便做出明智的选择。...

在线购物平台,选择哪个更安全?

在淘宝、京东、拼多多等电商平台,你可以轻松购买各种商品。在数字化时代,安全性和数据保护成为了企业运营的重要因素,SSL证书(Secure Sockets Layer)是确保数据在网络传输过程中不被窃取和篡改的关键工具,以下是一些选择SSL证书的地方,帮助您找到最适合您的解决方案。 1.官方网站许多大...