spring-boot - Spring Cloud Gateway 不使用 HTTPS
问题描述
当使用 Spring Cloud Gateway 时server.ssl.enabled=true
,我得到:ERR_SSL_VERSION_OR_CIPHER_MISMATCH
Unsupported protocol 客户端和服务器不支持常见的 SSL 协议版本或密码套件。
只有禁用 SSL 我才能使用网关(server.ssl.enabled=false
)
如何通过 Spring Cloud Gateway 强制使用 HTTPS?
完整的源代码,包括发现服务和一个演示用户-ws,位于:https ://github.com/bcfernandez/Demo-SpringCloud.git
users-ws 入口点正在使用 HTTPS:https://localhost:8181/users/status 但是,当我尝试通过网关访问 users-ws 时(https://localhost:8011/users/v1/status ),我明白了ERR_SSL_VERSION_OR_CIPHER_MISMATCH
。
网关 app.properties 如下:
server.port=8011
spring.application.name=trm-api-gateway
spring.devtools.restart.enabled=true
# WARNING: TO BE REMOVED ON PRODUCTION
spring.cloud.gateway.discovery.locator.enabled=true
spring.cloud.gateway.discovery.locator.lowerCaseServiceId=true
#Routes filtering
spring.cloud.gateway.routes[0].id=users-service_v1
spring.cloud.gateway.routes[0].predicates[0]=Path=/users/v1/**
spring.cloud.gateway.routes[0].predicates[1]=Method=GET
spring.cloud.gateway.routes[0].filters[0]=RewritePath=/users/v1(?<segment>/?.*), /users${segment}
spring.cloud.gateway.routes[0].uri=lb://users-ws
#WARNING: TO BE REMOVED ON PRODUCTION ENVIRONMENT
#Using an insecure trust manager is not suitable for production. For a production deployment, you can configure the gateway with a set of known certificates that it can trust
spring.cloud.gateway.httpclient.ssl.useInsecureTrustManager=true
# Eureka Info
eureka.client.serviceUrl.defaultZone=http://localhost:8010/eureka
eureka.instance.hostname=localhost
eureka.instance.non-secure-port-enabled=false
eureka.instance.secure-port-enabled=true
#SSL Key Info
server.ssl.enabled=true
server.ssl.key-alias=mySelfSignedKey
server.ssl.key-store-password=password@2020
server.ssl.key-store=myKeyStore.p12
server.ssl.key-store-type=pkcs12
# Properties set for development purposes only
logging.level.web=DEBUG
logging.level.org.springframework.cloud.gateway=DEBUG
debug=true
解决方案
推荐阅读
- python-3.x - 对角线数据框到 1 行
- python - 连接数据框 pandas
- git - 在 Azure DevOps 管道中执行 git push 但出现致命错误
- python - 如何检查页面烧瓶的总浏览量?
- reactjs - 如何从 React JS 中的另一个组件路由
- c# - Firebase Unity 获取数据太慢
- reactjs - 如何在 React 中获取 mp3 文件的音频持续时间
- c# - Xaramin.forms 按钮 Isenable 失败
- git - 如何使用 Git 仅跟踪项目中的 .cpp 和 .h 文件
- laravel - 如何检查用户名和密码是否匹配 laravel 7