【问题标题】:Redirects been downgraded from Https to Http重定向已从 Https 降级为 Http
【发布时间】:2018-08-10 13:32:34
【问题描述】:

我们正面临一个我们并不真正知道它来自哪里的问题。

我们的应用程序使用Spring Cloud、Spring Oauth2 和Spring Boot 1.5.9。入口点是一个 API-Gateway 服务,使用 Zuul 将调用重定向到其他微服务。有一个Authorization-server 来处理Oauth2 授权,不能从外部访问,而是通过API-Gateway。

它被配置为对来自客户端的每个调用使用Https,然后我们在系统内部使用Http 在微服务之间进行通信。它位于配置有证书的Apache proxy 后面,用于使用Https 并禁用端口80。

我们目前遇到的问题是,来自Spring Security 过滤器的每个重定向最终都会在浏览器中从Https 降级为Http,然后由于端口 80 被禁用并且找不到应用程序。

该应用程序以前可以工作,但现在不行了。我们使用 docker,所以我们尝试重新部署以前的图像,但它们也不起作用。 Apache conf 也没有改变。

我们并不确切知道哪个部分出现故障,如果是 Apache proxy 或 Spring 配置,特别是当我们能想到的一切都恢复到以前的工作问题时。

通过此设置,哪些因素会导致重定向发生变化?我们如何验证它? Spring Security 配置会影响这一点,还是更有可能来自 Apache proxy?

这是我们目前拥有的Apache config:

<VirtualHost *:443>
  SSLEngine on
  SSLCertificateFile /etc/apache2/vpp-api/ssl/server-cert.pem
  SSLCertificateKeyFile /etc/apache2/vpp-api/ssl/server-key.pem

  SSLVerifyDepth 10
  SSLCACertificateFile /etc/apache2/vpp-api/ssl/cacert.pem

  <location />
    ProxyPreserveHost on
    ProxyPass http://localhost:8080/
    ProxyPassReverse http://localhost:8080/
  </location>

</VirtualHost>

【问题讨论】:

    标签: spring security https httpd.conf


    【解决方案1】:

    我终于找到了问题。基本上就是Apache conf 中的这一行:

    ProxyPreserveHost on
    

    它正在更改标头 Location,因为在我们系统内重定向的所有请求都丢失了 Https 协议。在此之后,所有发回的重定向都使用Http。

    继续使用此配置的解决方案是在Apache conf 中手动覆盖Http:

    Header edit Location ^http://(.*)$ https://$1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-10
      • 2017-10-06
      • 2017-11-04
      • 2019-12-17
      • 2016-01-17
      • 2011-09-28
      • 2017-07-18
      • 2018-04-09
      相关资源
      最近更新 更多