怎樣使用Spring Boot 整合配置 HTTPS

大雄45發表於2020-08-29
導讀 HTTPS (全稱:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全為目標的 HTTP 通道,在HTTP的基礎上透過傳輸加密和身份認證保證了傳輸過程的安全性。
HTTP是一個客戶端和伺服器端請求和響應的標準TCP協議。

多了個 S,其實 S 表示 TLS、SSL。因此 HTTP 的基礎架構如圖所示:

怎樣使用Spring Boot 整合配置 HTTPS怎樣使用Spring Boot 整合配置 HTTPS

HTTP協議(HyperText Transfer Protocol),即超文字傳輸協議是用於伺服器傳輸到客戶端瀏覽器的傳輸協議。Web上,伺服器和客戶端利用HTTP協議進行通訊會話。那整合 HTTPS ,簡單來說,修改 Tomcat 容器配置,加一層對應的安全約束配置即可。

申請 HTTPS
申請SSL證照

開啟阿里雲證照,可以申請免費一年。一年後繼續免費申請一年即可。

怎樣使用Spring Boot 整合配置 HTTPS怎樣使用Spring Boot 整合配置 HTTPS

下載,這塊選擇 Tomcat ,因為這次整合只需要修改 Spring Boot 內嵌容器 Tomcat 配置。如果是 nginx ,也可以對應下載並整合配置

怎樣使用Spring Boot 整合配置 HTTPS怎樣使用Spring Boot 整合配置 HTTPS

證照檔案介紹

在證照控制檯下載Tomcat版本證照,下載到本地的是一個壓縮檔案,解壓后里麵包含.pfx檔案是證照檔案,pfx_password.txt是證照檔案的密碼。

怎樣使用Spring Boot 整合配置 HTTPS怎樣使用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 類,程式碼如下

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 進行操作

原文來自: 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2715746/,如需轉載,請註明出處,否則將追究法律責任。

相關文章