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