【问题标题】:nginx proxy doesn't cache OCSP responsesnginx 代理不缓存 OCSP 响应
【发布时间】:2021-07-01 08:55:25
【问题描述】:

我想在 OCSP 响应器前使用 nginx 作为缓存代理。 '使用 POST 方法的 OCSP 请求的构造如下:Content-Type 标头具有值“application/ocsp-request”,而消息正文是 OCSPRequest 的 DER 编码的二进制值。 (来自 RFC2560)

因此,我将 nginx 配置如下:

proxy_cache_path  /tmp/nginx/cache levels=1:2 keys_zone=my-cache:8m max_size=1000m inactive=600m;
server {
        # Make site accessible from http://localhost/
        server_name localhost;
        location / {
                proxy_pass  http://213.154.225.237:80; #ocsp.cacert.org
                proxy_cache my-cache;
                proxy_cache_methods    POST;
                proxy_cache_valid  200 302  60m;
                proxy_cache_valid  404      1m;
                proxy_cache_key        "$uri$request_body";
                expires off;
                proxy_set_header        Host            $host;
                proxy_set_header        X-Real-IP       $remote_addr;
        }
)

我可以通过 nginx 访问 OCSP 响应程序,并按预期收到响应 - 没问题。 问题是 nginx 不缓存响应。 Nonce 不会作为请求的一部分发送。使用 Wireshark,我验证了我的所有请求都是相同的(在 HTTP 层上)。如何配置 nginx 缓存响应?

注意,我使用以下命令进行测试:

openssl ocsp -issuer cacert.crt -no_nonce -CAfile CAbundle.crt -url http://localhost/ -serial <SERIAL>

【问题讨论】:

    标签: nginx proxy pki ocsp


    【解决方案1】:

    缓存 OCSP 响应不仅仅是缓存构成它们的 DER。查看轻量级 OCSP 配置文件并确保您的响应者在响应中包含必要的标头。

    我建议您使用专门构建的 OCSP 代理缓存,那里有很多。例如,Axway 的 Validation Authority Repeater 就是一个不错的选择。

    【讨论】:

      【解决方案2】:

      与此同时,我在邮件列表中得到了答案,解决了我的问题:

      您的配置不包含 proxy_cache_valid(请参阅 http://nginx.org/r/proxy_cache_valid),同时通过 proxy_ignore_headers 它忽略所有可能用于 根据响应标头设置响应有效性。也就是说,没有 响应将使用上面的配置缓存。

      你可能想添加类似的东西

      proxy_cache_valid 200 1d;

      到你的配置。

      【讨论】:

        【解决方案3】:

        我的完整配置示例(使用 openca-ocsp):

        nginx.conf:

        proxy_cache_path /var/cache/nginx/ocsp levels=1:2 min_free=1024M keys_zone=ocsp:10m;
        

        conf.d/ocsp.conf

        server {
            listen 80;
            proxy_cache ocsp;
            proxy_cache_valid 200 404 2m;
            proxy_cache_min_uses 1;
            proxy_ignore_headers    X-Accel-Expires Expires Cache-Control;
            proxy_cache_methods  POST;
            proxy_cache_key "$request_uri|$request_body";
            add_header X-GG-Cache-Status $upstream_cache_status;
            location = /ocsp {
                # Allow only POST
                limit_except POST {
                 deny all;
                }
                proxy_pass http://ocspd:2560/;
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2013-09-09
          • 1970-01-01
          • 2021-10-21
          • 2016-05-15
          • 2012-03-03
          • 2016-12-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多