我正在使用spring云网关来集中所有请求的微服务,然后我改为使用https。到目前为止,一切都很好,我创建了我的自签名证书,并在每个微服务中使用它,并对发送GET,POST,DELETE到每个微服务进行了测试,一切都很好,然后问题来了,当我试图通过spring云网关向微发送http请求时,它显示了这个Bad Request This combination of host and port requires TLS.
我用下面的命令生成了我的证书:
keytool -genkeypair -alias statement -keystore src/main/resources/statement-keystore.p12 -keypass secret -storeType PKCS12 -storepass secret -keyalg RSA -keysize 2048 -validity 365 -dname "C=MA, ST=ST, L=L, O=statement, OU=statement, CN=localhost" -ext "SAN=dns:localhost"
spring cloud gateway app.yml:
server:
port: 8765
ssl:
enabled: true
key-alias: statement
key-store: classpath:statement-keystore.p12
key-store-password: secret
key-store-type: PKCS12
的例子:我在端口8081
上有一个微运行,所以如果我测试像https://localhost:8081/api/v1/statemnts
这样的GET请求,它返回200并显示数据,但如果我尝试使用春云端口https://localhost:8765/api/v1/statemnts
,它返回This combination of host and port requires TLS.
PS:
- 我使用zipkin和rabbitmq作为使用http的跟踪系统。
- 我上传了我的证书给邮差,即使出现问题。
- 这发生在邮差和浏览器
- 如果需要任何其他细节,我会添加更多
Thanks in advance.
遇到了同样的问题,在使用微服务架构时,我使用的解决方案是这样的:
- 只在spring云网关开启https。 不需要在微服务上启用https。
这样你就可以从spring云网关调用你的微服务。我希望这个解决方案能给你提供帮助!!