前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot 集成配置 HTTPS

Spring Boot 集成配置 HTTPS

作者头像
二哥聊运营工具
发布2021-12-17 11:20:33
7220
发布2021-12-17 11:20:33
举报
文章被收录于专栏:程序员泥瓦匠

这是泥瓦匠的第108篇原创

文章工程:

  • JDK 1.8
  • Maven 3.5.2
  • Spring Boot 1.5.9.RELEASE

一、HTTPS 是什么

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

比如打开我的博客地址:

代码语言:javascript
复制
https://www.bysocket.com

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

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

二、申请 HTTPS

2.1 申请SSL证书
下载,这块选择 Tomcat ,因为这次集成只需要修改 Spring Boot 内嵌容器 Tomcat 配置。如果是 nginx ,也可以对应下载并集成配置
2.2 证书文件介绍

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

另外两种配置模式:

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

本文使用 PFX证书安装。

三、配置 HTTPS

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

代码语言:javascript
复制
## 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 类,代码如下

代码语言:javascript
复制
@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:

代码语言:javascript
复制
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 官方文档
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员泥瓦匠 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、HTTPS 是什么
  • 二、申请 HTTPS
    • 2.1 申请SSL证书
      • 2.2 证书文件介绍
      • 三、配置 HTTPS
        • 参考资料
        相关产品与服务
        SSL 证书
        腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档