(请注意:这个问题是众多“你为什么不尝试一下?”问题之一。我当然会,但由于我没有通过谷歌搜索找到明显的答案,我想我还是让它更容易稍后可能需要这个的人通过询问 ServerFault)
我的 Web 应用程序在某些负载均衡器后面通过 HTTPS 提供服务,并允许用户在某些情况下使用客户端证书进行身份验证。现在我被问到是否愿意将 SSL 加密/解密卸载到负载平衡器,以便我运行一个普通的 HTTP 站点(因此更容易调试和配置),而负载平衡器将为用户。免费的额外 CPU 周期当然听起来不错,但是,我不相信我仍然能够检查用户的客户端证书。
是否可以在不运行成熟的 HTTPS 站点的情况下使用客户端证书?
这取决于您如何使用客户端证书对用户进行身份验证和授权。您是否允许任何人拥有由您认可的人签署的证书,或者必须签署证书并且 CN 等于特定的东西或等于组中的用户?您当前的网络服务器是否处理授权或您的应用程序?
执行此操作的典型方法是终止负载均衡器上的 SSL 连接。此负载平衡器将是“成熟的 HTTPS 站点”,并且需要配置为请求客户端证书。然后,您的负载均衡器将执行检查以查看该证书是否由受信任的 CA 签署。然后,负载均衡器会将来自 SSL 证书的详细信息(例如 DN)作为 HTTP 标头添加到对您的应用程序的纯 HTTP 请求。然后,您的应用程序将检查这些 HTTP 标头并根据应用程序和负载均衡器之间的信任向用户授权。我已经看到所有主要的负载平衡器(如 F5、ZXTM 甚至 Apache HTTP Server)都取得了成功。