java - HTTPS 问题 - 在运行 Java 应用程序时,一些用户会收到 SEC7111

标签 java apache jsp tomcat https

我们已经建立了一个带有安全证书(由 VeriSign 签名)的网站,该证书对大多数用户都适用,但是 X 公司的所有用户都无法正常访问它。访问网站时,用户会看到一个似乎完全没有样式的 HTML 页面(即 CSS 未加载),并且浏览器控制台报告以下内容:

SEC7111: HTTPS security is compromised by http://<ipaddress>:15871/cgi-bin/blockpage.cgi?ws-session=<a session id>

这不会影响其他公司的任何其他用户(到目前为止!),但我们决心找出原因。

我假设该错误表明正在尝试从我们的 HTTPS 站点发出 HTTP 请求,但我搜索了代码库但找不到任何内容。

我们的 Java Web 应用程序在 Apache Tomcat(版本 7)上运行并使用 JSP。所有 Assets 均按以下方式引用:

JSP 页面的顶部:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set value="${pageContext.request.contextPath}" var="baseUrl" />

对 Assets 的引用:

<link rel="stylesheet" href="${baseUrl}/assets/css/bootstrap.css"/>

我们确实将 c:set 值更改为硬编码到 URL,但这没有任何区别。用户仍然得到 SEC7111。为清楚起见,以下是我们将 c:set 值更改为:

<c:set value="https://thewebsite" var="baseUrl" />

在我使用 Firebug 的机器上,我可以看到对站点上 Assets 的所有请求都通过 https 进行,没有 http 调用。

在我们的 Apache Tomcat 前面还有一个 Apache 服务器将所有 http 请求重定向到 https:

Redirect permanent / https://<our website>/

并且在虚拟主机 *:433 部分

ProxyPass        / http://local host:8295/
ProxyPassReverse / http://local host:8295/

请注意,上面的 ProxyPass 和 ProxyPassReverse 确实是 HTTP!这(在我看来)是故意的。一旦与站点建立连接(https://thewebsite.org),后面的调用(到本地主机)就可以是 http。我认为这是合法的。

如果有人可以指出我做错了什么或建议我应该查看的任何途径,请与我们联系!谢谢!

最佳答案

可能的答案:

x 公司正在使用一种名为 Websense 的工具。 Websense 出于某种原因不喜欢我们的网站。 Websense 对我们“未分类”。我不知道这意味着什么或我们如何摆脱“未分类”状态,但这现在是 X 公司与 Websense 之间的问题。

(如果有人知道我在创建证书时做错了什么导致我们“未分类”,请随时告诉我)

关于java - HTTPS 问题 - 在运行 Java 应用程序时,一些用户会收到 SEC7111,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24536559/

相关文章:

java - 在集成测试中使用 redis 禁用 spring session

java - Apache Tomcat 日志记录默认权限

php - 从 CodeIgniter URL 中删除 index.php

java - mod_deflate 与 IBM WebSphere 和 IBM IHS

javascript - Log4JavaScript服务器端接收

java - 签名 Applet 和服务器端 Controller 之间的通信

java - 如何将不同类型的对象包装在一个包装对象中

java - 为什么我的 for 循环不会添加超过 1.0/10,000,000.0 的分数?

Java.sql.connection 对象第二次不工作

javascript - 如何拥有多个具有不同功能的单选按钮?