SpringCloudGateway配置https访问

SpringCloudGateway配置https访问_第1张图片
Spring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。Spring Cloud Gateway作为Spring Cloud生态系中的网关,其不仅提供统一的路由方式,并且基于Filter链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等。

Project Reactor是响应式编程的实现者,之前的文章我写过响应式编程的高并发性能,所以用的人会越来越多,现在来说说如何配置Spring Cloud Gateway,可以直接替代Nginx作为前置的负载均衡器。

下面举例说明如何进行配置:

配置证书信息

在配置文件application.yml中设置证书的基本信息,如下:

server:  
  ssl:    
    enabled: true                         //启用ssl
    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

通过以上几步,网关就可以进行https了,你就可以让它放心的代替nginx了。

你觉得使用SpringCloudGateway进行https访问怎么样啊?感兴趣的可以关注我的公众号(xtech100)。

你可能感兴趣的:(SpringCloudGateway配置https访问)