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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline JfbYtd-7900  
#1 Оставлено : 3 апреля 2019 г. 14:01:58(UTC)
JfbYtd-7900

Статус: Активный участник

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

Поблагодарили: 1 раз в 1 постах
Добрый день!

Подскажите, пожалуйста кто знает.

В документации ФСС написано:
8. К элементу <ds:SignedInfo> и его потомкам, включая атрибуты, применяется каноникализация http://www.w3.org/2001/10/xml-exc-c14n#, на основе результата рассчитывается электронная подпись по алгоритму ГОСТ Р 34.10-2001 (или ГОСТ Р 34.10-2012) и заносится в <ds:SignatureValue> в формате Base64.

Вот сканоникализировал, по ГОСТу ЭЦП рассчитал, сформировал тестовый запрос и получил ошибку: ORA-20001: Некорректная подпись головной организации: Ошибка при проверке сертификата. VALID_SIGNATURE ЭП действительна; При проверке сертификата ЭП произошла ошибка. Ошибка построения цепочки сертификатов. Не найден сертификат Удостоверяющего Центра, указанный в сертификате пользователя
Код:

Signature sign=Signature.getInstance(Constants.SIGN_EL_ALG_2012_256);
sign.initSign(k); //Инициализирую подпись ключом моего личного сертификата
sign.update(b);   //Ввожу сканоникализированные данные
return(Base64.encode(sign.sign()));


Какова методология расчета ЭЦП для ФСС? Не понимаю как построить и подцепить цепочки сертификатов.

Offline Евгений Афанасьев  
#2 Оставлено : 3 апреля 2019 г. 15:18:43(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 701 раз в 662 постах
Здравствуйте.
Автор: JfbYtd-7900 Перейти к цитате
Ошибка при проверке сертификата. VALID_SIGNATURE ЭП действительна; При проверке сертификата ЭП произошла ошибка. Ошибка построения цепочки сертификатов. Не найден сертификат Удостоверяющего Центра, указанный в сертификате пользователя

Вероятно, на проверяющей стороне в доверенных нет корневого вашей цепочки сертификатов.

Offline JfbYtd-7900  
#3 Оставлено : 3 апреля 2019 г. 15:26:44(UTC)
JfbYtd-7900

Статус: Активный участник

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

Поблагодарили: 1 раз в 1 постах
Автор: Евгений Афанасьев Перейти к цитате
Здравствуйте.
Автор: JfbYtd-7900 Перейти к цитате
Ошибка при проверке сертификата. VALID_SIGNATURE ЭП действительна; При проверке сертификата ЭП произошла ошибка. Ошибка построения цепочки сертификатов. Не найден сертификат Удостоверяющего Центра, указанный в сертификате пользователя

Вероятно, на проверяющей стороне в доверенных нет корневого вашей цепочки сертификатов.



Да. Но как передать в ФСС всю цепочку? Пока не могу найти методологию расчета полной цепочки сертификатов ЭЦП для ФСС.

Offline Евгений Афанасьев  
#4 Оставлено : 3 апреля 2019 г. 16:48:07(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 701 раз в 662 постах
Автор: JfbYtd-7900 Перейти к цитате
Но как передать в ФСС всю цепочку?

Если документ формате XML, то можно добавить недостающие сертификаты в KeyInfo, как и сертификат подписи. Но, скорее всего, на проверяющей стороне корневой должен быть установлен в хранилище доверенных. Возможно, нужно использовать ключ и сертификат, выпущенный в определенном УЦ, который есть в списке доверенных проверяющей стороны.

Offline JfbYtd-7900  
#5 Оставлено : 3 апреля 2019 г. 18:01:31(UTC)
JfbYtd-7900

Статус: Активный участник

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

Поблагодарили: 1 раз в 1 постах
Начал копать в сторону CAdESSignature, из примеров CAdES и https://www.cryptopro.ru/forum2/default.aspx?g=posts&t=11782 через тестовый TSP-сервер

Код:
            CAdESSignature cadesSignature = new CAdESSignature( true );
            Collection<X509CertificateHolder> holderList = new ArrayList<X509CertificateHolder>();
            
            for (X509Certificate cert1 : chain) 
                    {
                        holderList.add(new X509CertificateHolder(cert1.getEncoded()));
                    } 
                    cadesSignature.setCertificateStore(new CollectionStore(holderList));
            
            cadesSignature.addSigner(JCP.PROVIDER_NAME,getDigestOid(k),getPublicKeyOid(k),k, chain, CAdESType.CAdES_T, /*"http://www.cryptopro.ru/tsp/"*/Configuration.TSA_DEFAULT_ADDRESS, false );


Возникает вот такая ошибка:
апр 03, 2019 6:43:21 PM ru.CryptoPro.JCP.tools.Starter check
INFO: Loading JCP 2.0 39014
апр 03, 2019 6:43:21 PM ru.CryptoPro.JCP.tools.Starter check
INFO: JCP loaded.
апр 03, 2019 6:43:22 PM ru.CryptoPro.CAdES.tools.CAdESUtility initJCPAlgorithms
INFO: Replacement of the BouncyCastle GOST algorithms.
Error building certification path for CN="ПАО \"МТС\"", C=RU, ST=Москва, L=г. Москва, STREET="Марксистская ул., д. 4", O="ПАО \"МТС\"", OID.1.2.643.100.1=#120D31303237373030313439313234, EMAILADDRESS=mts@temp.ru: ru.CryptoPro.reprov.certpath.JCPCertPathBuilderException: unable to find valid certification path to requested target; error codes: [33] 'PKIX failure: invalid parameters of certificate',
at ru.CryptoPro.CAdES.g.addSigner(Unknown Source)
at ru.CryptoPro.CAdES.g.addSigner(Unknown Source)
at client.Cryptopro.setSignatureValue(Cryptopro.java:236)
at client.Class1.main(Class1.java:63)
Caused by: Error building certification path for CN="ПАО \"МТС\"", C=RU, ST=Москва, L=г. Москва, STREET="Марксистская ул., д. 4", O="ПАО \"МТС\"", OID.1.2.643.100.1=#120D31303237373030313439313234, EMAILADDRESS=mts@temp.ru: ru.CryptoPro.reprov.certpath.JCPCertPathBuilderException: unable to find valid certification path to requested target; error codes: [33] 'PKIX failure: invalid parameters of certificate',
at ru.CryptoPro.AdES.certificate.CertificateChainBuilderImpl.build(Unknown Source)
at ru.CryptoPro.AdES.certificate.CertificateChainBuilderImpl.build(Unknown Source)
... 4 more


В JAVA_HOME/lib/security/cacerts зарегистрировал cacer3.crt и tsa.cer. Подскажите, в чем может быть еще проблема?

Offline Евгений Афанасьев  
#6 Оставлено : 4 апреля 2019 г. 10:01:37(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 701 раз в 662 постах
Нужно включить логирование JCPLogger и собрать лог.
Offline JfbYtd-7900  
#7 Оставлено : 4 апреля 2019 г. 10:14:01(UTC)
JfbYtd-7900

Статус: Активный участник

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

Поблагодарили: 1 раз в 1 постах
Вообще-то что-то не то. Может тестовый инстанс ФСС не видит наши тестовый сертификат, а работает только с продуктовыми? Может такое быть? Т.к. локально проверка подписи проходит, возвращается TRUE, во все закомментированных случаях.
Код:

    public String sign(String value) throws Exception
    {
        byte[] b=null;
        JCPStoreApi jcpStoreApi=null;

        try
        {
            //Каноникализация
            b=Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_EXCL_OMIT_COMMENTS).canonicalize(value.getBytes());
            
            //Получение сведений о сертификате
            jcpStoreApi=new JCPStoreApi(); 
            PrivateKey k=jcpStoreApi.loadKey("le-4145024e-1dd0-4ce2-88c5-d515010385d9 - Copy","1234");
     
            if(k==null) return(null);

            //Подписание
            Signature sign=Signature.getInstance(Constants.SIGN_EL_ALG_2012_256,JCP.PROVIDER_NAME);
            sign.initSign(k);
            sign.update(b);
            
            byte[] s=sign.sign();
            
            //Проверка
            Signature sign2=Signature.getInstance(Constants.SIGN_EL_ALG_2012_256,JCP.PROVIDER_NAME);
            //sign2.initVerify(jcpStoreApi.certificate);
            //sign2.initVerify(jcpStoreApi.x509Certificate);
            sign2.initVerify(jcpStoreApi.x509Certificate.getPublicKey());
            sign2.update(b);
            System.out.println(sign2.verify(s));
            
            return(Base64.encode(s));
        }
        finally
        {
            b=null;
            jcpStoreApi=null;
        }
    }

апр 04, 2019 11:11:10 AM ru.CryptoPro.JCP.tools.Starter check
INFO: Loading JCP 2.0 39014
апр 04, 2019 11:11:10 AM ru.CryptoPro.JCP.tools.Starter check
INFO: JCP loaded.
true
AHOwUNChDRwg3unByJpSIXGpG8nF5TGCwnXQ9Lsexdv376Cd1doyeoClIkxeFM38B4rmve44GpyG
E27lqhOWiw==

Offline Евгений Афанасьев  
#8 Оставлено : 5 апреля 2019 г. 9:26:43(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 701 раз в 662 постах
На проверяющей стороне дополнительно может проверяться цепочка сертификатов. Нужно уточнить у ее техподдержки, какие издатели сертификатов допустимы, чтобы цепочка построилась и проверилась.
Offline JfbYtd-7900  
#9 Оставлено : 5 апреля 2019 г. 9:34:05(UTC)
JfbYtd-7900

Статус: Активный участник

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

Поблагодарили: 1 раз в 1 постах
Автор: Евгений Афанасьев Перейти к цитате
На проверяющей стороне дополнительно может проверяться цепочка сертификатов. Нужно уточнить у ее техподдержки, какие издатели сертификатов допустимы, чтобы цепочка построилась и проверилась.


Спасибо. Направим запрос в ФСС.

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