具有 SSL 客户端证书的 Web 服务的正向代理

具有 SSL 客户端证书的 Web 服务的正向代理

我有许多服务器访问各种外部 Web 服务,其中大多数使用 SSL,其中一些需要客户端证书。我想集中配置客户端证书,并将表示层与底层服务器分离。

虽然我可以使用 Squid 代理请求,但我无法从文档中看到如何告诉 Squid 选择特定于目标 Web 服务的客户端证书。这可能吗?

一种方法是在 Squid 代理之外维护一组 stunnel 实例,然后配置客户端软件以使用带有 URL 重写器的 http 请求通过适当的 stunnel 实例路由请求,但是如果我收到引用 HTTPS DTD 的 XML 响应,则该方法将会中断(除非我使用完整的 MITM 重写内容)。

还有其他解决方案吗?

更新

将“https”重写为“http”的问题在于,它会破坏任何带有 http URI 的附加资源 - 因为协议适配器会将它们转换回 https!

我碰到本文它解决了向代理连接添加客户端证书的问题 - 这可能是一个解决方案。但确实需要将客户端配置为使用代理,还存在命名问题以及如何使其与拆分 DNS 一起工作的问题。诚然,这不是什么大问题,但它让我想到我在这里描述的是大多数 CDN 提供商使用的模式 - 因此我目前正在考虑使用 Apache Traffic Server 作为中间组件 - 这允许使用拆分 DNS、客户端和源服务器之间的单独 SSL 通道以及用于与源服务器通信的客户端证书。

答案1

使用可配置的 CA 证书,对直接 CONNECT 和透明重定向 SSL 流量进行 Squid 中间解密和加密。

http://wiki.squid-cache.org/Features/SslPeekAndSplice

答案2

经过进一步研究,我决定连续使用 pound 实例。我还考虑过使用 stunnel 或 haproxy,但 pound 可以处理 SSL 内容,并且具有处理 http 标头的基本能力。

相关内容