| ||||
| ||||
Всем привет! У меня такой вопрос, никак не могу нарыть информацию. Подскажите кто знает. С помощью своей программки с использованием microsoftовской библиотечки CertCli 1.0 Type Library на сервере сертификации создается заявка на сертификат соответственно. Я однозначно знаю что можно прочитать public key этого сертификата. На сервере, пока сертификат не одобрен администратором ключ не виден (в свойствах), после того как сертификат принят ключ можно посмотреть в свойствах сертификата. Может быть кто-то знает как программно прочитать ключ? В какую сторону копать хотя бы чтобы решит эту задачу? Спасибо большое?! | ||||
Ответы: | ||||
| ||||
Вы, вероятно, саму заявку(запрос) создаете где-то в другом месте, а при помощи ICertRequest только помещаете? Пока этот запрос не одобрен сертификата просто в природе не существует, соответственно ОК из него получить невозможно. Можно получить из запроса. | ||||
| ||||
Да, Вы правы, это только заявка, я путаю понятия. Эта заявка появляется в консоли Certification Authority на сервере и содержит зашифрованный текст. Можно из этого текста как-то вычленить открытый ключ? Дело в том, что у нас уже есть такая система, и самописанная библиотека как-то парсит запрос и выделяет ключ, но я не могу посмотреть исходники чтобы узнать это. Есть ли методы для этого и какие? Спасибо! | ||||
| ||||
Если нужно просто посмотреть на запрос - есть готовая утилита по разбору файла сертификата или запроса - certutil (имеется на Win2000 Server с установленной службой сертификации и на любом Win2003). Она работает и на XP (если просто скопировать). certutil файл_запроса > файл_результатов Если нужно программно - то есть функции CryptoAPI по работе с сертификатами и запросами. Они описаны в MSDN. См. CryptDecodeObject и примеры. | ||||
| ||||
Подскажите, пожалуйста, эти функции можно получить из библиотеки crypt32.dll? Почему-то когда я пытаюсь зарегистрировать эту библиотеку в системе, получаю сообщение об ошибке - crypt32.dll было загружено, но найти точку входа для DllRegisterServer не удалось. Какая может быть причина? | ||||
| ||||
Вообще-то, crypt32.dll уже должна быть в системе, причём, зарегистрированная. В %windir%\system32 | ||||
| ||||
Гм. Тогда странно. Я не могу ее подключить к проекту, чтобы использовать там. Проект С#. А может кто-нибудь дать кусок кода с примером использования CryptDecodeObject для получения данных ключа? Спасибо! | ||||
| ||||
На С# проще не возиться с cryptoapi а использовать IX509CertificateRequest. | ||||
| ||||
Спасибо всем, буду разбираться! | ||||