9. TLS 和 SSL
网关可以按照通常的 Spring 服务器配置侦听 HTTPS 上的请求。 以下示例显示了如何执行此作:
实施例 62.application.yml
server:
ssl:
enabled: true
key-alias: scg
key-store-password: scg1234
key-store: classpath:scg-keystore.p12
key-store-type: PKCS12
您可以将网关路由路由到 HTTP 和 HTTPS 后端。 如果要路由到 HTTPS 后端,则可以使用以下配置将网关配置为信任所有下游证书:
实施例 63.application.yml
spring:
cloud:
gateway:
httpclient:
ssl:
useInsecureTrustManager: true
使用不安全的信任管理器不适合生产。 对于生产部署,可以使用一组已知证书来配置网关,这些证书可以通过以下配置信任这些证书:
实施例 64.application.yml
spring:
cloud:
gateway:
httpclient:
ssl:
trustedX509Certificates:
- cert1.pem
- cert2.pem
如果未预配受信任的证书,则使用默认信任存储(您可以通过将javax.net.ssl.trustStore
系统属性)。
9.1. TLS 握手
网关维护一个客户端池,用于路由到后端。 通过 HTTPS 通信时,客户端会启动 TLS 握手。 许多超时与此握手相关联。 您可以按如下方式配置这些超时(默认值显示):
实施例 65.application.yml
spring:
cloud:
gateway:
httpclient:
ssl:
handshake-timeout-millis: 10000
close-notify-flush-timeout-millis: 3000
close-notify-read-timeout-millis: 0