gpt4 book ai didi

tomcat - 尝试使用 HTTP 访问 Tomcat 6 HTTPS 连接器时出现意外结果

转载 作者:行者123 更新时间:2023-11-28 21:54:42 25 4
gpt4 key购买 nike

我按照这篇文章配置了一个 Tomcat 实例:http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html .我注释掉了 HTTP 连接器,因为我希望我的演示应用程序只能通过 HTTPS 访问。我这样配置了 HTTPS 连接器:

   <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystorePass="nopass"
keystoreFile="/home/someuser/.keystore" keyAlias="tomcat" />

当我使用 HTTPS 访问我的演示应用程序的 servlet 的 URL 时,一切正常。

当我尝试使用 HTTP URL 访问它时,我预计它会返回 403 或类似的错误。相反,我下载了一些小的(11 字节?)二进制文件,其名称与 servlet 的名称匹配。

有没有人遇到过类似的问题?你是怎么解决的?我应该检查什么以确保我做的一切都是正确的?

编辑: 我尝试使用 curl 而不是浏览器访问相同的连接器,并注意到它没有返回任何 header 。哦,响应的大小是 7 个字节,而不是 11 个字节。

编辑 2:这是我的演示应用程序的 web.xml 中与安全相关的部分:

<security-constraint>
<web-resource-collection>
<web-resource-name>Secure Servlet</web-resource-name>
<url-pattern>/SecureServlet</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
<auth-constraint>
<role-name>connect</role-name>
</auth-constraint>
</security-constraint>

<security-role>
<description>The role required to connect to the application
</description>
<role-name>connect</role-name>
</security-role>

<login-config>
<auth-method>BASIC</auth-method>
</login-config>

最佳答案

我通过在 server.xml 中注释掉 HTTP 连接器来测试这一点,强制应用程序在 HTTPS 上运行

https://localhost:8443/testapp

按预期工作

http://localhost:8080/testapp

返回 404

http://localhost:8443/testapp

注意不正确 协议(protocol)的混合 和端口 返回一个小的垃圾流,它在 IE 中呈现,在 Firefox 中以二进制形式呈现

这是7个字节

您能否重新检查您是否看到了第三种情况,这种情况在自然情况下不应该发生,但只有在有人修改 URL 时才会发生?

好的,我使用 CONFIDENTIAL 进行了测试,但它仍然没有将 8443 上的 http 重定向到 https。我猜只有当用户在有效的 8080 端口上尝试 http 时才会出现这种情况。

使用 Fiddler,我看到返回的 header 不存在并且响应是垃圾。

HTTP/1.1 200 This buggy server did not return headers

这似乎是标准行为,以这种方式访问​​应用程序的最终用户会看到预期的垃圾。

如果你真的需要,你could try writing你自己的custom Tomcat Valve它就像一个过滤器来处理这种特殊情况并将用户重定向到 SSL

关于tomcat - 尝试使用 HTTP 访问 Tomcat 6 HTTPS 连接器时出现意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7164944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com