Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline semibratov  
#1 Оставлено : 8 августа 2016 г. 16:15:44(UTC)
semibratov

Статус: Новичок

Группы: Участники
Зарегистрирован: 06.07.2016(UTC)
Сообщений: 6
Российская Федерация
Откуда: Ижевск

Здравствуйте

Моя задача отправить запрос на генерацию сертификата на сервер УЦ через 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)  | Причина: Не указана

Offline semibratov  
#2 Оставлено : 9 августа 2016 г. 8:26:28(UTC)
semibratov

Статус: Новичок

Группы: Участники
Зарегистрирован: 06.07.2016(UTC)
Сообщений: 6
Российская Федерация
Откуда: Ижевск

Вопрос решился. Создаю PKCS10CertificationRequest из данных запроса на сертификат и из него уже извлекаю PublicKey.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.