2013-05-08 106 views
0

我想使用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> 

回答

1

还有很多更多的缓存不仅仅是缓存它们是由的DER OCSP响应。查看轻量级的OCSP配置文件,并确保您的响应者在响应中包含必要的标题。

我会建议您使用专门构建OCSP代理缓存,那里有很多。例如,Axway的验证授权中继器是一个不错的选择。

0

在我的邮件列表这解决了我的问题的答案的同时:

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

您可能要添加如

proxy_cache_valid 200 1d;

到您的配置。