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

kno*_*ker 5 linux nginx apache-2.4

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

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

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

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

我遇到的最接近的选择是

  • 将 Apache 的 SSLStaplingForceURL(它只是覆盖 x509 AIA 端点)与反向代理结合使用,而反向代理又可以访问公共互联网。反向代理的工作是用实际的 OCSP 响应器重写主机标头和端口并连接到该响应器。
  • 使用本地 iptables 规则对针对本地 HTTP 代理的 OCSP 响应程序的本地发起流量进行 NAT。为了应对 OCSP 响应程序可能发生的 IP 地址变化,我还将在 /etc/hosts 中添加一个静态(假)条目。

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

小智 5

从 Apache 2.4.19 开始,Apache 直接支持这一点。

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

SSLUseStapling  on
SSLOCSPProxyURL http://my-outgoing-proxy.example:3128/
Run Code Online (Sandbox Code Playgroud)


Ana*_*oly 4

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

\n\n
\n

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

\n\n

该文件应采用 \xe2\x80\x9copenssl ocsp\xe2\x80\x9d\n 命令生成的 DER 格式。

\n
\n