在Web服務應用中,為了數據的傳輸安全,使用安全證書,使用TLS/SSL加密。這里就介紹一下Spring Cloud Gateway的HTTPS配置。
7.1 TLS/ SSL配置
- TLS:安全傳輸層協議(TLS)用於在兩個通信應用程序之間提供保密性和數據完整性
- SSL:SSL(Secure Sockets Layer 安全套接層),及其繼任者傳輸層安全(Transport Layer Security,TLS)是為網絡通信提供安全及數據完整性的一種安全協議。
TLS與SSL在傳輸層與應用層之間對網絡連接進行加密。
application.yml中配置SSL如下所示:
server:
ssl:
enabled: true
key-alias: scg
key-store-password: scg1234
key-store: classpath:scg-keystore.p12
key-store-type: PKCS12
Spring Cloud Gateway可以路由請求到http或https的服務,如果是將請求路由到https服務,可以通過下面的配置,讓網關信任所有的后面服務的證書:
spring:
cloud:
gateway:
httpclient:
ssl:
useInsecureTrustManager: true
這種配置方式不適合用於生產環境,在生產環境中,可以在網關這里配置一些信任的證書,如下面配置所示:
spring:
cloud:
gateway:
httpclient:
ssl:
trustedX509Certificates:
- cert1.pem
- cert2.pem
如果沒有給網關配置可以信任的證書,那么這些默認的證書將被使用,不過,這些配置可以被系統屬性設置(javax.net.ssl.trustStore)覆蓋。
TLS握手(TLS Handshake)
在Spring Cloud Gateway服務中,有一個客戶端的連接池,用於向后台的服務路由請求。當使用Https通信時,客戶端會初始化一次TLS握手,這次握手可以配置一個超時時間,如下所示:
spring:
cloud:
gateway:
httpclient:
ssl:
handshake-timeout-millis: 10000
close-notify-flush-timeout-millis: 3000
close-notify-read-timeout-millis: 0
原文文檔:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.1.0.RELEASE/multi/multi__tls_ssl.html QQ交流群:677464431