Автор: Бородина Надежда
* Если вы используете соединение с двухсторонней аутентификацией, то ключ клиента
* должен(!) находиться в папке контейнеров JCP (иначе ошибка 403).
Да. На стороне клиента создаете доверенное хранилище (trusted store), можно программно (его формат CertStore), код вида
KeyStore trustStore = KeyStore.getInstance("CertStore");
trustStore.load(null, null);
X509Certificate rootCert = ...;
String alias = "alias_root";
trustStore.setCertificateEntry(alias, rootCert);
OutputStream trustStoreOutputStream = new FileOutputStream("/home/<user>/trusted.store");
trustStore.store(trustStoreOutputStream, "password".toCharArray());
Создаете ключевой контейнер, формируете запрос, получаете сертификат клиента из УЦ (пример кода запроса есть в samples.jar/userSamples/Certificates, ф. createRequestAndGetCert); или можно использовать keytool (алиас ключа - test), помещаете сертификат в контейнер:
// генерим пару (тут появится датчик случ. чисел)
keytool -genkeypair -alias test -keyalg GOST3410 -providername JCP -storetype HDImageStore -sigalg GOST3411WITHGOST3410EL -keysize 512
// Формируем запрос в кодировке base64
keytool -certreq -alias test -file /home/<user>/test.csr -providername JCP -storetype HDImageStore -sigalg GOST3411WITHGOST3410EL
// Читаем запрос из файла, передаем его в Тестовый УЦ КриптоПро, получаем сертификат, кладем его в ключевое хранилище + просто в файл сохраним
java -cp samples.jar ComLine.getCert -alias test -http
http://cryptopro.ru/certsrv/ -reqCertpath /home/<user>/test.csr -certpath /home/<user>/test.cer -encoding base64
Отредактировано пользователем 28 марта 2013 г. 11:59:30(UTC)
| Причина: Уточнение