2013-05-08 59 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;

到您的配置。