Re: Вопрос по TLS и аутентификации
Maxim Dounin
mdounin на mdounin.ru
Пн Апр 3 12:28:11 UTC 2017
Hello!
On Sun, Apr 02, 2017 at 11:25:47PM -0400, DemDA wrote:
> Здравствуйте, уважаемые профи!
> Возник вопрос (точнее наверное два ).
> Подняли NGinx для доступа к одному из защищаемых ресурсов. Сделал
> двустороннюю аутентификацию. Прикрутил ГОСТ. Все взлетело. НО... появилась
> проблема. Когда использую сертификаты, выданные собственным УЦ, где root CA
> самоподписаный - все нормально летает авторизуется... все гуд. Беда в том,
> что для авторизации надо использовать сертификаты ЭП, выданные УЦ нашей
> вышестоящей организации, а там root CA подписан промежуточным сертификатом
> УЦ минкозвязи, который в подписан сертификатом головного УЦ минкомсвязи (он
> самоподписанный). В таком случае у клиента происходит запрос сертификата,
> причем список сертификатов правильный. НО после выбора сертификата ошибка
> 400 - и все. Пробовал catом слеплять сертификаты в разной
Ошибка 400 всегда сопровождается информацией в error-логе о
причинах ошибки, обычно - на уровне info. Стоит заглянуть в лог и
посмотреть, что именно там написано (а если ничего не написано -
поправить уровень логгирования).
> последовательности, пробовал в ssl_trusted_certificate накидывать ....
> ничего. У клиента все сертфикаты установлены.
> Вот конфиг
> server {
> listen 443 ssl;
> server_name tls.oepak22.ru;
> ssl_certificate /etc/nginx/serts/server.crt;
> ssl_certificate_key /etc/nginx/serts/server.key;
> large_client_header_buffers 4 16k;
> ssl_ciphers GOST2001-GOST89-GOST89:HIGH:MEDIUM;
> #ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
> ssl_protocols TLSv1;
> ssl_prefer_server_ciphers on;
> ssl_client_certificate /etc/nginx/serts/ca1.crt;
> #ssl_client_certificate /etc/nginx/serts/xcc.crt;
> ssl_crl /etc/nginx/serts/crl.pem;
> ssl_verify_client on;
> keepalive_timeout 70;
> location / {
> root /www/;
> index index.html;
> }
>
> location /deloweb {
> proxy_pass http://10.33.1.7/deloweb;
> }
Судя по конфигу, вы не пытались задавать ssl_verify_depth, меж тем
для случая, когда используются промежуточные сертификаты, это
необходимо. Подробнее тут:
http://nginx.org/ru/docs/http/ngx_http_ssl_module.html#ssl_verify_depth
> PS. Оговорюсь сразу, что server.crt выдан как раз таки УЦ, который тестовый
> и самоподписанный root CA. Нет ли ничего в этом криминального, что
> сертификат сервера и сертификат клиентов выданы разными УЦ.
Нет, сертификат самого не влият на проверку сертификатов клиентов.
> И еще вопрос: возможно ли использовать одновременно несколько
> ssl_client_certificate? Актуально потому, что у нас в регионе несколько УЦ.
В указанный в директиве файл можно положить произвольное
количество доверенных сертификатов.
--
Maxim Dounin
http://nginx.org/
Подробная информация о списке рассылки nginx-ru