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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline arsen.mirzayan  
#1 Оставлено : 9 марта 2016 г. 16:31:14(UTC)
arsen.mirzayan

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

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

Добрый день.
Пытаюсь запустить пример из архива JCP - XAdESExample, т.е. подписать XML файл. Использую сертификат, выданный тестовым удостоверяющим центром КриптоПРО https://www.cryptopro.ru/ui/. Скачал сертификат УЦ https://www.cryptopro.ru/ra/cdp/cacer3.crt и добавил его через контрольную панель JCP в Certificate Store

1.png (45kb) загружен 21 раз(а).

Далее выполняю пример, подписывание прошло, а проверка подписи не прошла с ошибкой

Код:
xades4j.verification.SigningCertificateReferenceNotFoundException: Verification failed for property 'SigningCertificate': Couldn't find a reference to the signing certificate 2.5.4.4=#0c0ed09cd0b8d180d0b7d0b0d18fd0bd,2.5.4.42=#0c0ad090d180d181d0b5d0bd,2.5.4.12=#0c27d093d0b5d0bdd0b5d180d0b0d0bbd18cd0bdd18bd0b920d0b4d0b8d180d0b5d0bad182d0bed180,1.2.840.113549.1.9.2=#0c0ed092d181d0b5d0b2d0b5d0b4d0b0,STREET=143989\, Московская область\, г. Железнодорожный\, ул. Граничная 9к1\, 13,CN=Всеведа,O=Общество с ограниченной ответственностью Мира,L=Железнодорожный,ST=Москвоская область,C=RU,1.2.840.113549.1.9.1=#1613737570706f727440767365766564612e6f7267,1.2.643.3.131.1.1=#120c303035303132303631333637,1.2.643.100.1=#120d31313035303132303032353031,1.2.643.100.3=#120b3133343834383835363030


Немного подебажил и выяснил, что при попытке найти сертификат для проверки не совпадают IssuerX500Principal того, что в хранилище и того, что в подписи.
В хранилище нормальное имя, а в подписи проблемы с кодировкой.

3.PNG (44kb) загружен 15 раз(а).

XML подписи получается вот такой

Код:

...
<xades:SignedProperties Id="xmldsig-03cff494-1faf-45a1-b532-f0340d45fd89-signedprops">
    <xades:SignedSignatureProperties>
        <xades:SigningTime>2016-03-09T16:58:48.918+03:00</xades:SigningTime>
        <xades:SigningCertificate>
            <xades:Cert>
                <xades:CertDigest>
                    <ns2:DigestMethod
                            Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
                    <ns2:DigestValue>Ou0Ye5Jupvd05yMdHkWLHWOoBdC39CVC/hEAU3hmdpE=
                    </ns2:DigestValue>
                </xades:CertDigest>
                <xades:IssuerSerial>
                    <ns2:X509IssuerName>CN=&#4;\"&#4;5&#4;A&#4;B&#4;\&gt;&#4;2&#4;K&#4;9\00 &#4;\#&#4;&amp;\00
                        &#4;&#30;&#4;&#30;&#4;&#30;\00 \00\"&#4;&#26;&#4; &#4;&#24;&#4;&#31;&#4;\"&#4;&#30;\00-&#4;&#31;&#4;
                        &#4;&#30;\00\",O=&#4;&#30;&#4;&#30;&#4;&#30;\00 \00\"&#4;&#26;&#4; &#4;&#24;&#4;&#31;&#4;\"&#4;&#30;\00-&#4;&#31;&#4;
                        &#4;&#30;\00\",C=RU,1.2.840.113549.1.9.1=#1611696e666f4063727970746f70726f2e7275,L=&#4;&#28;&#4;\&gt;&#4;A&#4;:&#4;2&#4;0,ST=\007\007\00
                        &#4;3\00.\00 &#4;&#28;&#4;\&gt;&#4;A&#4;:&#4;2&#4;0,STREET=&#4;C&#4;\;\00.\00
                        &#4;!&#4;C&#4;I&#4;Q&#4;2&#4;A&#4;:&#4;8&#4;9\00 &#4;2&#4;0&#4;\;\00\,\00
                        &#4;4\00.\00
                        \001\008,1.2.643.3.131.1.1=#120c303037373137313037393931,1.2.643.100.1=#120d31303337373030303835343434
                    </ns2:X509IssuerName>
                    <ns2:X509SerialNumber>130867613332978006152199</ns2:X509SerialNumber>
                </xades:IssuerSerial>
            </xades:Cert>
        </xades:SigningCertificate>
    </xades:SignedSignatureProperties>
</xades:SignedProperties>
...


В общем русские буквы он не понимает. Как это побороть?

Отредактировано пользователем 9 марта 2016 г. 17:01:30(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#2 Оставлено : 9 марта 2016 г. 17:37:16(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,004
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 714 раз в 674 постах
Здравствуйте.
Это пример с использованием xades4j. Проблема в том, что корректное имя можно получить, вызвав метод
Код:

public String getName(X500Principal.RFC1779)

(из класса X500Principal) вместо getName(X500Principal.RFC2253) или getName() (X500Principal.RFC2253 по умолчанию), который вызывается в xades4j.
Исправить можно, думаю, только собрав xades4j.

В последней версии JCP 2.0 был добавлен модуль XAdES.jar (зависит от AdES-core.jar, CAdES.jar и bc 1.50 - все есть в дистрибутиве). Попробуйте посмотреть его примеры (короткий пример есть прямо в javadoc/XAdES-javadoc.jar, в описании класса XAdESSignature, а побольше - в XAdESSignVerify пакета xades файла samples-sources.jar).

Отредактировано пользователем 9 марта 2016 г. 17:38:12(UTC)  | Причина: Не указана

Offline arsen.mirzayan  
#3 Оставлено : 9 марта 2016 г. 18:02:45(UTC)
arsen.mirzayan

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

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

Поменял код в xades4j
Код:

   certRefsData.addCertRef(new CertRef(
                        cert.getIssuerX500Principal().getName(X500Principal.RFC1779),
                        cert.getSerialNumber(),
                        digestAlgUri,
                        digestValue));


но подпись всё равно не в той кодировке (теперь в другой)
Код:

<ns2:X509IssuerName>CN="Тестовый УЦ ООО
    \"РљР Р?РџРўРћ-РџР Рћ\"", O="РћРћРћ \"РљР Р?РџРўРћ-РџР Рћ\"", C=RU,
    OID.1.2.840.113549.1.9.1=info@cryptopro.ru, L=РњРѕСЃРєРІР°, ST=77 Рі.
    Москва, STREET="ул. Сущёвский вал, д. 18",
    OID.1.2.643.3.131.1.1=#120C303037373137313037393931,
    OID.1.2.643.100.1=#120D31303337373030303835343434
</ns2:X509IssuerName>
Offline Евгений Афанасьев  
#4 Оставлено : 9 марта 2016 г. 19:31:50(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,004
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 714 раз в 674 постах
Посмотрите сообщение.
Offline arsen.mirzayan  
#5 Оставлено : 9 марта 2016 г. 19:42:52(UTC)
arsen.mirzayan

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

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

Код:
cert.getIssuerX500Principal().getName(X500Principal.RFC1779)

проблему исправил. Вторая проблема связана уже с JAXB Marshaller, который текст в XML переводит - с ней. Там разберёмся.

Спасибо за совет.
Offline nekkiy  
#6 Оставлено : 17 апреля 2018 г. 17:50:59(UTC)
nekkiy

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

Группы: Участники
Зарегистрирован: 22.09.2017(UTC)
Сообщений: 2

Столкнулся с аналогичной проблемой. Решил её и отправил коммит в основную ветку (см https://github.com/luisgoncalves/xades4j/pull/152). Единственный момент, что он исправляет только те места, где перегонкой из X500Name в строковое представление занимается сама библиотека xades4j. До мест, где аналогичный функционал вызывается библиотекой xmlsec, на которой базируется xades4j и сам CryptoPro JCP, я добираться не стал.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.