如何进行Spring Boot配置SSL证书实现HTTPS访问

发布时间:2021-10-12 15:19:10 作者:柒染
来源:亿速云 阅读:339

如何进行Spring Boot配置SSL证书实现HTTPS访问

在现代Web应用中,安全性是一个至关重要的方面。为了确保数据在传输过程中的安全性,使用HTTPS(HTTP Secure)协议是必不可少的。HTTPS通过SSL/TLS协议对数据进行加密,防止数据在传输过程中被窃取或篡改。本文将详细介绍如何在Spring Boot应用中配置SSL证书,从而实现HTTPS访问。

1. 获取SSL证书

在配置Spring Boot应用之前,首先需要获取一个有效的SSL证书。SSL证书通常由受信任的证书颁发机构(CA)签发,例如Let’s Encrypt、DigiCert等。你可以通过以下方式获取SSL证书:

2. 配置Spring Boot应用

一旦你获得了SSL证书,就可以开始配置Spring Boot应用以支持HTTPS访问。假设你已经获得了以下文件:

2.1 配置application.propertiesapplication.yml

在Spring Boot应用的配置文件(application.propertiesapplication.yml)中,添加以下配置以启用HTTPS:

application.properties 配置

server.port=8443
server.ssl.key-store=classpath:keystore.jks
server.ssl.key-store-password=your_keystore_password
server.ssl.key-password=your_key_password
server.ssl.key-alias=your_key_alias

application.yml 配置

server:
  port: 8443
  ssl:
    key-store: classpath:keystore.jks
    key-store-password: your_keystore_password
    key-password: your_key_password
    key-alias: your_key_alias

2.2 配置KeyStore文件

keystore.jks文件放置在Spring Boot应用的src/main/resources目录下。如果你使用的是PKCS12格式的证书(keystore.p12),则需要将key-store属性设置为classpath:keystore.p12,并将key-store-type属性设置为PKCS12

2.3 配置HTTP重定向到HTTPS(可选)

为了确保所有HTTP请求都被重定向到HTTPS,你可以配置Spring Security来实现这一点。首先,确保你的项目中已经添加了Spring Security依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

然后,创建一个配置类来配置HTTP重定向到HTTPS:

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.requiresChannel()
            .requestMatchers(r -> r.getHeader("X-Forwarded-Proto") != null)
            .requiresSecure();
    }
}

2.4 配置HTTP端口(可选)

如果你希望同时支持HTTP和HTTPS访问,可以在application.propertiesapplication.yml中配置HTTP端口:

server.port=8080
server.ssl.enabled=true
server.ssl.key-store=classpath:keystore.jks
server.ssl.key-store-password=your_keystore_password
server.ssl.key-password=your_key_password
server.ssl.key-alias=your_key_alias

然后,在配置类中添加HTTP端口配置:

import org.apache.catalina.connector.Connector;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class HttpConfig {

    @Bean
    public ServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
        tomcat.addAdditionalTomcatConnectors(createStandardConnector());
        return tomcat;
    }

    private Connector createStandardConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setPort(8080);
        return connector;
    }
}

3. 启动应用并测试

完成上述配置后,启动Spring Boot应用。应用将监听8443端口(HTTPS)和8080端口(HTTP)。你可以通过浏览器访问https://localhost:8443来测试HTTPS访问是否正常工作。

4. 总结

通过以上步骤,你已经成功地在Spring Boot应用中配置了SSL证书,并实现了HTTPS访问。无论是生产环境还是开发环境,使用HTTPS都是确保数据安全的重要手段。希望本文能帮助你顺利配置Spring Boot应用的HTTPS访问。

推荐阅读:
  1. Spring -> Spring Boot > Spring Cloud
  2. 如何在spring boot 中配置HTTPS

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

springboot ssl https

上一篇:如何配置统一资源服务器模块

下一篇:怎么在网站中插入天气预报

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》