以阿里证书为例

1. 导入证书

将证书和证书密码复制到项目resources目录中

2. 配置 HTTPS 证书

在 application.yml 文件中配置 HTTPS 相关信息。443是 HTTPS 的默认端口,使用 HTTPS 就行访问的时候就不需要写额外的端口号(也可以配置其他端口),配置完成后使用https就可以访问了。

# 开发环境配置
server:
  ###配置https
  port: 22222
  http-port: 33333
  #开启https,配置跟证书一一对应
  ssl:
    enabled: true
    #指定证书
    key-store: classpath:3453248__yhkdz.cn.pfx
    key-store-type: PKCS12
    #密码
    key-store-password: wyrVseZe

3. HTTP 跳转 HTTPS

经过以上两步HTTPS 已经可以访问了,但是 HTTP 却不能访问;经过如下配置可以将HTTP强制跳转到HTTPS。如:访问 http://127.0.0.1:33333/index 会强制跳转到https://127.0.0.1:22222/index 

/**
 * http强制跳转https
 */
@Configuration
public class HttpToHttps {

    @Value("${server.port}")
    private int sslPort;//https的端口

    @Value("${server.http-port}")
    private int httpPort;//http的端口

    @Bean
    public TomcatServletWebServerFactory servletContainerFactory() {
        TomcatServletWebServerFactory tomcat = 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");

        //true: http使用http, https使用https;
        //false: http重定向到https;
        connector.setSecure(false);

        //设置监听请求的端口号,这个端口不能其他已经在使用的端口重复,否则会报错
        connector.setPort(httpPort);

        //重定向端口号(非SSL到SSL)
        connector.setRedirectPort(sslPort);

        tomcat.addAdditionalTomcatConnectors(connector);
        return tomcat;
    }


}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐