這是泥瓦匠的第108篇原創html
文章工程:java
問:什麼是HTTP? 答:HTTP是一個客戶端和服務器端請求和響應的標準TCP協議。nginx
好比打開個人博客地址:算法
https://www.bysocket.com
多了個 S,其實 S 表示 TLS、SSL。所以 HTTP 的基礎架構如圖所示:spring
HTTP協議(HyperText Transfer Protocol),即超文本傳輸協議是用於服務器傳輸到客戶端瀏覽器的傳輸協議。Web上,服務器和客戶端利用HTTP協議進行通訊會話。那集成 HTTPS ,簡單來講,修改 Tomcat 容器配置,加一層對應的安全約束配置便可。瀏覽器
打開阿里雲證書,能夠申請免費一年。一年後繼續免費申請一年便可。tomcat
下載,這塊選擇 Tomcat ,由於此次集成只須要修改 Spring Boot 內嵌容器 Tomcat 配置。若是是 nginx ,也能夠對應下載並集成配置安全
在證書控制檯下載Tomcat版本證書,下載到本地的是一個壓縮文件,解壓后里麪包含.pfx文件是證書文件,pfx_password.txt是證書文件的密碼。springboot
另外兩種配置模式:服務器
本文使用 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)
注意點: