Статус: Новичок
Группы: Участники
Зарегистрирован: 07.11.2018(UTC) Сообщений: 8   Откуда: Пермь Сказал «Спасибо»: 2 раз
|
Автор: two_oceans  Цитата:а можно обойтись без запроса? Просто сразу создать сертификат с заданными данными? Добрый день. Если речь про API, затрудняюсь точно сказать, но думается от RDN не уйти все равно. В теории можно пропустить шаг создания запроса, но только если выполняется одно из двух: 1) сойдет и самоподписанный сертификат. На практике же это та еще морока каждому клиенту прописывать каждый такой сертификат в доверенные. Плюс некоторые приложения (браузеры в особенности) "умные" и все равно блокируют самоподписанные сертификаты (без роли УЦ и/или с ролями, типичными для конечного сертификата), то есть приходится еще и разрешать индивидуально для каждого профиля браузера на компьютере. В общем, несмотря на простоту получения не советую, но напишу как создать для полноты.
Минимальная утилита selfcert/makecert как правило идет в комплекте Microsoft Office, но есть и статьи с задачами вроде подписания драйверов со ссылкой только на утилиту и смежные утилиты (из различных гигабайтних SDK выбраны утилиты на несколько килобайт). Минус - RDN в selfcert сильно упрощен, selfcert/makecert ключ неэкспортируемый по умолчанию. Экспортируемый сделать можно указав makecert параметры командной строки, но выгружается в совершенно диком формате, который придется переконвертировать в нормальный pfx теми самыми утилитами из SDK.
Есть утилиты от КриптоПро, насколько помню csptest может самоподписанный сертификат сделать, но придется сильно заморочиться если в названии есть кавычки. В особо жестких случаях для одной кавычки в RDN может потребоваться шесть кавычек в командной строке.
Аналогично openssl req имеет опцию -x509 сразу создающую самоподписанный сертификат вместо запроса. Стандартный RDN указывается в конфиге (можно создать такой конфиг что почти не будет отличаться от квалифицированного сертификата - у меня не вышло пока только задать формат NUMERIC String для ИНН/ОГРН/СНИЛС, но если честно не все аккредитованные до прошлого года УЦ это делали, по текущей аккредитации глубоко не смотрел), но далее в консоли в диалоговом режиме можно подправить RDN. Есть возможность вводить сразу в UTF-8 (то есть не маяться с кириллицей в 866 кодировке или с перекодированием как в Паскале), указывать Subject Alternative Name. Через gostengy есть поддержка ключей гост-2012 в контейнерах Криптопро (сгенерировать ключ правда не выйдет, только использовать уже существующий контейнер).
Еще способ - после создания запроса в хранилище сертификатов "запросы заявок на сертификат" появляется этот запрос в виде самоподписанного сертификата - экспортировать оттуда.
2) есть свой УЦ (то есть самоподписанный сертификат с ролью УЦ) (и желательно делаете новый сертификат на компьютере, где этот УЦ, то есть по API доступен ключ УЦ). В этом случае добавили сертификат своего УЦ в доверенные и какое-то время он будет работать. Опять же дело в том что приложения "умные" и могут ограничивать список УЦ. По поводу пользования: к примеру, есть, Microsoft CA как часть Windows Server, при использовании в домене все достаточно автоматизировано и можно запросить сертификат через остнастку "сертификаты" (по умолчанию там конечно не совсем то - имя пользователя или имя компьютера, но можно развернуть нужный тип запроса и нажать "свойства", настроить RDN либо криптопровайдер либо длину ключа), для простенького сертификата сойдет и 2003 версия. Запрос все же будет, но "внутри", незаметно. openssl и csptest также могут исполнять функции импровизированного УЦ. Аналогично, запрос будет, но можно автоматизировать и будет незаметно. В случае же передачи во внешний УЦ без явного запроса обойтись сложно. Спасибо, я примерно такое и предполагал, мне как раз 1) пункт подходит, ибо нужда только в самоподписанном сертификате - для подписи своих программ, а остальное как бы и не нужно (морока). |
Всё намного проще, чем есть на самом деле... |