在没有证书的情况下重写为 https?

在没有证书的情况下重写为 https?

我们的环境如下:

HLB(Ace)-->冗余Apache服务器-->后端Websphere服务器

安全流量进入负载均衡器,SSL 证书在此解密。然后,请求被转发到两个 Apache Web 服务器之一。然后,Apache 会根据需要将请求转发到适当的 Websphere 应用程序服务器。Websphere 通过相同路径回复客户端。

我们的网络小组告诉我们,不应在网络服务器上安装 SSL,因为它会阻止进行数据包跟踪。

对于我们内部编写的应用程序,我们进行相对重定向,因此当 URL 被重定向时,它在外部仍保持 HTTPS。但是,我们购买了一款产品,可以处理并将绝对重定向作为 HTTP 发送回客户端。我们相信这是因为 Apache 接收的请求未加密。

我们正在尝试找到一种方法让 apache 将 Websphere 中的应用程序(该应用程序是 Vignette Portal)的协议重写为 https

我试过一个简单的

<Location /LocationINeed>
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</Location>

但那没用。据我所知,这个绝对值强制直接重定向到客户端并最终创建一个循环。

我是一个相当缺乏经验的 Apache 管理员,花了一天时间在网上搜索 MOD_substitutem 和 mod_rewrite,但所有的尝试都失败了。

如果您遇到过这种情况,我很想听听您是如何解决这个问题的。

答案1

如果您的应用程序提供的页面中有一些http://指向其自身的绝对链接,那么您将必须修复该应用程序。

如果只是关于Location标题,你可以尝试类似的方法: 使用mod_headers并使用如下规则:

Header edit Location ^http://www.example.com/hudson/ https://www.example.com/hudson/

编辑:

关于为什么会发生这种情况的一些背景知识:这个问题是 HTTPLocation标头的问题,而不是页面内的相对链接的问题,原因是Location根据规范,标头始终需要绝对URI

[...] 该字段值由单个绝对 URI 组成。

   Location       = "Location" ":" absoluteURI

(老实说,我认为某些浏览器可能能够理解相对 URI,并将其解释为相对于它们发送的初始请求。但是,这超出了规范,某些工具/浏览器不会喜欢它。)

相关内容