9. TLS和SSL
网关可以按照通常的Spring服务器配置通过HTTPS监听请求。 下面的例子展示了如何做这个操作:
示例 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后端,可以配置网关以信任所有下游证书,如下所示:
Example 60. application.yml
spring:
cloud:
gateway:
httpclient:
ssl:
useInsecureTrustManager: true
使用不安全的信任程序包不适合生产。 对于生产部署,您可以使用以下配置,为网关配置一组网关可以信任的已知证书:
示例 61. application.yml
spring:
cloud:
gateway:
httpclient:
ssl:
trustedX509Certificates:
- cert1.pem
- cert2.pem
如果未向 Spring Cloud Gateway 提供受信任的证书,则使用默认的信任存储(可以通过设置 javax.net.ssl.trustStore 系统属性来覆盖)。
9.1. TLS握手
网关维护一个客户端池,用于将请求路由到后端。<br>在通过HTTPS通信时,客户端会发起TLS握手。<br>与该握手相关的有几个超时时间。<br>可以配置这些超时时间(默认值如下):<br>
示例 62。application.yml
spring:
cloud:
gateway:
httpclient:
ssl:
handshake-timeout-millis: 10000
close-notify-flush-timeout-millis: 3000
close-notify-read-timeout-millis: 0