1. 程式人生 > >SpringCloudGateway配置https訪問

SpringCloudGateway配置https訪問

圖片描述
Spring Cloud Gateway是Spring官方基於Spring 5.0,Spring Boot 2.0和Project Reactor等技術開發的閘道器,Spring Cloud Gateway旨在為微服務架構提供一種簡單而有效的統一的API路由管理方式。Spring Cloud Gateway作為Spring Cloud生態系中的閘道器,其不僅提供統一的路由方式,並且基於Filter鏈的方式提供了閘道器基本的功能,例如:安全,監控/埋點,和限流等。

Project Reactor是響應式程式設計的實現者,之前的文章我寫過響應式程式設計的高併發效能,所以用的人會越來越多,現在來說說如何配置Spring Cloud Gateway,可以直接替代Nginx作為前置的負載均衡器。

下面舉例說明如何進行配置:

配置證書資訊

在配置檔案application.yml中設定證書的基本資訊,如下:

server:  
  ssl:    
    enabled: true                         //啟用ssl
    key-alias: scg                        //啟用證書
    key-store-password: scg1234           //證書密碼
    key-store: classpath:scg-keystore.p12 //證書地址
    key-store-type: PKCS12                //證書型別

配置信任所有下游證書

閘道器路由可以同時支援路由到http和https的後端服務,如果路由到Https的後端,通過以下配置,閘道器可以設定為信任具有以下配置的所有下游證書:

application.yml.

spring:  
  cloud:    
    gateway:      
      httpclient:        
        ssl:          
          useInsecureTrustManager: true

生產環境設定預設證書

生產環境中不適合使用不安全的信任管理。對於生產環境,可以使用以下配置配置一組可信任的已知證書:

application.yml.

spring:  
  cloud:    
    gateway:      
      httpclient:        
        ssl:          
          trustedX509Certificates:
          - cert1.pem
          - cert2.pem

如果Spring Cloud Gateway未配置可信證書,就會使用預設的安全證書(可以使用系統屬性javax.net.ssl.trustStore覆蓋)。

設定TLS 握手超時時間

閘道器路由後端時,使用了一個客戶端連線池。通過https進行通訊時,客戶端會啟動TLS握手。這次握手會有很多超時,可以配置超時時間

application.yml.

spring:  
  cloud:    
    gateway:      
      httpclient:        
        ssl:          
          handshake-timeout-millis: 10000          
          close-notify-flush-timeout-millis: 3000          
          close-notify-read-timeout-millis: 0

通過以上幾步,閘道器就可以進行https了,你就可以讓它放心的代替nginx了。

你覺得使用SpringCloudGateway進行https訪問怎麼樣啊?感興趣的可以關注我的公眾號(xtech100)。