我有一些在 Apache 2.2.8 和 openssl 0.9.7a 上运行的旧版 Web 应用程序。我在最新的浏览器上开始收到 ERR_SSL_VERSION_OR_CIPHER_MISMATCH。Apache 上配置了多个虚拟主机,但我不想因为旧版代码而升级 Apache 服务器。
有什么解决方案可以使我的 Apache 网络服务器使用代理来支持 TLS 1.2,从而避免此错误?
答案1
是的,您当然可以将另一台功能更强大的服务器置于您的服务器前端。这是企业环境中的常见做法,尤其是在旧平台上部署时。
您正在寻找的术语称为“反向代理”,它不会没有后果。
您需要了解以下内容:
- 有关 HTTP 的知识,特别是有关请求标头(例如 Host 和 X-Forwarded-For 等)的知识。
- 了解流量如何变化(原始服务器将开始看到来自反向代理的流量)
- 如何配置您的原始服务器/应用程序以使其在反向代理后面正常工作。这将包括 a) 访问日志记录;b) 如果应用程序要创建指向自身的自引用链接,则正确制定链接;c) 应用程序做出的任何与 IP 相关的访问控制决策。
理论上,设置反向代理并不困难......但是当您不倾向于管道时,它通常会做得很差,并且最终可能会遇到诸如重定向循环以及安全性/可审计性问题等操作问题。
您可能已经在单台服务器上拥有此功能(否则您可能已经有反向代理);因此应该认真考虑将应用程序重新平台化到受支持的平台上;特别是如果您是反向代理新手。
但反向代理确实还有其他好处:
- 在流量到达原始服务器之前对其进行过滤的能力;
- 能够通过功能强大的 Web 服务器提供静态资产;减少原始服务器的负载;
- 缓存流量的能力;减少原始服务器的负载;
- 注入其他中介的能力,例如 Web 应用程序防火墙 (WAF)、内容分发网络 (CDN)、身份验证(例如 SSO、MFA)等。
祝你好运,测试顺利!