TLS 和 SSL
网关可以通过遵循常规的Spring服务器配置来监听HTTPS请求。以下示例展示了如何实现:
server:
ssl:
enabled: true
key-alias: scg
key-store-password: scg1234
key-store: classpath:scg-keystore.p12
key-store-type: PKCS12
您可以将网关路由同时指向 HTTP 和 HTTPS 后端。如果路由到 HTTPS 后端,可以通过以下配置将网关设置为信任所有下游证书:
spring:
cloud:
gateway:
httpclient:
ssl:
useInsecureTrustManager: true
使用不安全的信任管理器不适合生产环境。对于生产部署,您可以通过以下配置为网关配置一组已知的可信证书:
spring:
cloud:
gateway:
httpclient:
ssl:
trustedX509Certificates:
- cert1.pem
- cert2.pem
如果Spring Cloud Gateway未配置受信任的证书,则会使用默认的信任存储(您可以通过设置javax.net.ssl.trustStore系统属性来覆盖此默认设置)。
TLS 握手
网关维护一个客户端池,用于路由到后端。通过HTTPS通信时,客户端会发起TLS握手。该握手过程涉及多个超时设置。您可以按如下方式配置这些超时(默认值如下所示):
spring:
cloud:
gateway:
httpclient:
ssl:
handshake-timeout-millis: 10000
close-notify-flush-timeout-millis: 3000
close-notify-read-timeout-millis: 0