Spring Boot 集成配置 HTTPS

栏目: Java · 发布时间: 6年前

内容简介:这是泥瓦匠的第108篇原创文章工程:问:什么是HTTP?答:HTTP是一个客户端和服务器端请求和响应的标准TCP协议。

这是泥瓦匠的第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证书

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

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

浅薄

浅薄

[美] 尼古拉斯·卡尔 / 刘纯毅 / 中信出版社 / 2010-12 / 42.00元

《浅薄:互联网如何毒化了我们的大脑》在我们跟计算机越来越密不可分的过程中,我们越来越多的人生体验通过电脑屏幕上闪烁摇曳、虚无缥缈的符号完成,最大的危险就是我们即将开始丧失我们的人性,牺牲人之所以区别于机器的本质属性。——尼古拉斯•卡尔“谷歌在把我们变傻吗?”当尼古拉斯•卡尔在发表于《大西洋月刊》上赫赫有名的那篇封面文章中提出这个问题的时候,他就开启了人们热切渴望的期盼源泉,让人急于弄清楚互联网是在......一起来看看 《浅薄》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具