SpringBoot 2.x.x以上版本配置SSL开启HTTPS访问,HTTP自动转HTTPS

1/生成证书

直接使用java自带的命令keytool来生成,生成命令如下:

keytool -genkey -alias server -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650

各个参数的含义:

0.-alias 别名

1.-storetype 指定密钥仓库类型

2.-keyalg 生证书的算法名称,RSA是一种非对称加密算法 

3.-keysize 证书大小 

4.-keystore 生成的证书文件的存储路径 

5.-validity 证书的有效期

如下图所示:

2/application.properties文件配置证书,启用HTTPS

生成证书后,将keystone文件拷贝到我们项目的src/main/resources下,然后修改application.properties文件,添加HTTPS支持。在application.properties中添加如下代码:

#SpringBoot启动端口指定
server.port=9999
# 证书目录
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-password=QC_class
server.ssl.key-store-type=PKCS12
server.ssl.key-alias=server

如下图所示:

3/添加SSL配置类,开启HTTP自动转向HTTPS


import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * SSLConfig
 *
 * @author QC班长
 * @since 2019/12/25
 */
@Configuration
public class SSLConfig {
    //SSLConfig
    @Bean
    public TomcatServletWebServerFactory servletContainer() { //springboot2 新变化
        TomcatServletWebServerFactory tomcatServletWebServerFactory = new TomcatServletWebServerFactory() {
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint securityConstraint = new SecurityConstraint();
                securityConstraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                securityConstraint.addCollection(collection);
                context.addConstraint(securityConstraint);
            }
        };

        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(8080);//Connector监听的http的端口号,端口号可以自己指定
        connector.setSecure(false);
        connector.setRedirectPort(9999);//监听到http的端口号后转向到的https的端口号,端口号可以自己指定

        tomcatServletWebServerFactory.addAdditionalTomcatConnectors(connector);
        return tomcatServletWebServerFactory;
    }
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QC班长

班长有话说:要是有瓶水喝就好了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值