![在 AJP 中使用“secret”时,Tomcat 7.0.100 和 Apache 服务器 2.4 出现错误 403](https://linux22.com/image/749261/%E5%9C%A8%20AJP%20%E4%B8%AD%E4%BD%BF%E7%94%A8%E2%80%9Csecret%E2%80%9D%E6%97%B6%EF%BC%8CTomcat%207.0.100%20%E5%92%8C%20Apache%20%E6%9C%8D%E5%8A%A1%E5%99%A8%202.4%20%E5%87%BA%E7%8E%B0%E9%94%99%E8%AF%AF%20403.png)
由于存在错误 CVE-2020-1938,我们希望使用最新的 Tomcat 7.0.100。另请参阅CVE-2020-1938 我们还使用 2.4 版本的 Apache 服务器,它通过 AJP 连接到 Tomcat。
最新版本的 Tomcat 需要进行各种新的安全通信设置,我们已经进行了这些设置。不幸的是,我们总是收到 HTTP 错误 403,不知道为什么。
在 Apache worker.properties 中我们有以下设置:
worker.list=okkommwm57f
ps=\
worker.okkommwm57f.type=ajp13
worker.okkommwm57f.host=192.168.181.240
worker.okkommwm57f.secret=123456
worker.okkommwm57f.port=8309
worker.okkommwm57f.socket_keepalive=1
worker.okkommwm57f.connect_timeout=10000
worker.okkommwm57f.prepost_timeout=10000
worker.okkommwm57f.socket_timeout=10
worker.okkommwm57f.connection_pool_timeout=600
AJP 连接器配置如下:
<Connector port="8309" protocol="AJP/1.3" redirectPort="8443" secretRequired="true" secret="123456" address="192.168.181.240" />
当我测试网站时,我总是收到 HTTP 错误 403。我尝试了不同的版本,但都无济于事。已经将“secretRequired”设置为“false”。还是不行。
也许有人有主意并可以帮助我解决这个问题。谢谢。
答案1
我遇到过同样的问题。
我必须添加allowedRequestAttributesPattern=".*"
到连接器
所以你的情况
<Connector port="8309" protocol="AJP/1.3" redirectPort="8443" secretRequired="true" secret="123456" address="192.168.181.240" allowedRequestAttributesPattern=".*" />
这是 Tomcat 7.0.100 添加的新属性。
向 AJP/1.3 连接器添加新属性 allowedRequestAttributesPattern。具有无法识别属性的请求将被阻止并显示 403。(markt)
虽然我还没搞清楚我们发送的是什么属性。但是如果设置使用通配符,那么您可能发送了无法识别的属性作为 AJP 请求的一部分。
答案2
我遇到了同样的问题。诀窍是设置密码。因此,以下方法为我们解决了这个问题:
服务器.xml:
<Connector port="8109" protocol="AJP/1.3" redirectPort="8443" secret="verysecure" secretRequired="true"/>
工人.属性:
worker.tomcat-06.secret=verysecure