nginx代理不缓存OCSP响应
问题描述:
我想使用nginx作为OCSP响应者前面的缓存代理。 '使用POST方法的OCSP请求构造如下:Content-Type头部具有值“application/ocsp-request”,而消息的主体是OCSPRequest的DER编码的二进制值。 (从RFC2560)nginx代理不缓存OCSP响应
因此,我配置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不缓存响应。随机数不是作为请求的一部分发送的。使用Wireshark我验证了我的所有请求都是相同的(在HTTP层上)。如何配置缓存响应的nginx?
请注意,我用下面的命令来进行测试:
openssl ocsp -issuer cacert.crt -no_nonce -CAfile CAbundle.crt -url http://localhost/ -serial <SERIAL>
答
还有很多更多的缓存不仅仅是缓存它们是由的DER OCSP响应。查看轻量级的OCSP配置文件,并确保您的响应者在响应中包含必要的标题。
我会建议您使用专门构建OCSP代理缓存,那里有很多。例如,Axway的验证授权中继器是一个不错的选择。
答
在我的邮件列表这解决了我的问题的答案的同时:
您配置不包含proxy_cache_valid(见 http://nginx.org/r/proxy_cache_valid),并在通过 proxy_ignore_headers同时它忽略所有标题可用于根据响应标头设置响应有效性的 。也就是说,没有 响应将被缓存在上面的配置中。
您可能要添加如
proxy_cache_valid 200 1d;
到您的配置。