0

我想在 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>
4

3 回答 3

1

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

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

于 2013-05-17T22:08:45.863 回答
1

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

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

你可能想添加类似的东西

proxy_cache_valid 200 1d;

到你的配置。

于 2013-05-18T05:17:00.973 回答
0

我的完整配置示例(与 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/;
    }
}
于 2021-06-28T06:26:51.927 回答