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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline SyperOleg2021  
#1 Оставлено : 3 ноября 2021 г. 16:54:22(UTC)
SyperOleg2021

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

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

Сказал(а) «Спасибо»: 2 раз
Здравствуйте! Есть следующая проблема:

Пытаюсь подписать строку которая приходит от сервиса "Честный ЗНАК".
Использовал их руководство: TRUE API (596 страница)

Изменил код из руководства:
Код:

    public String signByCert(String input)
            throws UnrecoverableKeyException, KeyStoreException, NoSuchAlgorithmException, CAdESException {
        List<X509CertificateHolder> chain = new ArrayList<>();
        List<Certificate> certs =
                Arrays.asList(keyStore.getCertificateChain(appSettings.getCryptoPro().getAlias()));

        List<X509Certificate> normalizedCerts = new ArrayList<>();
        certs.forEach(elem -> {
            normalizedCerts.add((X509Certificate) elem);
        });

        certs.forEach(cert -> {
            try {
                chain.add(new X509CertificateHolder(cert.getEncoded()));
            } catch (IOException | CertificateEncodingException e) {
                log.error("Error while building certificate chain", e);
            }
        });
        PrivateKey privateKey = (PrivateKey) (keyStore.getKey(appSettings.getCryptoPro().getAlias(),
                appSettings.getCryptoPro().getPassword().toCharArray()));
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        CAdESSignature signature = new CAdESSignature(false);
        signature.setCertificateStore(new CollectionStore(chain));
        final Hashtable table = new Hashtable();
        Attribute attr = new Attribute(CMSAttributes.signingTime,
                new DERSet(new Time(new Date())));
        table.put(attr.getAttrType(), attr);
        AttributeTable attrTable = new AttributeTable(table);
        signature.addSigner(JCP.PROVIDER_NAME, JCP.GOST_DIGEST_OID, JCP.GOST_EL_DH_OID,
                privateKey, normalizedCerts, CAdESType.CAdES_BES, null, false, attrTable, null);
        signature.open(out);
        signature.update(input.getBytes(StandardCharsets.UTF_8));
        signature.close();
        byte[] signedCode = out.toByteArray();
        return Arrays.toString(signedCode);
    }


Однако на строке "signature.addSigner(....)" получаю исключение "Error occurred during building the certification path for the target".

В цепочках всего один сертификат полученный на http://testca2012.cryptopro.ru/ui/

Помогите разрешить проблему.
Offline Евгений Афанасьев  
#2 Оставлено : 3 ноября 2021 г. 17:04:47(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Здравствуйте. Ошибка говорит, что не удалось построить цепочку. Скорее всего, в normalizedCerts нет промежуточного и/или корневого сертификата. Кроме того, корневой должен быть установлен в cacerts.
Offline SyperOleg2021  
#3 Оставлено : 4 ноября 2021 г. 11:22:50(UTC)
SyperOleg2021

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

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

Сказал(а) «Спасибо»: 2 раз
Автор: Евгений Афанасьев Перейти к цитате
Здравствуйте. Ошибка говорит, что не удалось построить цепочку. Скорее всего, в normalizedCerts нет промежуточного и/или корневого сертификата. Кроме того, корневой должен быть установлен в cacerts.


Да, там сертификаты добавленные только через КриптоПро scp (В данном случае 1). Могу ли я добавить корневые сертификаты в хранилище динамически или они обязательно должны быть в caserts?

Код получения сертификатов из хранилища CSP:

Код:

    public CryptoProService(YAMLAppSettings appSettings)
            throws CertificateException, IOException, NoSuchAlgorithmException,
            KeyStoreException, NoSuchProviderException, UnrecoverableKeyException {
        this.appSettings = appSettings;
        System.setProperty("file.encoding", "UTF-8");
        Security.addProvider(new JCSP());
        Security.addProvider(new RevCheck());
        Security.addProvider(new CryptoProvider());

        keyStore = KeyStore.getInstance(appSettings.getCryptoPro().getLocation(), "JCSP");
        keyStore.load(null, null);
        X509Certificate certificate = (X509Certificate)
                keyStore.getCertificate(appSettings.getCryptoPro().getAlias());
        if (certificate == null) {
            RuntimeException certNotFound = new RuntimeException("Cert not found");
            log.error("Certificate by alias {} not found", appSettings.getCryptoPro().getAlias(), certNotFound);
            throw certNotFound;
        }
    }
Offline SyperOleg2021  
#4 Оставлено : 4 ноября 2021 г. 14:04:49(UTC)
SyperOleg2021

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

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

Сказал(а) «Спасибо»: 2 раз
Загрузил сертификаты в cacerts и в цепочку сертификатов, однако теперь получаю следующую ошибку:
Код:

Caused by: ru.CryptoPro.AdES.exception.AdESException: Root certificate: serial 3453c7b0071add9ab4c5fc8a8451f97a7, subject CN="Тестовый головной УЦ ООО \"КРИПТО-ПРО\" ГОСТ 2012 (УЦ 2.0)", O="ООО \"КРИПТО-ПРО\"", STREET=ул. Сущёвский вал д. 18, L=Москва, ST=77 Москва, OID.1.2.643.100.1=#120D31303337373030303835343434, EMAILADDRESS=info@cryptopro.ru, OID.1.2.643.100.4=#120A37373137313037393931, C=RU, issuer CN="Тестовый головной УЦ ООО \"КРИПТО-ПРО\" ГОСТ 2012 (УЦ 2.0)", O="ООО \"КРИПТО-ПРО\"", STREET=ул. Сущёвский вал д. 18, L=Москва, ST=77 Москва, OID.1.2.643.100.1=#120D31303337373030303835343434, EMAILADDRESS=info@cryptopro.ru, OID.1.2.643.100.4=#120A37373137313037393931, C=RU, not before Mon Jul 26 12:18:42 YEKT 2021, not after Sat Jul 26 12:18:42 YEKT 2036 is untrusted
	at ru.CryptoPro.AdES.certificate.CertificateChainBuilderImpl.validateIfRootCertificateInTrustStoreAndAddToChain(Unknown Source)
	at ru.CryptoPro.AdES.certificate.CertificateChainBuilderImpl.build(Unknown Source)
	at ru.CryptoPro.AdES.certificate.CertificateChainBuilderImpl.build(Unknown Source)
	... 32 common frames omitted
Offline SyperOleg2021  
#5 Оставлено : 4 ноября 2021 г. 14:54:45(UTC)
SyperOleg2021

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

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

Сказал(а) «Спасибо»: 2 раз
Как выяснилось использовалась не та jdk. Теперь вызывается следующее исключение:

Код:

Caused by: ru.CryptoPro.CAdES.exception.CAdESException: digest OID is null
	at ru.CryptoPro.CAdES.cl_1.addSigner(Unknown Source)
	at ru.CryptoPro.CAdES.cl_1.addSigner(Unknown Source)
	at ru.CryptoPro.CAdES.cl_1.addSigner(Unknown Source)
	at ru.work.markserver.service.CryptoProService.signByCert(CryptoProService.java:122)
	at ru.work.markserver.service.CryptoProService.<init>(CryptoProService.java:71)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:78)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:211)
	... 21 common frames omitted


Также добавил:
Код:

        System.setProperty("ru.CryptoPro.reprov.enableCRLDP", "true");
        System.setProperty("com.sun.security.enableCRLDP", "true");
        System.setProperty("com.ibm.security.enableCRLDP", "true");


Прикладываю лог с момента вызова функции "signature.addSigner(...)"
crypto_err.log (109kb) загружен 4 раз(а).
Описание проекта

  1. Минимальный набор необходимых библиотек КриптоПРО подключён через локальный maven репозиторий;
  2. Используется spring boot framework;
  3. jdk 16.6 (oracle);
  4. Никаких аргументов запуска явы не прописывалось (из коробки КриптоПро смог считать сертификаты из своего хранилища, поэтому решил, что в этом нет необходимости);
  5. Подключены зависимости org.bouncycastle версии 1.69;
  6. Используется КриптоПро Java CSP и JTLS (5.0.40363-A, для JVM версии 10 и выше)
  7. В системе установлен CryptoPro CSP, а не CryptoPro Java CSP.

Отредактировано пользователем 5 ноября 2021 г. 19:38:41(UTC)  | Причина: добавил описание проекта

Offline SyperOleg2021  
#6 Оставлено : 6 ноября 2021 г. 12:55:43(UTC)
SyperOleg2021

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

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

Сказал(а) «Спасибо»: 2 раз
Автор: Евгений Афанасьев Перейти к цитате
Здравствуйте. Ошибка говорит, что не удалось построить цепочку. Скорее всего, в normalizedCerts нет промежуточного и/или корневого сертификата. Кроме того, корневой должен быть установлен в cacerts.


Как правильно подгрузить корневые сертификаты в цепочку сертификатов? Сейчас я их подгружаю из файлов, так как из метода:

Код:

KeyStore keyStore = KeyStore.getInstance("REGISTRY", JCSP.PROVIDER_NAME);
keyStore.getCertificateChain(appSettings.getCryptoPro().getAlias()))


Я получаю только один сертификат полученный на http://testca2012.cryptopro.ru/ui/. А не 3 как должно быть.

Полагаю ошибка "digest OID is null" связана этим

Offline Евгений Афанасьев  
#7 Оставлено : 8 ноября 2021 г. 19:36:57(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
1. В первом примере вы передаете в addSigner имя провайдера JCP, затем ниже пишете, что используете KeyStore.getInstance("REGISTRY", JCSP.PROVIDER_NAME) - тут же JCSP. Нужно определиться с провайдером и использовать какой-то один.
2. Ошибка digest OID is null больше похожа на то, что не передается OID алгоритма хеширования в addSigner, хотя в первом примере у вас есть signature.addSigner(JCP.PROVIDER_NAME, JCP.GOST_DIGEST_OID. Это пример актуален? Какая версия JCP/JCSP используется? OID алгоритма ключа соответствует OID алгоритма хеширования (вы передаете OID алгоритма хеша ГОСТ 2001, закрытый ключ тоже ГОСТ 2001)? Попробуйте передать null вместо OID алгоритма хеша и ключа, т.е. signature.addSigner(JCP.PROVIDER_NAME, null, null, ...).
3. keyStore.getCertificateChain вернет все сертификаты из ключевого контейнера, тогда как keyStore.getCertificate вернет сертификат подписи. Если в контейнере один сертификат, keyStore.getCertificateChain, соответственно, вернет только его. Именно цепочку он не возвращает и ее не строит. Поэтому "Я получаю только один сертификат полученный на http://testca2012.cryptopro.ru/ui/. А не 3 как должно быть.".
4. "Как правильно подгрузить корневые сертификаты в цепочку сертификатов?" - корневые сертификаты надо ставить в cacerts. Использовать при этом можно известные корневые: Минкомсвязь и др. В ключвом контейнере может и не быть корневого.
---
Из лога:
09:49:20.022 | [main] | DEBUG | ru.CryptoPro.JCP.tools.JCPLogger - Private key algorithm: GOST3410DH_2012_256
09:49:20.023 | [main] | DEBUG | ru.CryptoPro.JCP.tools.JCPLogger - Evaluated user digest OID: 1.2.643.2.2.9
То есть ключ у вас ГОСТ 2012 256, а OID алгоритма хеширования - 1.2.643.2.2.9 (ГОСТ 2001), "Попробуйте передать null вместо OID алгоритма хеша и ключа, т.е. signature.addSigner(JCP.PROVIDER_NAME, null, null, ...)" или передайте signature.addSigner(JCP.PROVIDER_NAME, GOST_DIGEST_2012_256_OID, JCP.GOST_PARAMS_SIG_2012_256_KEY_OID, ...).

Отредактировано пользователем 8 ноября 2021 г. 19:45:27(UTC)  | Причина: Не указана

Offline SyperOleg2021  
#8 Оставлено : 8 ноября 2021 г. 21:35:24(UTC)
SyperOleg2021

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

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

Сказал(а) «Спасибо»: 2 раз
Автор: Евгений Афанасьев Перейти к цитате
1. В первом примере вы передаете в addSigner имя провайдера JCP, затем ниже пишете, что используете KeyStore.getInstance("REGISTRY", JCSP.PROVIDER_NAME) - тут же JCSP. Нужно определиться с провайдером и использовать какой-то один.
2. Ошибка digest OID is null больше похожа на то, что не передается OID алгоритма хеширования в addSigner, хотя в первом примере у вас есть signature.addSigner(JCP.PROVIDER_NAME, JCP.GOST_DIGEST_OID. Это пример актуален? Какая версия JCP/JCSP используется? OID алгоритма ключа соответствует OID алгоритма хеширования (вы передаете OID алгоритма хеша ГОСТ 2001, закрытый ключ тоже ГОСТ 2001)? Попробуйте передать null вместо OID алгоритма хеша и ключа, т.е. signature.addSigner(JCP.PROVIDER_NAME, null, null, ...).
3. keyStore.getCertificateChain вернет все сертификаты из ключевого контейнера, тогда как keyStore.getCertificate вернет сертификат подписи. Если в контейнере один сертификат, keyStore.getCertificateChain, соответственно, вернет только его. Именно цепочку он не возвращает и ее не строит. Поэтому "Я получаю только один сертификат полученный на http://testca2012.cryptopro.ru/ui/. А не 3 как должно быть.".
4. "Как правильно подгрузить корневые сертификаты в цепочку сертификатов?" - корневые сертификаты надо ставить в cacerts. Использовать при этом можно известные корневые: Минкомсвязь и др. В ключвом контейнере может и не быть корневого.
---
Из лога:
09:49:20.022 | [main] | DEBUG | ru.CryptoPro.JCP.tools.JCPLogger - Private key algorithm: GOST3410DH_2012_256
09:49:20.023 | [main] | DEBUG | ru.CryptoPro.JCP.tools.JCPLogger - Evaluated user digest OID: 1.2.643.2.2.9
То есть ключ у вас ГОСТ 2012 256, а OID алгоритма хеширования - 1.2.643.2.2.9 (ГОСТ 2001), "Попробуйте передать null вместо OID алгоритма хеша и ключа, т.е. signature.addSigner(JCP.PROVIDER_NAME, null, null, ...)" или передайте signature.addSigner(JCP.PROVIDER_NAME, GOST_DIGEST_2012_256_OID, JCP.GOST_PARAMS_SIG_2012_256_KEY_OID, ...).


1. Хочу использовать JCSP, переключался между JCP и JСSP в надежде исправить ошибку. То что в addSigners использовалось JSP заметил и заменил -- результата не дало;
2.

  1. Версия JCSP - 5.0.42188-A, JCP - 2.0.42188-A;
  2. Закрытый ключ подписан GOST R 34.10-2012 DH 256 bits;
  3. JCP.GOST_DIGEST_OID и GOST_EL_KEY_OID пытался менять (например на GOST_DH_2012_256_NAME, GOST_EL_2012_256_NAME и др комбинации) - таже ошибка "digest OID is null". null, null как и GOST_DIGEST_2012_256_OID, GOST_PARAMS_SIG_2012_256_KEY_OID тоже результата не дали;

3. Т.е. список сертификатов нужно подгружать со стороннего хранилища, где есть вся цепочка?
4. В cacerts сертификаты добавлены. Думаю я неправильно сформулировал вопрос: при составлении цепочки сертификатов, есть ли какие-то требования к их загрузке (из контейнера сертификатов JCP или из хранилища доверенных Windows) или просто необходим список где будут все сертификаты которые учувствуют в построении цепочки и не имеет значения откуда они будут загружены?

Появился вопрос: org.bouncycastle.* обязательно использовать из скаченного архива (из папки dependencies) или же допустимо тянуть зависимости с maven репозитория?

Сейчас все сертификаты поместил в хранилище сертификатов JCSP, если в цепочке хранить только один сертификат, то получаю ту же ошибку "digest OID is null", а если все 3, то получаю исключение "Private key does not match public key", лог:

Код:

Caused by: java.lang.RuntimeException: Private key does not match public key; error codes: [108] 'Private key does not match public key', 
	at ru.work.markserver.service.NationalService.lambda$new$0(NationalService.java:36)
	at ru.work.markserver.provider.NationalCatalogProvider.updateToken(NationalCatalogProvider.java:73)
	at ru.work.markserver.service.NationalService.postInit(NationalService.java:43)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157)
	... 32 common frames omitted
Caused by: ru.CryptoPro.CAdES.exception.CAdESException: Private key does not match public key
	at ru.CryptoPro.CAdES.cl_1.addSigner(Unknown Source)
	at ru.CryptoPro.CAdES.cl_1.addSigner(Unknown Source)
	at ru.CryptoPro.CAdES.cl_1.addSigner(Unknown Source)
	at ru.work.markserver.service.CryptoProService.signByCert(CryptoProService.java:125)
	at ru.work.markserver.service.NationalService.lambda$new$0(NationalService.java:33)
	... 41 common frames omitted
Caused by: ru.CryptoPro.CAdES.exception.CAdESException: Private key does not match public key
	... 46 common frames omitted
Disconnected from the target VM, address: '127.0.0.1:57909', transport: 'socket'

Process finished with exit code 1



По поводу актуальности: в коде менял только способ загрузки цепочки сертификатов, комбинации OID алгоритмов и в целом подгружал другие версии библиотеки (не для jdk10+ и отдельно JCP). На данный момент у меня исходный пример, за исключением того, что везде используется JCSP

Отредактировано пользователем 8 ноября 2021 г. 22:01:17(UTC)  | Причина: По поводу актуальности...

Offline Евгений Афанасьев  
#9 Оставлено : 8 ноября 2021 г. 22:19:33(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
1. "Хочу использовать JCSP" - тогда он должен быть провайдером по умолчанию. Поскольку вы используете версию для Java 10+, установка не производится и в java.security провайдеры, полагаю, не записаны. Если вы добавляете провайдеры с помощью Security.addProvider(), то JCSP должен быть выше JCP, тогда он станет работать по умолчанию:
Цитата:

Security.addProvider(new JCSP());
Security.addProvider(new JCP());
Security.addProvider(new RevCheck());

И его же надо указать в addSigner: addSigner(JCSP.PROVIDER_NAME, ...), а не addSigner(JCP.PROVIDER_NAME, ...)
2. Обычно достаточно использовать addSigner(provider, null, null, ...) для автоопределения OID'ов. Приведите ошибку в этом случае.
3. "Т.е. список сертификатов нужно подгружать со стороннего хранилища, где есть вся цепочка?" - да. сертификаты можно подать из других мест, из файлов, хранилищ. Можно также использовать параметры
Цитата:

System.setProperty("com.sun.security.enableAIAcaIssuers", "true");
System.setProperty("ru.CryptoPro.reprov.enableAIAcaIssuers", "true");

Про них можно найти информацию на форуме по слову enableAIAcaIssuers, коротко - если а) они заданы, б) есть доступ в сеть и в) в AIA сертификатов есть ссылки на сертификаты центров сертификации, то сертификаты будут скачаны; однако корневой все равно должен быть в cacerts.
4. "есть ли какие-то требования" - нет, просто нужны объекты X509Certificate в списке, множество сертификатов (оно может быть и больше самой цепочки), который просто содержит нужные сертификаты (они будут найдены при построении цепочки).

"Появился вопрос: org.bouncycastle.* обязательно использовать из скаченного архива (из папки dependencies) или же допустимо тянуть зависимости с maven репозитория?" - из любого источника, главное - версия BC 1.60, как в dependencies (тут они для удобства, чтобы не искать):
Цитата:

bcprov-jdk15on-1.60.jar
bcpkix-jdk15on-1.60.jar

---
Проверьте:
1. провайдер, как в п.1;
2. версию BC, она должна быть 1.60;
3. сделайте addSigner(provider, null, null, ...), вроде даже должна быть версия функции без OID хеша и OID ключа.
Если не поможет, приложите цепочку сертификатов, будем проверять и воспроизводить.

Отредактировано пользователем 8 ноября 2021 г. 22:22:01(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
SyperOleg2021 оставлено 08.11.2021(UTC)
Offline SyperOleg2021  
#10 Оставлено : 8 ноября 2021 г. 22:27:50(UTC)
SyperOleg2021

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

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

Сказал(а) «Спасибо»: 2 раз
Проблема была в использовании библиотек org.bouncycastle.* не из архива, добавил необходимые библиотеки в локальный maven репозиторий и подписание заработало.

Теперь появилась другая проблема, при хешировании ожидается что-то вроде:

Код:

MIIa2QYJKoZIhvcNAQcCoIIayjCCGsYCAQExDjAMBggqh...JRLphTwbI4HQ==


Однако я получаю это:

Код:

0�	*�H��
��0�10*� 0�	*�H��
��$�WUVYERCGDCHJNHZMUMHQYDVGRBRGTF      ��0�/0�ܠ�ԭ6�J�5)'
�0
*�0�V10*�d
77171079911 0	*�H��
	info@cryptopro.ru10*�d
103770008544410	URU10U77 Москва10UМосква1/0-U	&ул. Сущёвский вал д. 181%0#U
ООО "КРИПТО-ПРО"1k0iUbТестовый подчиненный УЦ ООО "КРИПТО-ПРО" ГОСТ 2012 (УЦ 2.0)0
211102162955Z
220202163955Z0��10*��0276140006961604U
-ИП Фазылов Азат Уралович10	URU1"0 U*Азат Уралович10UФазылов1604U-ИП Фазылов Азат Уралович0f0*�0*�$ *�C @gwL�Y~���PU�~�Ǻ����Ah;�PV�o� ˓8`�����`
�|ȏ*�$��x�����0��0U��0	+�70*�.  0U�*�ܴp��R�$%?
Rm�'0&U%0++*�"02	+�7
%0#0
+0
+0	*�"0��+��0��09+0�-http://testca2012.cryptopro.ru/ocsp2/ocsp.srf0[+0�Ohttp://testca2012.cryptopro.ru/aia/758d1bf732d2d0f25f1e0f9e1379ebfc20fe9e2f.crt0U 00*�dq0*�dq0+U$0"�20211102162954Z�20220202162954Z0�*�dp�0�4СКЗИ "КриптоПро CSP" (версия 4.0)1ПАК "КриптоПро УЦ" версии 2.0OСертификат соответствия № СФ/124-3971 от 15.01.2021OСертификат соответствия № СФ/128-3870 от 23.07.20200,*�do#!СКЗИ "КриптоПро CSP"0`UY0W0U�S�Q�Ohttp://testca2012.cryptopro.ru/cdp/758d1bf732d2d0f25f1e0f9e1379ebfc20fe9e2f.crl0*�dr0��U#��0���u��2���_�y�� ��/��X��T0�P10	URU10*�d
77171079911 0	*�H��
	info@cryptopro.ru10*�d
103770008544410U77 Москва10UМосква1/0-U	&ул. Сущёвский вал д. 181%0#U
ООО "КРИПТО-ПРО"1e0cU\Тестовый головной УЦ ООО "КРИПТО-ПРО" ГОСТ 2012 (УЦ 2.0)���� q��M{KF�B0
*�A Xղ�=�l�/,]nD��n��LUa�$�.����W���Bq؏`"j�:{�-����?|a�}��  1�40�00�m0�V10*�d
77171079911 0	*�H��
	info@cryptopro.ru10*�d
103770008544410	URU10U77 Москва10UМосква1/0-U	&ул. Сущёвский вал д. 181%0#U
ООО "КРИПТО-ПРО"1k0iUbТестовый подчиненный УЦ ООО "КРИПТО-ПРО" ГОСТ 2012 (УЦ 2.0)�ԭ6�J�5)'
�0*� ��\0	*�H��
	1	*�H��
0	*�H��
	1
211108192434Z0)	*�H��
	4100*� �
*�0/	*�H��
	1" ��dC[��; �1�'RUO?���&���i@�)�]0��*�H��
	/1��0��0��0��0
*� ��1 ���f� x��;J+����Q|T�w��P�0�u0�^��Z0�V10*�d
77171079911 0	*�H��
	info@cryptopro.ru10*�d
103770008544410	URU10U77 Москва10UМосква1/0-U	&ул. Сущёвский вал д. 181%0#U
ООО "КРИПТО-ПРО"1k0iUbТестовый подчиненный УЦ ООО "КРИПТО-ПРО" ГОСТ 2012 (УЦ 2.0)�ԭ6�J�5)'
�0
*�@��'CWas_6d�n[>M&�L"��A�t�77�!��:c>M��`�N�>��G;�$<0��Y�T2&o�      
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.