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