Re: [offtopic] клиентские SSL-сертификаты

Maxim Dounin mdounin на mdounin.ru
Пн Июл 18 12:17:39 UTC 2016


Hello!

On Mon, Jul 18, 2016 at 12:03:07PM +0300, Evgeniy Berdnikov wrote:

> On Mon, Jul 18, 2016 at 11:05:12AM +0300, Vladislav Shabanov wrote:
> > Пусть есть сайт ABC, на котором внедрили клиентские SSL-сертификаты
> > для сотрудников. Такой сайт любому зашедшему браузеру сообщает, что
> > принимает сертификаты, выданные организацией ZZZ. Если это
> > сотрудник, то он сможет передать сертификат, сайт сможет его
> > проверить, принять решение и т. д. Если нет, то будет выдана
> > какая-то страница ??в доступе отказано??.
> 
>  Мне кажется, что запрос сертификата в SSL/TLS делается передачей клиенту
>  какого-то флага (бита), там нет места для указания развесистых условий
>  вроде "в DN сертификата поле OU должно быть непустым и совпадать со
>  сторокой ZZZ". То есть сказать браузеру "я принимаю сертификаты для
>  организации ZZZ" сервер не имеет технической возможности.

Вам кажется.  Запрос сертификата предусматривает список DN'ов 
корневых сертификатов, которым доверяет запрашивающий сертификат 
сервер.

Цитата из спецификации TLS 1.2, 
https://tools.ietf.org/html/rfc5246#section-7.4.4:

   certificate_authorities
      A list of the distinguished names [X501] of acceptable
      certificate_authorities, represented in DER-encoded format.  These
      distinguished names may specify a desired distinguished name for a
      root CA or for a subordinate CA; thus, this message can be used to
      describe known roots as well as a desired authorization space.  If
      the certificate_authorities list is empty, then the client MAY
      send any certificate of the appropriate ClientCertificateType,
      unless there is some external arrangement to the contrary.

Собственно, директивы ssl_client_certificate и 
ssl_trusted_certificate отличаются именно тем, будет ли сертификат 
включён в список certificate_authorities, отсылаемых клиенту, или 
нет.

> > Вопрос вот в чём: нехороший человек это заметил и настроил свой сайт
> > DEF так, чтобы во время SSL handshake тот тоже сообщал всем
> > браузерам, что принимает сертификаты организации с названием
> > ZZZ. Правильно ли я понимаю, что сотрудники компании ZZZ после этого
> > уже никогда не смогут посещать сайт DEF анонимно? Браузер ведь будет
> > тупо выдавать единственный установленный сертификат, у которого имя
> > организации совпало?
> 
>  Соответственно, сайт может лишь попросить сертификат. А что ему вернут
>  зависит от того, как ведёт себя браузер. У браузера есть много вариантов
>  для выбора, прежде всего спросить юзера, хочет ли он передавать
>  клиентский сертификат.

Всё так.  Но стоит учитывать, что список authorities легко делает 
выбор браузера однозначным даже в случае наличия у браузера 
нескольких клиентских сертификатов.  Пошлёт ли браузер 
единственный подходящий сертификат автоматически - зависит только 
от него.

Из имеющихся у меня под рукой бразеров (Chrome, Safari, Firefox) - 
ни один не посылает.  Но скажем тот же Firefox - оборудован опцией 
"посылать автоматически", которую можно включить.  Так что стоит 
учитывать возможность небезопасного поведения браузера и следить 
за тем, чем пользуешься.

-- 
Maxim Dounin
http://nginx.org/



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