【问题标题】:Release a Spring (not boot) application running with HTTPS发布使用 HTTPS 运行的 Spring(非引导)应用程序
【发布时间】:2022-01-17 06:07:48
【问题描述】:

我尝试使用 GitHub 上的 Spring application 与 Azure B2C 建立 SAML 连接。 一切正常,直到我在本地运行,但是当我需要在生产环境中测试这个应用程序时,我发现自己遇到了由于 HTTPS 连接而出现的问题。

我的生产环境基于 AWS,我正在运行在反向代理中配置的 ECS 任务。我正在使用带有 HTTPS 侦听器和 HTTP 规则的负载均衡器在 HTTPS 上重定向。

此应用程序基于 Spring(不是 Spring Boot)并构建了一个我在 Tomcat 7 上运行的 WAR 文件。

当我尝试登录时,此应用程序尝试 ALB 重定向到 HTTPS 的 HTTP 请求,但此重定向使我的 SAML 工作流程无效。

我尝试将requires-channel="https" 添加到我的securityContext.xml 中的任何<security:intercept-url /> 节点,但是当我尝试在线访问应用程序时,我得到了一个ERR_TOO_MANY_REDIRECTS

我需要将 tomcat 和此应用程序配置为仅请求 HTTPS 而无需任何重定向,但我现在不知道如何

【问题讨论】:

    标签: spring https tomcat7 aws-load-balancer


    【解决方案1】:

    我最终分两步找到了解决方案。

    第一步:我将我的 Tomcat 配置修改为仅适用于 https。

    在 server.xml 中,我添加了一个与 TLS 配合使用的连接器

    <Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true" 
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
               keystoreFile="conf/keystore.keystore"
               keystoreType="JKS"
               keystorePass="myStorePass"
               keyPass="myPass" />
    

    然后我删除了 8080 到 443 的重定向。找到带有protocol="HTTP/1.1" 的节点连接器并将其删除。

    第二步:我将负载均衡器修改为仅在具有 443 端口的 HTTS 中工作。为此,我必须在集群上创建一个新目标组和一个新服务。

    【讨论】:

      猜你喜欢
      • 2018-12-07
      • 1970-01-01
      • 2018-11-01
      • 1970-01-01
      • 2016-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多