由于存在错误 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