9. TLS和SSL

网关可以按照通常的Spring服务器配置通过HTTPS监听请求。 下面的例子展示了如何做这个操作:spring-doc.cadn.net.cn

示例 59. 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后端,可以配置网关以信任所有下游证书,如下所示:spring-doc.cadn.net.cn

Example 60. application.yml
spring:
  cloud:
    gateway:
      httpclient:
        ssl:
          useInsecureTrustManager: true

使用不安全的信任程序包不适合生产。 对于生产部署,您可以使用以下配置,为网关配置一组网关可以信任的已知证书:spring-doc.cadn.net.cn

示例 61. application.yml
spring:
  cloud:
    gateway:
      httpclient:
        ssl:
          trustedX509Certificates:
          - cert1.pem
          - cert2.pem

如果未向 Spring Cloud Gateway 提供受信任的证书,则使用默认的信任存储(可以通过设置 javax.net.ssl.trustStore 系统属性来覆盖)。spring-doc.cadn.net.cn

9.1. TLS握手

网关维护一个客户端池,用于将请求路由到后端。<br>在通过HTTPS通信时,客户端会发起TLS握手。<br>与该握手相关的有几个超时时间。<br>可以配置这些超时时间(默认值如下):<br>spring-doc.cadn.net.cn

示例 62。application.yml
spring:
  cloud:
    gateway:
      httpclient:
        ssl:
          handshake-timeout-millis: 10000
          close-notify-flush-timeout-millis: 3000
          close-notify-read-timeout-millis: 0