- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我确定这是一个常见问题解答,但我找不到任何我认为是同一个问题的内容。
我在 Tomcat 中运行了几个网络应用程序,其中有一些页面,例如由 web.xml 中的 secret 性元素定义的受 SSL 保护的登录页面。其中一个应用程序还接受通过证书进行的客户端身份验证。我还有一个相当广泛的基于 JAAS 的授权和身份验证方案,并且在各种 Web 应用程序之间存在各种共享代码和不同的 JAAS 配置等。
我真的不想在完成以下任务时打扰其中任何一个。
在添加更多 Tomcat 实例之前,我现在正在 Tomcat 前面插入带有 mod-proxy 和 mod-proxy-balancer 的 Apache HTTPD 作为负载平衡器。
我想为 HTTPS 请求完成的是,在没有 HTTPD 作为 SSL 端点的情况下,它们被“盲目”重定向到 Tomcat,即 HTTPD 只是将密文直接传递给 Tomcat,这样 TC 就可以继续做它已经在登录时做的事情, SSL、web.xml secret 性保证,以及最重要的客户端身份验证。
我描述的配置是否可行?
我对 webapps、SSL、HTTPS 和 Tomcat 非常熟悉,但我对 Apache HTTPD 的外部知识了解有限。
很高兴在必要时移动它,但它是一种使用配置文件进行编程;)
最佳答案
这听起来类似于 this question ,我已经回答说这是不可能的:
You can't just relay the SSL/TLS traffic to Tomcat from Apache. Eitheryour SSL connection ends at Apache, and then you should reverse proxythe traffic to Tomcat (SSL [between Httpd and Tomcat] is rarely useful in this case), or you makethe clients connect to Tomcat directly and let it handle the SSLconnection.
我承认支持此声明的链接有点少。我想我可能是错的(我只是从未见过这样做,但这并不严格意味着它不存在......)。
如您所知,您需要在用户代理和 SSL 端点(在本例中,您希望它是 Tomcat)之间建立直接连接或完全中继的连接。这意味着 Apache Httpd 将无法查看 URL:它最多只能知道主机名(使用服务器名称指示时)。
唯一似乎不依赖于 mod_proxy
documentation 中的 URL 的选项是 AllowCONNECT
,这是用于 HTTPS 的转发代理服务器。
甚至the options in mod_proxy_balancer
在配置的某个点期望路径。它的文档没有提到 SSL/HTTPS(“它为 HTTP、FTP 和 AJP13 协议(protocol)提供负载平衡支持”),而 mod_proxy
提到 CONNECT
时至少会谈到 SSL .
我会建议几个选项:
使用 iptables
基于负载均衡器,不经过 Httpd,直接结束 Tomcat 中的连接。
在 Httpd 上结束 SSL/TLS 连接并使用普通 HTTP 反向代理到 Tomcat。
第二个选项需要更多的配置来处理客户端证书和 Tomcat 的安全约束。
如果您已经使用 <transport-guarantee>CONFIDENTIAL</transport-guarantee>
配置了您的网络应用程序,您需要让 Tomcat 将连接标记为安全连接,尽管它看到它们来自其普通 HTTP 端口。对于 Tomcat 5,here is an article (最初是法语,但自动翻译还不错)描述了如何实现一个阀门来设置 isSecure()
. (如果您不熟悉 valves,它们类似于过滤器,但在将请求传播到 webapp 之前在 Tomcat 本身内运行。它们可以在 Catalina 中配置)我认为从 Tomcat 5.5 开始,HTTP connector secure
option正是这样做的,不需要你自己的阀门。 AJP 连接器也有类似的选项(如果使用 mod_proxy_ajp
或 mod_jk
)。
如果使用 AJP 连接器,mod_proxy_ajp
将转发链中的第一个证书并使其在 Tomcat 中可用(通过普通请求属性)。你可能需要 SSLOptions +ExportCertData +StdEnvVars
. mod_jk
(尽管据我所知已弃用)也可以转发客户端发送的整个链(使用 JkOptions +ForwardSSLCertChain
)。使用 proxy certificates 时可能需要这样做(如果没有链到他们的最终实体证书,这是没有意义的)。
如果你想使用mod_proxy_http
, 一个技巧是通过 an HTTP header ( mod_header
) 传递证书, 使用类似 RequestHeader set X-ClientCert %{SSL_CLIENT_CERT}s
的东西.我不记得确切的细节,但重要的是要确保这个 header 被清除,这样它就永远不会来自客户端的浏览器(否则谁可以伪造它)。需要全链的可以试试this Httpd patch attempt .这种方法可能需要一个额外的阀门/过滤器才能将集管变成 javax.servlet.request.X509Certificate
(通过解析 PEM block )。
其他一些可能感兴趣的点:
CLIENT-CERT
据我所知,指令不会让 Httpd 请求客户端证书(否则,当直接使用 JSSE 连接器时,这是通过可以访问 SSLSession
的阀门完成的)。您可能需要在 Httpd 中配置匹配路径以请求客户端证书。关于Apache HTTPD/mod_proxy/Tomcat 和带客户端身份验证的 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10133711/
我在 Cloudflare 的域名服务器上有一个域名 example.com。该域指向我的专用服务器的 IP 地址,该服务器运行 CentOS/WHM/cPanel。该站点可访问 - 一切都很好。 我
我正在努力将 SSL 支持添加到我们现有的应用程序中,并已开始考虑向后兼容性。 与我读过的其他帖子不同的一个特殊情况是服务器可能不一定使用 SSL 代码更新。所以我将有一个 SSL 客户端连接到一个对
我有几个 https://*.rest-service.mydomain.com。随着服务数量的增加,我觉得管理 SSL 证书的成本很高。我为 *.mydomain.com 购买了通配符证书。 新添加
我的客户要求我在他的网站上做反向 ssl。但我是这个学期的新手。谁能帮我解决这个问题。 请描述或引用如何做。 最佳答案 查看 this wiki article . In the case of se
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 去年关闭。 Improve this
我连接到我的网络服务器上的存储库,但是当我尝试推送我的更改时,它显示:“错误 403:需要 ssl”,但在我的存储库设置中我已经激活了 ssl 选项。 有什么建议吗? 最佳答案 当您连接到存储库时,您
抱歉,如果这听起来像是转储问题,我已经阅读了很多关于 SSL 握手和 SSL 工作原理的文章和文档。我对一件事感到困惑,如果有人能澄清我就太好了。 我知道私钥要保密。但是我已经看到通过在请求中指定私钥
随着物联网越来越主流,越来越需要从硬件发送http请求。 一个主要问题是硬件微 Controller 无法发送 ssl 请求,但大多数服务器/网站/服务都在使用 ssl。 所以,问题是,有没有桥(一个
我有一个 ssl 页面,它还从非 ssl 站点下载头像。我能做些什么来隔离该内容,以便浏览器不会警告用户混合内容吗? 最佳答案 只是一个想法 - 或者: 尝试在头像网站上使用 ssl url,如有必要
我在 Digital Ocean droplet(使用 nginx)上设置了两个域。我已经在其中一个(domain1)中安装了一个 SSL 证书,并且那个证书一切正常。第二个域 (domain2) 不
我收到这个错误: Error frontend: 502 Bad gateway 99.110.244:443 2017/09/28 13:03:51 [error] 34080#34080: *10
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 6 年前。 Improve
我遇到了一个问题,我正在构建一个 nginx 反向代理以定向到不同 url 路径上的多个微服务。 该系统完全基于 docker,因此开发和生产使用相同的环境。这在安装 SSL 时给我带来了问题,因为
所以我知道要求 SSL 证书和接受之间的根本区别,一个意味着您必须拥有 SSL 证书,另一个意味着您不需要。 在某个网页的 IIS 管理器中,我有以下设置: 我遇到的问题是,当我设置需要 SSL 证书
我今天才发现 .app 域名需要 SSL 证书。我购买它是为了将 DNS 重定向到已经设置了 SSL 证书的站点,所以我的问题是是否可以设置它? 我正在使用 Google Domains,在将合成临时
堆栈 : react ,NGINX 1.14.0,GUnicorn,Django 2.2.8,Python 3.6.9 错误 : 在浏览器:当 React 调用 Django API(当然是在请求头中
假设我在计算机上编辑主机文件以使 google.com 指向我的 VPS 服务器 IP,并且服务器具有通过 Apache 或 Nginx 配置的 google.com 的虚拟主机/服务器 block
我有一个场景,我正在处理用于 URL 路由的 IIS 网站配置。我已添加网站并在服务器上导入所需的证书。 我的情况是(我有多个网站 URL 和两个 SSL 证书 - 如下所示): qatest1.ab
我知道服务器发送的证书无法伪造(仍然存在 MD5 冲突,但成本高昂),但是伪造客户端又如何呢?在中间人攻击中:我们不能告诉服务器我们是合法客户端并从该服务器获取数据并对其进行操作,然后使用合法客户端公
我已通读相关问题,但无法完全找到我要查找的内容。我设置了一个名为“domain.com”的域,并创建了两个子域“client.domain.com”和“client-intern.domain.com
我是一名优秀的程序员,十分优秀!