| ||||
| ||||
Пытаюсь запрос на сертификат отправить из 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 | ||||
Ответы: | ||||
| ||||
Я полагал, что тут проблемы с прокси сервером в нашей сети. Однако когда я написал свои тесты на Java, которые коннектятся к http://localhost/certsrv/ все работает! Полагаю, какой-то баг в ru.CryptoPro.JCPRequest.GostCertificateRequest | ||||
| ||||
Скорее всего, проблема в настройке вашего удостоверяющего центра. Запустите оснастку центра сертификации и в его свойствах на закладке "Модуль политики" выберите "Всегда выдавать сертификат". Примените изменения и перезапустите УЦ. Это должно помочь. В данный момент JCPRequest предполагает работу с УЦ только в таком режиме. | ||||
| ||||
Простите, Андрей Так, что, если у меня не включен такой режим и администратор сам должен принимать решение о выпуске сертификата, т.е. у меня нет возможности заставить его такой режим включить, то JCP ничего не может предложить? А какая тогда совместимость с УЦ вашим. И какой вообще смысл в сертификатах, которые выдаются кому угодно кто попросит? Ждем ответов! | ||||
| ||||
В данный момент отложенный выпуск сертификата в полном объёме поддерживается только на уровне программного 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 не нужен. | ||||