09.11.2007 19:14:57Не могу запрос на сертификат отправить из Control Panel. Ответов: 4
Alexander

Пытаюсь запрос на сертификат отправить из Control Panel.

Правда вместо http://www.cryptopro.ru/certsrv/ я свой указываю

http://localhost/certsrv/

java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at ru.CryptoPro.JCP.ControlPane.MainControlPane.b(Unknown Source)
at ru.CryptoPro.JCP.ControlPane.MainControlPane.a(Unknown Source)
at ru.CryptoPro.JCP.ControlPane.f.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.net.MalformedURLException: Illegal character in URL
at sun.net.www.http.HttpClient.getURLFile(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.writeRequests(Unknown Sou
rce)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown So
urce)
at ru.CryptoPro.JCPRequest.GostCertificateRequest.a(Unknown Source)
at ru.CryptoPro.JCPRequest.GostCertificateRequest.a(Unknown Source)
at ru.CryptoPro.JCPRequest.GostCertificateRequest.getEncodedCert(Unknown
Source)
at ru.CryptoPro.JCPRequest.CertGen.Certgen(Unknown Source)
... 8 more
 
Ответы:
12.11.2007 10:51:57Alexander
Я полагал, что тут проблемы с прокси сервером в нашей сети. Однако когда я написал свои тесты на Java, которые коннектятся к http://localhost/certsrv/

все работает!

Полагаю, какой-то баг в

ru.CryptoPro.JCPRequest.GostCertificateRequest
12.11.2007 14:24:11Русев Андрей
Скорее всего, проблема в настройке вашего удостоверяющего центра. Запустите оснастку центра сертификации и в его свойствах на закладке "Модуль политики" выберите "Всегда выдавать сертификат". Примените изменения и перезапустите УЦ. Это должно помочь. В данный момент JCPRequest предполагает работу с УЦ только в таком режиме.
12.11.2007 16:36:13Alexander
Простите, Андрей

Так, что, если у меня не включен такой режим и администратор сам должен принимать решение о выпуске сертификата, т.е. у меня нет возможности заставить его такой режим включить, то

JCP ничего не может предложить? А какая тогда совместимость с УЦ вашим. И какой вообще смысл в сертификатах, которые выдаются кому угодно кто попросит?

Ждем ответов!
13.11.2007 12:40:45Русев Андрей
В данный момент отложенный выпуск сертификата в полном объёме поддерживается только на уровне программного API. Думаю, к следующему релизу требующаяся вам функциональность появится в примерах с интерфейсом командной строки (samples.jar пакет ComLine).

В данный момент задачу можно решить следующим образом:
1. создать ключевую пару и запрос на сертификат из командной строки и сохранить его в файл:
java.exe -cp samples.jar ComLine.KeyPairGen -alias userKey -keypass userPass -dname CN=userCN -reqCertpath request.der
2. сконвертировать запрос в BASE64:
certutil.exe -encode request.der request.b64
3. любым браузером оставить запрос на УЦ и получить сертификат, когда он будет издан (в файл certnew.cer в der кодировке)
4. установить сертификат в контейнер:
java.exe -cp samples.jar ComLine.Certs -alias userKey -keypass userPass -certs certnew.cer

certutil.exe входит в состав Windows 2003.

Либо вы можете в ComLine/KeyPairGen.java заменить req.printToDER(stream) на req.printToBASE64(stream) и скомпилировать его заново. Тогда шаг 2 не нужен.