这是泥瓦匠的第108篇原创
文章工程:
问:什么是HTTP? 答:HTTP是一个客户端和服务器端请求和响应的标准TCP协议。
比如打开我的博客地址:
https://www.bysocket.com
多了个 S,其实 S 表示 TLS、SSL。因此 HTTP 的基础架构如图所示:
HTTP协议(HyperText Transfer Protocol),即超文本传输协议是用于服务器传输到客户端浏览器的传输协议。Web上,服务器和客户端利用HTTP协议进行通信会话。那集成 HTTPS ,简单来说,修改 Tomcat 容器配置,加一层对应的安全约束配置即可。
在证书控制台下载Tomcat版本证书,下载到本地的是一个压缩文件,解压后里面包含.pfx文件是证书文件,pfx_password.txt是证书文件的密码。
另外两种配置模式:
本文使用 PFX证书安装。
将 .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
配置项如下:
然后新增 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)
注意点: