Прокси-сервер nginx не кэширует ответы OCSP

Я хочу использовать nginx в качестве кеширующего прокси-сервера перед ответчиком OCSP. «Запрос OCSP с использованием метода POST строится следующим образом: заголовок Content-Type имеет значение «application/ocsp-request», а тело сообщения представляет собой двоичное значение кодировки DER OCSPRequest». (из 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;
        }
)

Я могу получить доступ к ответчику OCSP через nginx, и ответы получены, как и ожидалось - без проблем. Проблема в том, что nginx не кеширует ответы. Nonces не отправляются как часть запроса. Используя Wireshark, я убедился, что все мои запросы идентичны (на уровне HTTP). Как настроить nginx, чтобы он кешировал ответы?

Обратите внимание, я использую следующую команду для тестирования:

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

person jans    schedule 08.05.2013    source источник


Ответы (3)


Кэширование ответов OCSP — это гораздо больше, чем просто кэширование DER, из которого они состоят. Просмотрите упрощенный профиль OCSP и убедитесь, что ваш ответчик включает в ответ необходимые заголовки.

Я бы порекомендовал вам использовать специально созданный кеш прокси OCSP, их много. Например, ретранслятор центра проверки Axway — хороший выбор.

person user2395612    schedule 17.05.2013

Тем временем я получил ответ в списке рассылки, который решил мою проблему:

Ваша конфигурация не содержит proxy_cache_valid (см. http://nginx.org/r/proxy_cache_valid), и в то же время через proxy_ignore_headers он игнорирует все заголовки, которые могут использоваться для установки достоверности ответа на основе заголовков ответа. То есть никакие ответы не будут кэшироваться с приведенной выше конфигурацией.

Вероятно, вы хотите добавить что-то вроде

proxy_cache_valid 200 1 д;

к вашей конфигурации.

person jans    schedule 18.05.2013

Мой полный пример конфигурации (работает с 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/;
    }
}
person Sergey    schedule 28.06.2021