允许/强制spring-cloud使用HTTPS

时间:2017-03-15 09:09:38

标签: spring-cloud

enter image description here

假设我们有以上简单的系统配置。

  • Spring Zuul作为代理
  • Spring Eureka作为所有系统元素的发现
  • 2个具有业务逻辑的Foo / Bar服务

系统可以做的是:

    根据请求类型
  • Zuul 可以将请求转发给 foo bar 服务。
  • 在某些情况下, foo 可以通过@FeignClient与 bar 联系。

问题是:如何使用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/**

0 个答案:

没有答案