转载

Spring Boot 集成配置 HTTPS

号外:为读者持续整理了几份最新教程,覆盖了 Spring Boot、Spring Cloud、微服务架构等PDF。

获取方式:关注右侧公众号"泥瓦匠BYSocket",来领取吧!

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢!

这是泥瓦匠的第108篇原创

文章工程:

* JDK 1.8

* Maven 3.5.2

* Spring Boot 1.5.9.RELEASE

一、HTTPS 是什么

问:什么是HTTP?

答:HTTP是一个客户端和服务器端请求和响应的标准TCP协议。

比如打开我的博客地址:

https://www.bysocket.com

多了个 S,其实 S 表示 TLS、SSL。因此 HTTP 的基础架构如图所示:

Spring Boot 集成配置 HTTPS

HTTP协议(HyperText Transfer Protocol),即超文本传输协议是用于服务器传输到客户端浏览器的传输协议。Web上,服务器和客户端利用HTTP协议进行通信会话。那集成 HTTPS ,简单来说,修改 Tomcat 容器配置,加一层对应的安全约束配置即可。

二、申请 HTTPS

2.1 申请SSL证书

打开阿里云证书,可以申请免费一年。一年后继续免费申请一年即可。

Spring Boot 集成配置 HTTPS

下载,这块选择 Tomcat ,因为这次集成只需要修改 Spring Boot 内嵌容器 Tomcat 配置。如果是 nginx ,也可以对应下载并集成配置

Spring Boot 集成配置 HTTPS

2.2 证书文件介绍

在证书控制台下载Tomcat版本证书,下载到本地的是一个压缩文件,解压后里面包含.pfx文件是证书文件,pfx_password.txt是证书文件的密码。

Spring Boot 集成配置 HTTPS

另外两种配置模式:

  • PFX证书安装
  • JKS证书安装

本文使用 PFX证书安装。

三、配置 HTTPS

将 .pfx 文件复制到 resources 根目录,然后配置 application-prod.properties (生产配置文件):

## HTTPS
server.ssl.key-store=classpath:xx.com.pfx
server.ssl.key-store-password=123456
server.ssl.key-store-type=PKCS12
server.port=443

配置项如下:

  • server.port HTTPS 加密端口
  • server.ssl.key-store SSL证书路径
  • server.ssl.key-store-password SSL证书密码
  • server.ssl.key-store-type 证书类型

然后新增 HttpsConfig 类,代码如下

@Configuration
public class HttpsConfig {

    /**
     * spring boot 1.x
     */
   /* */
    @Bean
    public EmbeddedServletContainerFactory servletContainer() {
        TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint constraint = new SecurityConstraint();
                constraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                constraint.addCollection(collection);
                context.addConstraint(constraint);
            }
        };
        return tomcat;
    }

}

运行即可,从日志看出已经支持 HTTPS:

2019-06-16 10:42:42.989  INFO 16727 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 443 (https)
2019-06-16 10:42:45.782  INFO 16727 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 443 (https)

注意点:

– 这是 1.x 的配置,2.x 版本有所不同

– https 默认端口号是 443。本机环境会端口占用可以改成 8080 等

– 如果一台机器两个 HTTPS 服务,那么可以通过 setRedirectPort 进行操作

参考资料

  • Spring Boot 2.x 系列:https://www.bysocket.com/springboot
  • spring.io 官方文档

以下专题教程也许您会有兴趣

  • 《程序兵法:算法与数据结构》 https://www.bysocket.com/technique/2314.html
  • 《Spring Boot 2.x 系列教程》
    https://www.bysocket.com/springboot
  • 《Java 核心系列教程》
    https://www.bysocket.com/technique/2100.html

Spring Boot 集成配置 HTTPS (关注微信公众号,领取 Java 精选干货学习资料) (添加我微信:bysocket01。加入纯技术交流群,成长技术)

原文  https://www.bysocket.com/springboot/2386.html
正文到此结束
Loading...