Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

4 Страницы123>»
Опции
К последнему сообщению К первому непрочитанному
Offline Demonix  
#1 Оставлено : 15 июля 2013 г. 11:29:36(UTC)
Demonix

Статус: Активный участник

Группы: Участники
Зарегистрирован: 28.12.2007(UTC)
Сообщений: 152
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
Добрый день.

Потребовалось организовать следующую схему:
Есть CA-1 и CA-2
Есть кросс-сертификат CA-1, выданный для CA-2.
Есть клиент, использующий сертификат, выданный на CA-2.
Есть сервер (Win 2008/IIS7), используемый организацией CA-1. Доверяет только сертификатам, с корнем CA-1 в цепочке доверия (в т.ч. (через кросс) доверяет сертификатам выданным на CA-2)
Хочется - организовать возможность входа на сервер по сертификату указанному выше клиенту.
Само собой одним клиентом CA-2 дело не ограничивается, могут быть и CA-3, CA-4 и т.д...

КриптоПро послыает certificate_authorities только корневые сертификаты + цепочку доверия для собственного SSL-сертификата.
У клиента не установлен сертификат CA-1, в итоге IE не предлагает выбрать имеющийся у клиента сертификат.
Я знаю, что можно убрать вообще этот список, поставив "Макс. количество сертификатов ЦС" = 0 в настройках КриптоПро, но этого делать не хочется, т.к. у клиента начинают отображаться для выбора вообще все имеющиеся у него сертификаты.

Было замечено, что если скопировать кросс-сертификат в хранишище корневых центров сертификации, то КриптоПро начинает отдавать его в списке certificate_authorities.
Собственно, это именно то поведение, которое нужно; и в этой теме хочется удостовериться, что действительно берутся все без разбора (кроме, видимо, протухших) сертификаты из хранилища доверенных ЦС, и нет ли каких-то планов изменить это?

Если такие планы есть - можно ли что-то предусмотреть, чтобы работала описанная выше схема?
Offline Demonix  
#2 Оставлено : 22 июля 2013 г. 11:35:21(UTC)
Demonix

Статус: Активный участник

Группы: Участники
Зарегистрирован: 28.12.2007(UTC)
Сообщений: 152
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
up
Offline Demonix  
#3 Оставлено : 7 октября 2013 г. 21:51:21(UTC)
Demonix

Статус: Активный участник

Группы: Участники
Зарегистрирован: 28.12.2007(UTC)
Сообщений: 152
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
Пока никто не отвечает я провел еще один эксперимент =)

Прочитав, в статье How Certificate Revocation Works что:
CryptoAPI attempts to build all possible certificate chains.

All possible certificate chains are built using locally cached certificates. If none of the certificate chains ends in a self-signed certificate, CryptoAPI then selects the best possible chain and attempt to retrieve issuer certificates specified in the authority information access extension to complete the chain. This process is repeated until a chain to a self-signed certificate is built.

After CryptoAPI builds a certificate chain up to a trusted root authority certificate, it will check for certificate revocation. The validation will continue from the root CA certificate to the entity certificate presented to the application. If there are multiple certificate chains that terminate in a trusted root authority certificate, then CryptoAPI will validate each chain until it finds a chain that is not revoked.

Я предположил, что нечто подобное может происходить и при выборе сертификата для авторизации в браузере.
Решил проделать подобный трюк на RSA сертификатах.
Сделал два корня и кросс между ними. Корень2, Корень1 и кросс для Корня2, выданный на Корне1 (Кросс1).
Серт клиента выпустил на Корне2.
На сервере поставил Корень1. Сервер (IIS7) отдает Корень1 в certificate_authorities (все остальные корни были удалены из хранилища)
На клиенте поставил Корень2, Корень1 и Кросс1.
На клиенте для клиентского сертификата строится короткая цепочка (до Корня2).
Однако в браузере клиентский сертификат предлагается для выбора (а значит цепочка до Корня1 строится через Кросс1).

Я конечно, понимаю, что вероятность построения правильной цепочки была не 100% и, возможно, мне просто повезло, но на RSA все заработало с первого раза, в отличие от ГОСТовских сертификатов.
Вопрос - действительно ли КриптоПро влияет на алгоритм выбора сертификата для клиентской авторизации?

И если ответ - да, а в случае с RSA действительно проверяются все возможные цепочки - то возможно ли поменять алгоритм в КриптоПро?

Это нужно для всех нас, т.к. с появлением Аккредитованных УЦ, на серверах, в основном, будут стоять корни Минкомсвязи и кроссы других УЦ. И для того, чтобы клиенты других УЦ могли нормально авторизоваываться на сервере - сейчас необходимо удалять с компьютера корни соответствующего УЦ, и ставя корни Минкомсявзяи и кроссы. УЦ, имеющим много клиентов непросто все это будет делать. К тому же клиент может себе случайно все снова сломать, просто поставив обратно корень своего УЦ.
Offline Андрей Писарев  
#4 Оставлено : 8 октября 2013 г. 8:20:19(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,198
Мужчина
Российская Федерация

Сказал «Спасибо»: 537 раз
Поблагодарили: 2176 раз в 1701 постах
Да, действительно, если установлена цепочка с кроссом (ГУЦ\УЦ 1ИС\кросс-сертификат аккредитованного УЦ) - все нормально,
но если поставить свой корневой в доверенные корневые - доступа к web-серверу нет
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#5 Оставлено : 8 октября 2013 г. 8:23:21(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,198
Мужчина
Российская Федерация

Сказал «Спасибо»: 537 раз
Поблагодарили: 2176 раз в 1701 постах
При наличии в доверенных корневых - корневого УЦ - цепочка сразу строится по нему,
игнорируя наличие в промежуточных цепочки: кросс-сертификат УЦ\УЦ 1С\
Техническую поддержку оказываем тут
Наша база знаний
Offline Василий Дементьев  
#6 Оставлено : 14 октября 2013 г. 14:56:20(UTC)
Василий Дементьев

Статус: Администратор

Группы: Администраторы, Участники
Зарегистрирован: 28.12.2007(UTC)
Сообщений: 350
Откуда: ООО "КРИПТО-ПРО"

Поблагодарили: 6 раз в 5 постах
Кросс-сертификат не надо ставить в хранилище "Доверенные корневые ЦС".
Его надо ставить в хранилище "Промежуточные ЦС" локального компьютера.
Чтобы клиент почуял изменения на сервере - нужно:
либо зайти в оснастку управления IIS - "Изменить привязки" ("Edit bindings") - и заново выбрать тот же сертификат сервера (например, убрать сертификат и заново поставить).
либо перезагрузить сервер (саму ОС)

iisreset не помогает, потому что iis 7 использует криптографию режима ядра при шифровании трафика, а перезапуск служб iis не влияет на это.
Offline Demonix  
#7 Оставлено : 15 октября 2013 г. 7:35:52(UTC)
Demonix

Статус: Активный участник

Группы: Участники
Зарегистрирован: 28.12.2007(UTC)
Сообщений: 152
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
Автор: Василий Дементьев Перейти к цитате
Кросс-сертификат не надо ставить в хранилище "Доверенные корневые ЦС".
Его надо ставить в хранилище "Промежуточные ЦС" локального компьютера.
Чтобы клиент почуял изменения на сервере - нужно:
либо зайти в оснастку управления IIS - "Изменить привязки" ("Edit bindings") - и заново выбрать тот же сертификат сервера (например, убрать сертификат и заново поставить).
либо перезагрузить сервер (саму ОС)

iisreset не помогает, потому что iis 7 использует криптографию режима ядра при шифровании трафика, а перезапуск служб iis не влияет на это.


Да, я все это знаю (правда, я обычно перезапускаю службу http). Однако, как я написал в первом посте, это не помогает.

Вот на сервере стоят "UC SKB Kontur (Root)" (в Trusted roots) и "UC SKB Kontur (K10)" (в Intermediate CAs):

Код:
C:\Program Files\Crypto Pro\CSP>csptest -tlsc -server cs.kontur-extern.ru -v -v -nocheck | grep -i (root)
CA issuer : E=ca@skbkontur.ru, C=RU, L=Екатеринбург, O=ЗАО <ПФ <СКБ Контур>, CN=UC SKB Kontur (Root)
Issuer  1: E=ca@skbkontur.ru, C=RU, L=Екатеринбург, O=ЗАО <ПФ <СКБ Контур>, CN=UC SKB Kontur (Root)

C:\Program Files\Crypto Pro\CSP>csptest -tlsc -server cs.kontur-extern.ru -v -v -nocheck | grep -i (k10)

C:\Program Files\Crypto Pro\CSP>


Как видите, если сертификат стоит в промежуточных на сервере, то его нет среди издателей в поле certificate_authorities сообщения CertificateRequest.


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

Вот, давайте на конкретном примере.
Есть портал ФСФМ: https://portal.fedsfm.ru:8081/account/login.aspx

Код:
C:\Program Files\Crypto Pro\CSP>csptest -tlsc -server portal.fedsfm.ru -port 8081 -v -v -nocheck | grep -E -i "^Issuer +[0-9]"
Issuer  0: ОГРН=1047708022548, ИНН=007708234633, E=uc@fedsfm.ru, C=RU, L=Москва, O=Росфинмониторинг, CN=УЦ Росфинмониторинга
Issuer  1: ИНН=007710474375, ОГРН=1047702026701, E=dit@minsvyaz.ru, STREET=125375 г. Москва ул. Тверская д.7, O=Минкомсвязь России, L=Москва, S=77 г. Москва, C=RU, CN=УЦ 1 ИС ГУЦ
Issuer  2: E=dit@minsvyaz.ru, C=RU, S=77 г. Москва, L=Москва, STREET="125375 г. Москва, ул. Тверская, д. 7", O=Минкомсвязь России, ОГРН=1047702026701, ИНН=007710474375, CN=Головной удостоверяющий центр
Issuer  3: DC=com, DC=microsoft, CN=Microsoft Root Certificate Authority
Issuer  4: OU=Copyright (c) 1997 Microsoft Corp., OU=Microsoft Corporation, CN=Microsoft Root Authority
Issuer  5: C=US, O="VeriSign, Inc.", OU=VeriSign Trust Network, OU="(c) 2006 VeriSign, Inc. - For authorized use only",CN=VeriSign Class 3 Public Primary Certification Authority - G5
Issuer  6: C=IE, O=Baltimore, OU=CyberTrust, CN=Baltimore CyberTrust Root
Issuer  7: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA
Issuer  8: C=US, O=GTE Corporation, OU="GTE CyberTrust Solutions, Inc.", CN=GTE CyberTrust Global Root
Issuer  9: C=US, O="VeriSign, Inc.", OU=Class 3 Public Primary Certification Authority
Issuer 10: C=SE, O=AddTrust AB, OU=AddTrust External TTP Network, CN=AddTrust External CA Root
C:\Program Files\Crypto Pro\CSP>


У них стоит корень УЦ 1 ИС ГУЦ. Отлично, значит, если у них стоят кроссы моего УЦ, то меня пустит к ним.
Удаляю корень своего УЦ, захожу на портал. IE предлагает мне выбрать клиентский сертификат (корень УЦ 1 ИС ГУЦ и кроссы моего УЦ у меня уже стоят), я выбираю и меня пускают (а значит, у них точно стоит наш кросс)
Ставлю обратно корень моего УЦ. Захожу на https://portal.fedsfm.ru:8081/account/login.aspx и меня тут же отбривают ошибкой "403 - запрещено. Доступ запрещен.", т.к. IE не предъявил сертификат, потому что моего УЦ нет в доверенных корневых на сервере и IE не из чего выбирать.

Вопрос простой - как мне попасть https://portal.fedsfm.ru:8081/account/login.aspx, при условии, что корневой сертификат моего УЦ стоит у меня в хранилище довереренных корневых сертификатов?

И действительно ли, выбором сертификата подходящего для клиентской аутентификации (в учетом certificate_authorities сообщения CertificateRequest) рулит конкретный криптопровайдер с конкретным алгоритмом выбора; и в стандартном виндовом криптопровадере при этом реализован перебор всех возможных цепочек доверия, или мне просто повезло в моих экспериментах, которые я описал в посте выше?

Отредактировано пользователем 15 октября 2013 г. 7:39:07(UTC)  | Причина: Не указана

Offline Василий Дементьев  
#8 Оставлено : 15 октября 2013 г. 14:03:47(UTC)
Василий Дементьев

Статус: Администратор

Группы: Администраторы, Участники
Зарегистрирован: 28.12.2007(UTC)
Сообщений: 350
Откуда: ООО &amp;amp;quot;КРИПТО-ПРО&amp;amp;quot;

Поблагодарили: 6 раз в 5 постах
Извиняюсь - ввёл вас в заблуждение.
Спросил наших разработчиков.
Выяснилось, что наша реализация TLS присылает сертификаты только из Root.
Такое решение было принято по двум причинам:
а) развелось слишком много разных УЦ
б) для сертификатов из CA нужно проверять цепочки на сервере перед их отправкой клиенту

Цитата:
У них стоит корень УЦ 1 ИС ГУЦ


Не совсем так.
УЦ 1 ИС ГУЦ - это не корневой сертификат, это сертификат УЦ, подчинённого ГУЦу, для выдачи кросс-сертификатов аккредитованных УЦ.

Цитата:
Отлично, значит, если у них стоят кроссы моего УЦ, то меня пустит к ним


как раз кроссы у них не стоят (в Root).
Если бы кроссы всех (или отобранных) аккредитованных УЦ у них были бы установлены на сервере в хранилище - то сервер прислал бы их DN-ы, и у клиента IE предложил бы клиентский сертификат во всех случаях, когда на компьютере клиента установлены:
1) ГУЦ - в Root, УЦ 1 ИС ГУЦ - в CA, кросс - в CA
2) самоподписанный оригинальный сертификат аккредитованного УЦ - в Root
3) все перечисленные

В существующей ситуации работать будет как раз только для п.1 - точно, для п. 3 - только если разработчик клиентского ПО добрый и попробует использовать все варианты цепочек. А вот для п. 2 не будет работать.

Отредактировано пользователем 15 октября 2013 г. 15:25:39(UTC)  | Причина: Не указана

Offline Demonix  
#9 Оставлено : 15 октября 2013 г. 15:58:38(UTC)
Demonix

Статус: Активный участник

Группы: Участники
Зарегистрирован: 28.12.2007(UTC)
Сообщений: 152
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
Автор: Василий Дементьев Перейти к цитате
Извиняюсь - ввёл вас в заблуждение.
Не совсем так.
УЦ 1 ИС ГУЦ - это не корневой сертификат, это сертификат УЦ, подчинённого ГУЦу, для выдачи кросс-сертификатов аккредитованных УЦ.

Цитата:
Отлично, значит, если у них стоят кроссы моего УЦ, то меня пустит к ним


как раз кроссы у них не стоят (в Root).

Да, правильно, я ошибся. Корень у них "Головной удостоверяющий центр" и именно он стоит в Root'ах.


Автор: Василий Дементьев Перейти к цитате

Если бы кроссы всех (или отобранных) аккредитованных УЦ у них были бы установлены на сервере в хранилище - то сервер прислал бы их DN-ы

Они похоже, стоят на сервере(в хранилище CA), иначе бы мой сертификат не прошел проверку, и меня бы IIS не пустил.

Автор: Василий Дементьев Перейти к цитате

Если бы кроссы всех (или отобранных) аккредитованных УЦ у них были бы установлены на сервере в хранилище - то сервер прислал бы их DN-ы, и у клиента IE предложил бы клиентский сертификат во всех случаях, когда на компьютере клиента установлены:
1) ГУЦ - в Root, УЦ 1 ИС ГУЦ - в CA, кросс - в CA
2) самоподписанный оригинальный сертификат аккредитованного УЦ - в Root
3) все перечисленные

В существующей ситуации работать будет как раз только для п.1 - точно, для п. 3 - только если разработчик клиентского ПО добрый и попробует использовать все варианты цепочек. А вот для п. 2 не будет работать.


Речь ведь о том, что на сервере стоят ГУЦ - в Root, УЦ 1 ИС ГУЦ - в CA, кросс моего УЦ - в CA? Тогда, логично, что сервер пришлет клиенту только DN ГУЦ.
И с первым и вторым вариантами в этом случае понятно - в первом случае цепочка до ГУЦ строится; во втором - нет.

А вот как раз третий вариант (когда клиент может построить 2 цепочки) и интересует. Кто является тем самым разработчиком клиентского ПО в случае с IE? Вы или MS (с его CryptoAPI)?

Напомню, что чуть выше я писал, что я эксперементировал с RSA сертификатами (с помощью openssl сгенерировал два самоподписанных сертификата, выпустил на них клиентские сертификаты и сделал кроссы).
И в этом случае пункт 3 работал (Клиент мог построить 2 цепочки: напрямую к самоподписанному, и через кросс, на сервере стоял кросс корень, на котором этот кросс был выпущен).
Offline pharaon  
#10 Оставлено : 15 октября 2013 г. 17:00:35(UTC)
pharaon

Статус: Активный участник

Группы: Участники
Зарегистрирован: 23.11.2010(UTC)
Сообщений: 162
Откуда: НН

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 16 раз в 13 постах
а подскажите по двум вариантам ошибки конкретно по portal.fedsfm.ru:8081
403 это значит что он не узнаёт клиентский сертификат?(не знает кросс выдавшего УЦ или через портал клиент не зарегистрировался?)
а 404(ссылается на ssl и tls) что может быть?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
4 Страницы123>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.