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

Уведомление

Icon
Error

5 Страницы123>»
Опции
К последнему сообщению К первому непрочитанному
Offline krholenok  
#1 Оставлено : 9 августа 2013 г. 16:53:56(UTC)
krholenok

Статус: Участник

Группы: Участники
Зарегистрирован: 09.08.2013(UTC)
Сообщений: 20
Беларусь
Откуда: Grodno

Сказал(а) «Спасибо»: 2 раз
На основе вашего примера stunnel пытаемся установить TLS соединение с нашим локальным сервером. Одна из задач - двухсторонняя аутентификация, т.е используя сертификат пользователя, мы застряли в самом начале - на добавлении нового сертификата в хранилище. делаем примерно так:



Все отрабатывает без ошибок и предупреждений, но сертификат в хранилище не появляется. Пробовали различные форматы сертификата, пробовали поместить в хранилище сертификат полученнный через ваш тестовый CA. Безрезультатно. Возможно мы что-то не так понимаем в работе с сертификатами и хранилищем, возможно для того чтобы поместить сертификат в хранилище он должен быть подписан находящимся в хранилище рутовым сертификатом, и для начала нужно добавить в хранилище его? Просим некоторых разъяснений, по возможности подробных. Спасибо заранее!
Offline Татьяна  
#2 Оставлено : 9 августа 2013 г. 16:55:44(UTC)
Татьяна

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

Группы: Участники
Зарегистрирован: 06.02.2008(UTC)
Сообщений: 1,491
Откуда: Крипто-Про

Поблагодарили: 40 раз в 37 постах
А как вы проверяете появляется ли сертификат в хранилище? Я не вижу реализацию функции EnumCerts.
Татьяна
ООО Крипто-Про
Offline krholenok  
#3 Оставлено : 9 августа 2013 г. 17:03:00(UTC)
krholenok

Статус: Участник

Группы: Участники
Зарегистрирован: 09.08.2013(UTC)
Сообщений: 20
Беларусь
Откуда: Grodno

Сказал(а) «Спасибо»: 2 раз
EnumCerts реализация во фреймворке, через эту функцию в примере заполняется датасорс таблицы сертификатов. Объявление функции в хидере ManageCertsAndConts.h
Offline Татьяна  
#4 Оставлено : 9 августа 2013 г. 17:09:43(UTC)
Татьяна

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

Группы: Участники
Зарегистрирован: 06.02.2008(UTC)
Сообщений: 1,491
Откуда: Крипто-Про

Поблагодарили: 40 раз в 37 постах
Эта функция ищет только сертификаты, связанные с закрытым ключом. Ваш сертификат не связан с закрытым ключом, поэтому он устанавливается в хранилище, но функция EnumCerts его не находит.
Татьяна
ООО Крипто-Про
Offline Татьяна  
#5 Оставлено : 9 августа 2013 г. 17:12:06(UTC)
Татьяна

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

Группы: Участники
Зарегистрирован: 06.02.2008(UTC)
Сообщений: 1,491
Откуда: Крипто-Про

Поблагодарили: 40 раз в 37 постах
Перечислить все сертификаты в хранилище можно при помощи CertEnumCertificatesInStore
Татьяна
ООО Крипто-Про
Offline krholenok  
#6 Оставлено : 12 августа 2013 г. 15:08:17(UTC)
krholenok

Статус: Участник

Группы: Участники
Зарегистрирован: 09.08.2013(UTC)
Сообщений: 20
Беларусь
Откуда: Grodno

Сказал(а) «Спасибо»: 2 раз
Татьяна, добрый день. Поднять tls соединение через stunnel с нашим локальным сервером получилось с выключенной проверкой сертификата пользователя на сервере. Немного не понятно где в таком случае клиент stunnel ищет root сертификат для сертификата предоставляемого сервером. Возможно в "ROOT" хранилище? При включении аутентификации пользователя по сертификату на сервере и соответственно редактировании конфига stunnel мы получаем следующую ошибку:



Вероятно, наш сертификат должен быть привязан к ключу в контейнере ключей? Закрытый ключ в нашем примере пока нигде не используется. client.cer - сгенерирован на компьютере и подписан root_ca (наш корневой тестовый сертификат). Необходимо ли для корректной работы с сертификатами и ключами поднимать сервер выдачи сертификатов, генерировать ключевые пары на девайсе, создавать запрос на получение сертификата и получать сертификат через этот CA сервер?
Все что мы хотим на данном этапе - поднять tls соединение с нашим тестовым сервером используя stunnel, все сертификаты и ключевые пары сгенерированы используя ГОСТовские алгоритмы на компьютере. Не моглы бы вы описать кратко последовательность необходимых действий для этого - возможно мы что то делаем не так. К серверу вопросов быть не должно - все проверено используя s-client - 2way аутентификация успешно проходит и соединение устанавливается.
Offline Татьяна  
#7 Оставлено : 12 августа 2013 г. 16:17:13(UTC)
Татьяна

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

Группы: Участники
Зарегистрирован: 06.02.2008(UTC)
Сообщений: 1,491
Откуда: Крипто-Про

Поблагодарили: 40 раз в 37 постах
Ищет ли клиент сертификат сервера зависит от настройки verify в конфиге. Если ищет, то да, в хранилище root.
Да, чтобы пользоваться TLS с двухсторонней аутентификацией сертификат клиента должен быть привязан к ключу. Это можно сделать по-разному:
- если нужно для тестов, то проще всего воспользоваться нашим тестовым сервером (в нашей панели есть кнопка "взаимодействие с УЦ", воспользовавшись которой можно выпустить тестовый сертификат).
- можно аналогичным образом работать со своим УЦ
- можно перенести уже существующие ключи на айпад и установить уже существующий сертификат с привязкой к этим ключам.

В первых двух случаях не надо писать код, всё уже написано, в последнем надо самим писать код.
Татьяна
ООО Крипто-Про
Offline krholenok  
#8 Оставлено : 12 августа 2013 г. 16:31:31(UTC)
krholenok

Статус: Участник

Группы: Участники
Зарегистрирован: 09.08.2013(UTC)
Сообщений: 20
Беларусь
Откуда: Grodno

Сказал(а) «Спасибо»: 2 раз
Татьяна, если Вас не затруднит - этот пункт подробнее:
- можно перенести уже существующие ключи на айпад и установить уже существующий сертификат с привязкой к этим ключам.

Т.е. по существу - у нас есть ключевые пары в формате PEM или DER и есть сертификаты, также в виде файлов, как нам добавить сертификат в хранилище и одновременно связать с соответствующим ключом?
Offline Татьяна  
#9 Оставлено : 12 августа 2013 г. 17:04:09(UTC)
Татьяна

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

Группы: Участники
Зарегистрирован: 06.02.2008(UTC)
Сообщений: 1,491
Откуда: Крипто-Про

Поблагодарили: 40 раз в 37 постах
Я боюсь что с ключевыми парами в формате PEM или DER ничего не получится -- можно перенести ключи, сделанные нашим провайдером на любой ОС, а нас другой формат хранения контейнера (во многом его особенности обусловлены требованиями ФСБ, которые предъявляются к хранению ключевой информации, поэтому стандартный формат использовать не можем).
Если ключи сделаны нашим CSP и при создании было разрешено их копирование (выставлен флаг CRYPT_EXPORTABLE), то его можно экспортировать и импортировать через CryptoAPI: на машине с ключом надо экспортировать его в блоб, на айпаде -- импортировать из блоба. У нас в SDK есть примеры на экспорт/импорт ключей:

http://cpdn.cryptopro.ru/
http://cpdn.cryptopro.ru...ngSessionKeyExample.html
http://cpdn.cryptopro.ru...gCertificateExample.html

Если ключи сделаны не нашим CSP, то всё равно надо переделывать -- в этом случае проще создавать ключи сразу на айпаде (не нужно переносить + не нужен наш CSP для десктопа + не нужно писать десктопную часть ПО для переноса ключа).
Татьяна
ООО Крипто-Про
thanks 1 пользователь поблагодарил Татьяна за этот пост.
krholenok оставлено 12.08.2013(UTC)
Offline krholenok  
#10 Оставлено : 12 августа 2013 г. 17:47:25(UTC)
krholenok

Статус: Участник

Группы: Участники
Зарегистрирован: 09.08.2013(UTC)
Сообщений: 20
Беларусь
Откуда: Grodno

Сказал(а) «Спасибо»: 2 раз
Татьяна, спасибо за развернутый ответ, будем разбираться.

Отредактировано пользователем 12 августа 2013 г. 19:39:58(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
5 Страницы123>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.