- 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/
我正在研究PyroCMS的Docker版本。这是我拥有最新文件的repository。如您所见,我正在运行一个堆栈:CentOS 7(带有Supervisord),MySQL,Apache和PHP。这
为了避免对我本地托管的 apache-tomcat Web 服务器上托管的 Web 应用程序进行点击劫持攻击,我正在尝试编辑“httpd.conf”文件以向其附加 X 选项。 用“sudo nano/
更改 httpd.conf 文件后是否需要重新启动 httpd 才能使更改生效? 最佳答案 是的。 HTTPD.conf 是在 apache 启动时读取的,因此要使任何更改生效,您都需要重新启动它。
我的 CentOS7 服务器上有一个 Laravel 项目,位于文件夹“/var/www/html/myProject”中。 我已将“DocumentRoot”和配置目录中的/etc/httpd/co
我在别人的 linux 服务器上(共享主机)。我没有root访问权限。我已经确定它是一个 Redhat 4.1.2-46,以 Centos Release 5.9(Final) 的形式运行。 我有该站
我需要使用/etc/init.d/httpd status 命令来验证它是否在 shell 中运行。我不想使用 pidof pgrep 等——类似 retval=`/etc/init.d/httpd
我已经下载了 httpd-2.4.16.tar.gz 来自 http://www.apache.org/dist/httpd/ 的包裹 并在我的 ubuntu 14.04 LTS 上提取了两次,但我找
我正在使用免费套餐 Amazon AWS EC2 微型实例并托管一个 Wordpress 网站。由于内存太低,我总是会出现“Error Establishing to Database”之类的常见错误
当我启动我的centOS 服务器时。它通过我的错误如下所示。 启动 httpd: (20)Not a directory: httpd: 无法打开错误日志文件/etc/httpd/logs/error
有谁知道什么会导致 Apache 的错误日志中出现此错误(特别是在 Arch Linux 中): PID file /run/httpd/httpd.pid not readable (yet?) a
我设置了 AWS EC2(Windows Server 2012 R2 Base),允许入站 RDP、HTTP 和 HTTPS,并安装了 Wampserver 以及来自 Microsoft 的 64
当我想在centOS 6.7 上重启httpd 服务时出现以下错误: /etc/init.d/httpd restart Stopping httpd:
x-httpd-php5x 和 application/x-httpd-php5x 有什么区别? 多年来,我一直在使用 application/x-httpd-php 和我的网络托管 (Linux),
我已将 apache httpd 服务器从 2.4.6 升级到 2.4.46。 当我触发 systemctl start httpd 时,它显示以下错误: Starting httpd: /usr/s
我有一个 tomcat,监听 8080 端口,还有一个 apache httpd 监听 80 和 443 端口。 The httpd proxies the client through to tom
我安装了 Centos 7 的新副本。然后我重新启动了 Apache,但 Apache 无法启动。我在这个问题上停留了 3 天。连支持都想不通这个错误。 sudo service httpd star
我最近开始升级我的httpd版本 2.2 从带有 RHEL 4 的旧服务器到附带 httpd 的 RHEL 7 2.4 版。 我注意到的变化之一是 conf.modules.d 包含以下文件的目录:
我在我的linux中使用php7.1: 我可以检查一下: # php -v PHP 7.1.16 (cli) (built: Jun 25 2018 08:12:28) ( ZTS ) 因此在我的 h
我正在使用一个使用 Smarty 模板引擎的框架。它在 Windows 中运行良好,但当我尝试在 LAMP 服务器中运行它时,我收到一条消息,如 SELinux 在您的系统上检测到可疑行为。我附上了整
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我是一名优秀的程序员,十分优秀!