TLS と SSL

ゲートウェイは、通常の Spring サーバー構成に従って、HTTPS でリクエストをリッスンできます。次の例は、その方法を示しています。

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 バックエンドにルーティングする場合は、次の構成ですべてのダウンストリーム証明書を信頼するようにゲートウェイを構成できます。

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