Статус: Новичок
Группы: Участники
Зарегистрирован: 06.07.2016(UTC) Сообщений: 6 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Ижевск
|
Здравствуйте Моя задача отправить запрос на генерацию сертификата на сервер УЦ через SOAP У меня есть запрос на сертификат сгенерированный с помощью CryptoPro CSP такой: Цитата:LS0tLS1CRUdJTiBORVcgQ0VSVElGSUNBVEUgUkVRVUVTVC0tLS0tDQpNSUlCNGpDQ0FaRUNBUUF3UWpFUE1BMEdBMVVFQ2d 3RzBLRFF1TkNhTVM4d0xRWURWUVFERENiUW1OQ3kwTERRdmRDKzBMSWcwSmpRDQpzdEN3MEwwZzBKalFzdEN3MEwzUXZ0Q3kwTGpSa HpCak1Cd0dCaXFGQXdJQ0V6QVNCZ2NxaFFNQ0FpUUFCZ2NxaFFNQ0FoNEJBME1BDQpCRUFQQVkrc2twZDhUcWlZZVRibnUyWmFOR3Z SWU05V0dhOXJxZEJDSVlOdjQ5R2phM3hwdGdPRlM1dVk3U1E1ZWhMbmVQZHgwZTdrDQo4Mllva1FPZ0hGdTZvSUhpTUM0R0Npc0dBU VFCZ2pjQ0FRNHhJREFlTUJ3R0ExVWRKUVFWTUJNR0NDc0dBUVVGQndNQ0JnY3FoUU1DDQpBaUlDTUlHdkJna3Foa2lHOXcwQkNRNHh nYUV3Z1o0d2dZc0dBMVVkQWdTQmd6Q0JnQVJPYkFCeUFDMEFOQUJqQUdFQU5RQTNBRFVBDQpaQUF4QUMwQVlnQXdBRGNBT1FBdEFEU UFZZ0F6QUdRQUxRQmhBRFlBTUFCa0FDMEFOZ0E1QUdFQU5BQXlBREFBTndBNEFHSUFOQUJtDQpBRE1BQXdJRThEQXFnQk15TURFMk1 EZ3dPREV5TURnd01TNHlNek5hZ1JNeU1ERTNNRGd3T0RFeU1EZ3dNUzR5TXpOYU1BNEdBMVVkDQpEd0VCL3dRRUF3SUU4REFJQmdZc WhRTUNBZ01EUVFBWXVKV3FrM0RoeGRGb0swTlZBbFVxYkpjVXRTdVVXdXpkcjNQdHRyNm85dFFiDQpVS3dySHdDaVZrNDlBc0dZQUs xTVBzVlhSZmxoU1pTL3pBUk1RMUIvDQotLS0tLUVORCBORVcgQ0VSVElGSUNBVEUgUkVRVUVTVC0tLS0t Я извлекаю из него открытый ключ 04400F018FAC92977C4EA8987936E7BB665A346BD160CF5619AF6BA9D04221836FE3D1A36B7C69B603854B9B98ED24397A12E778F771D1EEE4F366289103A01C5BBA и пытаюсь создать самоподписанный запрос с помощью GostCertificateRequest так Код:
String createSelfSignedRequest(DBOCertGenRequest request) {
GostCertificateRequest gostCertificateRequest = new GostCertificateRequest(JCP.PROVIDER_NAME as String)
// Заполним данные запроса на сертификат
gostCertificateRequest.setKeyUsage(GostCertificateRequest.CRYPT_DEFAULT)
String pk = this.cryptoProvider.getPublicKeyFromRequest(request.certificateRequestBytes)
GostPublicKey publicKey = new GostPublicKey(Hex.decode(pk))
gostCertificateRequest.setPublicKeyInfo(publicKey)
String subject = createSubject(request.cioRequest)
gostCertificateRequest.setSubjectInfo(subject)
// Подписываем ключом, который используется для авторизации в УЦ
KeyStore keyStore = KeyStore.getInstance("HDImageStore", "JCP")
keyStore.load(null, null)
PrivateKey privateKey = keyStore.getKey("CaOperator", System.getProperty("javax.net.ssl.keyStorePassword").toCharArray()) as PrivateKey
gostCertificateRequest.encodeAndSign(privateKey, JCP.GOST_EL_SIGN_NAME.toString())
// Сохраняем в base64
ByteArrayOutputStream baos = new ByteArrayOutputStream()
PrintStream ps = new PrintStream(baos)
gostCertificateRequest.printToBASE64(ps)
String content = new String(baos.toByteArray(), StandardCharsets.UTF_8)
return content
}
На строчке 6 получаю ошибку Цитата:Caused by: java.security.spec.InvalidKeySpecException at ru.CryptoPro.JCP.Key.GostPublicKey.decode(Unknown Source) at ru.CryptoPro.JCP.Key.InternalGostPublicKey.<init>(Unknown Source) at ru.CryptoPro.JCP.Key.GostPublicKey.<init>(Unknown Source) ... Caused by: com.objsys.asn1j.runtime.Asn1TagMatchFailedException: ASN.1 decode error @ offset 0: Tag match failed: expected [UNIVERSAL 16], parsed [UNIVERSAL 4] at com.objsys.asn1j.runtime.Asn1Type.matchTag(Asn1Type.java:449) at com.objsys.asn1j.runtime.Asn1Type.matchTag(Asn1Type.java:466) at ru.CryptoPro.JCP.ASN.PKIX1Explicit88.SubjectPublicKeyInfo.decode(SubjectPublicKeyInfo.java:41) at com.objsys.asn1j.runtime.Asn1Type.decode(Asn1Type.java:218) ... 73 more
По правильному ли пути я иду? Если да, то как мне правильно создать объект PublicKey для GostCertificateRequest ? Отредактировано пользователем 8 августа 2016 г. 17:18:08(UTC)
| Причина: Не указана
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 06.07.2016(UTC) Сообщений: 6 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Ижевск
|
Вопрос решился. Создаю PKCS10CertificationRequest из данных запроса на сертификат и из него уже извлекаю PublicKey.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close