nginx 0.8.33 с OpenSSL 0.9.8m, проверка клиентских сертификатов.

Yuriy Taraday yorik.sar на gmail.com
Чт Мар 4 13:55:21 MSK 2010


Добрый день.

Система - FreeBSD 7.2, nginx 0.8.33 и OpenSSL 0.9.8m - из портов.
Конфиг nginx (только строчки, касающиеся ssl):
        ssl  on;
        ssl_certificate      root_ca_zone/server.cert.pem;
        ssl_certificate_key  root_ca_zone/server.key.pem.unencrypted;

        ssl_session_cache builtin;
        ssl_session_timeout  3h;

        ssl_client_certificate server.chain.pem;
        ssl_verify_client optional;
        #ssl_verify_depth 2;

        ssl_protocols  TLSv1;
        ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers   on;

В server.chain.pem - 2 сертификата, корневой и промежуточный.
Серверный и клиентский сертификаты выписаны промежуточным CA.

Проверка сертификата с таким конфигом проходит успешно с OpenSSL
0.9.8l и неуспешно с OpenSSL 0.9.8m, если же убрать комментарий от
ssl_verify_depth, работает и в 0.9.8m.
По логам, nginx не уходит глубже depth=1 с новой версией OpenSSL.

Судя по всему, это связано со следующим новшеством 0.9.8m:
  *) Fix the server certificate chain building code to use X509_verify_cert(),
     it used to have an ad-hoc builder which was unable to cope with anything
     other than a simple chain.
     [David Woodhouse <dwmw2 at infradead.org>, Steve Henson]

Ожидаемо ли такое изменение в поведении? Так и должно быть?

С уважением, Юрий.


Подробная информация о списке рассылки nginx-ru