如何通过 http 代理启用 OCSP Stapling?

如何通过 http 代理启用 OCSP Stapling?

我想在运行 Apache httpd 和 Nginx 的 Linux 网络服务器上使用 OCSP 装订 SSL 证书。然而,默认情况下,Nginx 和 Apache 都希望直接访问 OCSP 响应器。

但是,我的网络服务器位于使用直接服务器返回/直接路由的负载均衡器后面,因此我的主机配置了公共 IP 地址,并接收和响应这些公共 IP 上的传入流量,但我的服务器无法使用这些公共 IP 建立新的发起连接。这些服务器在私有(非公共 IP 空间)网络上运行,无法通过 NAT 访问公共互联网,而是通过 HTTP 代理访问。

从安全角度来看,这完全没问题。我不想仅仅为了 OCSP 装订而在网络上引入 NAT,而且我完全可以使用 HTTP 代理来处理 OCSP 请求(反正它们都是 HTTP)。

对我来说,“最佳”解决方案只是配置 Apache/Nginx 以使用 HTTP 代理访问 OCSP 响应器 - 但据我所知,没有这样做的选项。

我遇到的最接近的选择是

  • 使用 Apache 的 SSLStaplingForceURL(它只是简单地覆盖 x509 AIA 端点)和反向代理,而反向代理又具有公共互联网访问权限。反向代理的工作是使用实际的 OCSP 响应器重写主机头和端口并连接到该响应器。
  • 使用本地 iptables 规则将发往 OCSP 响应器的本地流量通过 NAT 传输到我的本地 HTTP 代理。为了应对 OCSP 响应器可能变化的 IP 地址,我还将在 /etc/hosts 中添加一个静态(假)条目。

所有这些选项对我来说看起来都不太好,并且确实有严重的缺点(netfilter-NAT 基于 IP;每当 ocsp 响应器的目标 IP 发生变化时,我必须调整我的规则) - 我是否错过了任何更合理的替代方案或 Apache 或 Nginx 中的“正确”配置选项?

答案1

您可以尝试以下操作:http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_stapling_file

设置后,将从指定文件中获取装订的 OCSP 响应,而不是查询服务器证书中指定的 OCSP 响应器。

该文件应采用“openssl ocsp”命令生成的 DER 格式。

答案2

自 Apache 2.4.19 起,Apache 直接支持此功能。

只需设置指令SSLOCSPProxyURL在您的 Apache 配置中指向您的 HTTP 代理,例如:

SSLUseStapling  on
SSLOCSPProxyURL http://my-outgoing-proxy.example:3128/

相关内容