[QUOTE]
Programmer пишет:
У меня есть вот что:
1. Файл
8CAE88BBFD404A7A53630864F9033606E1DC45E2.cer
установлен в "Доверенные корневые центры сертификации".
Выдал: "Головной удостоверяющий центр".[/QUOTE]Это краеугольный камень единого пространства доверия сертификатов ГОСТ. Если подробнее, как все это примерно работает - Головной удостоверяющий центр (ГУЦ) выдал сертификат сам себе, но в дальнейшем этот сертификат практически не используется, небольшое исключение - подчиненные УЦ (удостоверяющие центры) ГУЦ, на текущий момент их 2 (УЦ 1 ИС ГУЦ, УЦ 2 ИС ГУЦ), считая с 1 истекшим сертификатом у них целых 6 сертификатов. Такие тонкости можно посмотреть на [URL=https://e-trust.gosuslugi.ru/MainCA]https://e-trust.gosuslugi.ru/MainCA[/URL] (у меня браузер предупреждает что сайт недоверенный, такие пироги).
Когда другой удостоверяющий центр посылает документы на аккредитацию, у него тоже имеется только самоподписанный корневой сертификат. После аккредитации, УЦ 1 ИС ГУЦ или УЦ 2 ИС ГУЦ выпускает сертификат на тот же открытый ключ, что и был указан в корневом сертификате. Это называется кросс-сертификат, благодаря нему нет необходимости ставить отдельный корневой сертификат для каждого аккредитованного УЦ, так как по цепочке доверия дойдет до корневого ГУЦ (уже доверенного благодаря установке в корневые сертификаты). Важно отметить, 1) если у какой-то компании тоже есть головной и подчиненные УЦ, то каждый подчиненный получает свой кросс-сертификат отдельно, головной УЦ компании не включается в цепочку, так как в кросс-сертификате стоит запрет на подчиненные УЦ, 2) если отсутствует (не установлен на компьютере и не включен в проверяемую цифровую подпись) сертификат УЦ 1(2) ИС ГУЦ , который выдал кросс-сертификат, то цепочка не дойдет до ГУЦ и выйдет ошибка. Поэтому на практике вместе с кросс-сертификатом прилагается еще и сертификат УЦ 1(2) ИС ГУЦ (ставятся в Промежуточные центры сертификации) либо многие УЦ поставляют свой корневой сертификат вместо кросс-сертификата. У неаккредитованных такого выбора нет - они всегда поставляют свой корневой, так как кросс-сертификата нет. Итого, сертификат ГУЦ в многих случаях просто пылится в сторонке. Отдельный вопрос, что мало все это поставить 1 раз, нужно еще и регулярно проверять списки отзыва для каждого УЦ.
[QUOTE]
Programmer пишет:
2. Шесть файлов: header.key, maska.key, maska2.key, name.key, primary.key, primary2.key, котрые тупо записаны на флэшку. Я их вижу и могу свобдно копировать. С помощью КриптоПро установлены в "Личное". В диспетчере сертификатов там просматривается фамилия директора УК.
Подскажите, пожалуйста, что с этим дальше делать в части организации SOAP? И нужна ли мне эта флэшка каждый день для работы SOAP, или достаточно установленных сертификатов? Спасибо![/QUOTE]Похоже, сертификата директора в виде отдельного файла нет, всё в контейнере закрытого ключа. Все зависит от того, как именно будет организован обмен. Закрытый ключ необходим для подписи и шифрования, но возможно его перевести в другую форму и не использовать флешку (см. шаг 3). Наиболее вероятно какое-либо решение на основе OpenSSL (в статьях ссылка на МагПро, который использует его), тогда общий обзор...
Шаг 1 (при любой реализации). нужно будет вытащить сертификат из закрытого контейнера или из "Личное" (экспорт сертификата - без закрытого ключа). Без закрытого ключа потому, что в КриптоПро не реализован экспорт закрытого ключа по соображениям безопасности (можно только копировать в другой контейнер, но не в файл), а стандартное средство Microsoft делает это неправильно. Поэтому доставать закрытый ключ придется отдельно. Должен получиться сертификат в формате DER (расширение файла CER).
Шаг 2. Если используется OpenSSL, то нужно (для удобства) преобразовать сертификат из DER в PEM (расширение или PEM или CRT) средствами OpenSSL, потому что понимаются оба формата, но по умолчанию принят формат PEM и если использовать DER нужно указывать в параметрах формат входного файла сертификата для каждой команды, что несколько утомительно. PEM формат - кодировка base64 от содержимого DER формата плюс строки разделители начинающиеся /заканчивающиеся 5 дефисами, обычно его можно посмотреть обычным блокнотом. Блокнот может испортить переводы строк, но для исправления тоже есть утилиты.
Шаг 3. Извлечение закрытого ключа. В принципе, шаг зависит от реализации - есть возможность настроить обращение к обычному КриптоПро и использование флешки (добавив DLL от КриптоПро и дописав параметры или настроив файл конфигурации), но частенько закрытый ключ извлекают на жесткий диск, а флешку возвращают например в бухгалтерию или в сейф. Это не очень-то безопасно - исчезновение флешки заметить проще чем копирование файла закрытого ключа по сети на сторону. На Ваше усмотрение. Я тестировал для немного другого случая и за неделю до истечения сертификатов, поэтому извлекал.
У другого российского криптопровайдера есть утилита для экспорта сертификата вместе с закрытым ключом, но у меня так и не получилось экспортировать сертификаты этого года с ее помощью и прочитать в OpenSSL, попробовал позапрошлогодние из архива - без проблем. Так что скорее всего придется считывать закрытый ключ сторонней утилитой из тех самых файликов на флешке в формат PEM. Внимание, ключ сохраняемый утилитой незашифрован и его надо хранить так же осторожно, как и саму флешку! Его можно зашифровать паролем позже средствами OpenSSL, но тогда при каждом подписании нужно вводить пароль либо зашивать пароль в программу отправки. (Средствами OpenSSL не предусмотрено запоминание пароля). Большинство решений по автоматизации оставляет файл без шифрования, но с различными ограничениями прав доступа к нему.
В статье на хабре есть исходники утилиты и есть готовая версия. Использование просто [code:1xf1y3b6]privkey.exe f:\abcdefgh.000 1234> c:\privkey.pem[/code:1xf1y3b6] где f:\abcdefgh.000 путь к папке на флешке, где лежат 6 файликов, 1234 пароль, privkey.pem - файл, куда запишется вывод программы. Так как запишется вывод программы, то нужно проверить что там не сообщение об ошибке, а реально закрытый ключ. У закрытого ключа начало "-----BEGIN PRIVATE KEY-----", ошибка может означать опечатку в пароле (не удалось проверить открытый ключ), в имени папки или что у флешки другое имя диска (не найден контейнер).
Шаг 4. Объединение закрытого ключа и сертификата (необязательно). Обычно OpenSSL при подписании ожидает, что сертификат и закрытый ключ находятся в одном файле. Если в предыдущих шагах получилось 2 разных файла, то нужно либо указывать отдельно файл с закрытым ключом, либо объединить - добавить закрытый ключ в файл сертификата. Если в Шаге 3 решили оставить флешку и заменить параметрами, то здесь тоже нужно пропустить и использовать параметры. Формат PEM позволяет объединять их при помощи любого текстового редактора (я простым блокнотом пробовал). Просто выделить все из одного файла, из другого и сохранить под новым именем. Естественно объединенный файл нужно хранить осторожно как и отдельный файл закрытого ключа. Для каких-то реализаций (в моем случае - собственный "самопальный" УЦ) может потребоваться извлечение открытого ключа и объединение с закрытым в ключевую пару, но это уже отдельная история.
[quote:1xf1y3b6]Далее надо организовать тестовые стенды, настроить канал, и пробовать формировать запросы. В документации это все описано. <...> Для тестирования желательно сформировать тестовые ключи( хотя никто не запрещает тестироваться на "боевых")[/quote:1xf1y3b6]Именно. Зачем формировать тестовые ключи, я так и не понял. Наверно, чтобы не ждать изготовления "боевых" ключей? Если они уже есть, тестовые не обязательны. Документацию пока не читал подробно, даже не знаю стоит ли - некоторые изменения до сих пор там не отражены. :)
[quote:1xf1y3b6]Шесть файлов: header.key, maska.key, maska2.key, name.key, primary.key, primary2.key[/quote:1xf1y3b6] у меня называются masks.key masks2.key в остальном тоже самое.[quote:1xf1y3b6] Почему у меня видны на флэшке 8 файлов, а у моего коллеги - нет?[/quote:1xf1y3b6] Вероятно 7 и 8 файлы это сертификат (CER) и запрос на сертификат (REQ или CSR). Иногда еще бывает печатная форма заявления (DOC, RTF) или печатная форма сертификата (PDF). Это зависит от УЦ - некоторые позволяют генерировать запрос на сертификат самостоятельно. Запрос - это по сути сертификат без информации, добавляемой в УЦ и без подписи УЦ. В этом случае контейнер закрытого ключа не содержит сертификата, потому что его еще не выпустили. Затем из УЦ присылают готовый сертификат и при установке сертификата появляется выбор - установить сертификат в закрытый контейнер или оставить их по отдельности. Конечно есть случаи, когда бухгалтерия хранит на флешке какие-нибудь фотографии и прочую постороннюю информацию.