假设我们有以上简单的系统配置。
系统可以做的是:
问题是:如何使用HTTPS使元素之间的整体通信安全?也许哪些淘汰了其他人,值得吗?假设zuul背后的所有内容可以安全地通过HTTP进行通信,那会不会更好?
由于问题相当复杂,我将其分成较小的部分并添加了我目前的知识(可能不正确)。为了达到预期的效果,我认为我需要解决以下4点:
1。使用HTTPS在Eureka注册服务:
基于文档,我设法获得低于配置,但这还够吗?
eureka.instance:
nonSecurePortEnabled: false
securePortEnabled: true
secure-port: ${server.port}
2。强制@FeignClient使用HTTPS
这是我根本不知道的......我应该在每个@FeignClient中使用“https”信息吗?例如,我的 Foo 服务已经定义了
@FeignClient("https://bar")
或者我可以通过在application.yml中设置来强制@FeignClient默认使用HTTPS:
ribbon.isSecure: true
还是有第3个合适的选择?
第3。强制Zuul仅接受HTTPS请求
我还需要做更多其他事情吗?
@Configuration
class ZuulConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.portMapper().http(${nonSecurePort}).mapsTo(${securePort});
...
}
}
4。允许Zuul转发HTTPS请求
设置完所有上述元素后,我需要对zuul的配置进行任何特殊更改,除了以下内容吗?
zuul:
ignored-services: '*'
routes:
foo:
path: /foo/**
bar:
path: /bar/**