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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Артем Панин  
#1 Оставлено : 7 июня 2022 г. 12:28:40(UTC)
Артем Панин

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

Группы: Участники
Зарегистрирован: 07.06.2022(UTC)
Сообщений: 7
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Здравствуйте, использую Ubuntu 20.04, установил КриптоПро CSP. Установил контейнер с закрытым ключем, установил сертификат,
Создал keystore с доверенными ключевыми сертификатами (положил корневый сертификат и Минкомсвязь России и промежуточные), импортировал командой:
keytool -import -v -trustcacerts -alias root -file min.cer -keystore store.keystore -storepass password -storetype HDImageStore -sigalg GOST3411withGOST3410EL -provider ru.CryptoPro.JCP.JCP
, и так для каждого сертификата.

Код:

Код:

        Security.setProperty("crypto.policy", "unlimited");
        System.setProperty("com.ibm.security.enableCRLDP", "true");
        System.setProperty("java.util.prefs.syncInterval", "9999");
        String trustStorePath = "/home/apanin/Documents/Projects/processing-center/pc-extdb/src/main/resources/cer/store.keystore";

        TrustManagerFactory tmf = TrustManagerFactory.getInstance("GostX509");
        KeyStore trustStore = KeyStore.getInstance(JCP.CERT_STORE_NAME);
        trustStore.load(new FileInputStream(trustStorePath), "password".toCharArray());
        tmf.init(trustStore);

        KeyManagerFactory kmf = KeyManagerFactory.getInstance("GostX509");
        KeyStore keyStore = KeyStore.getInstance(JCP.HD_STORE_NAME);
        keyStore.load(null, null);
        kmf.init(keyStore, "password".toCharArray());

        SSLContext sslContext = SSLContext.getInstance(ru.CryptoPro.ssl.Provider.ALGORITHM_12);
        // init ssl context
        sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);

        SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext);

        SSLSocketFactory socketFactory = sslContext.getSocketFactory();
        URL url = new URL("https://portal.fedsfm.ru:8081/Services/fedsfm-service/test-contur/authenticate");
        HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
        connection.setSSLSocketFactory(socketFactory);
        connection.connect();

        connection.disconnect();


На любые запросы к серверу нужной организации получаю код ответа 403.

Отчаялся, попробовал собрать диагностичейкий лог, в нем увидел следующее:
-TESTS-
JCP - ok
Crypto - ok
JTLS - ok
JCSP not installed
Get JCP System Preferences - ok
Get JCP User Preferences - ok

На сайте написано, что JCSP входит в пакет КриптоПро CSP, но почему тогда он не установился?
Отдельно установить его так же не получается, нужен ли он мне вообще?

apanin@artems-workstation:~/Downloads/jcp-2.0.41789$ sudo ./setup_console.sh /usr/lib/jvm/java-8-openjdk-amd64/ -force -ru -install -jcsp
Params: /usr/lib/jvm/java-8-openjdk-amd64/ -force -ru -install -jcsp
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-8u312-b07-0ubuntu1~20.04-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)
Current distributive directory: /home/apanin/Downloads/jcp-2.0.41789
Current executable JRE: /usr/lib/jvm/java-8-openjdk-amd64/jre
** Crypto-Pro Installer, 2005-2022 **
** Версия: 2.0.41789 **
Используется режим автоматической установки.

Процесс может занять несколько минут. Пожалуйста, подождите...
Выполнение: 1%...
Выполнение: 10%...
Выполнение: 51%...
$$ Arguments $$
exec arg: /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
exec arg: -cp
exec arg: .:/home/apanin/Downloads/jcp-2.0.41789/JCP.jar:/home/apanin/Downloads/jcp-2.0.41789/ASN1P.jar:/home/apanin/Downloads/jcp-2.0.41789/forms_rt.jar:/home/apanin/Downloads/jcp-2.0.41789/asn1rt.jar:/home/apanin/Downloads/jcp-2.0.41789/JCPControlPane.jar:/home/apanin/Downloads/jcp-2.0.41789/JCryptoP.jar:/home/apanin/Downloads/jcp-2.0.41789/JCPinst.jar:/home/apanin/Downloads/jcp-2.0.41789/JCPRequest.jar:/home/apanin/Downloads/jcp-2.0.41789/cpSSL.jar:/home/apanin/Downloads/jcp-2.0.41789/JCPxml.jar:/home/apanin/Downloads/jcp-2.0.41789/JCPRevCheck.jar:/home/apanin/Downloads/jcp-2.0.41789/JCPRevTools.jar:/home/apanin/Downloads/jcp-2.0.41789/CAdES.jar:/home/apanin/Downloads/jcp-2.0.41789/XAdES.jar:/home/apanin/Downloads/jcp-2.0.41789/AdES-core.jar:/home/apanin/Downloads/jcp-2.0.41789/XMLDSigRI.jar:/home/apanin/Downloads/jcp-2.0.41789/JCSP.jar:/home/apanin/Downloads/jcp-2.0.41789/J6Oscar.jar:/home/apanin/Downloads/jcp-2.0.41789/J6CF.jar:/home/apanin/Downloads/jcp-2.0.41789/Rutoken.jar:
exec arg: ru.CryptoPro.JCSP.JCSPInstaller
exec arg: -install
exec arg: -force
exec arg: -verbose
Error: Could not find or load main class ru.CryptoPro.JCSP.JCSPInstaller
Error occurred during installing!
Выполнение: 98%...
Выполнение: 99%...
Выполнение: 100%...
Ошибка при выполнении.
При выполнении произошла ошибка.

Пробовал слать запросы используя все теже самые ключи с использованием Windows - все получилось, запросы проходят.

Отредактировано пользователем 7 июня 2022 г. 12:45:18(UTC)  | Причина: Не указана

Offline Артем Панин  
#2 Оставлено : 7 июня 2022 г. 12:39:59(UTC)
Артем Панин

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

Группы: Участники
Зарегистрирован: 07.06.2022(UTC)
Сообщений: 7
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Так же приложу полный лог отработки программки:
log.txt (267kb) загружен 3 раз(а).
Offline Евгений Афанасьев  
#3 Оставлено : 7 июня 2022 г. 20:36:15(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Здравствуйте.

1. Ошибку 403 вы получаете, т.к. ваш клиент не отправляет сертификат на сервер, это есть в логах:

Цитата:

Jun 07, 2022 12:37:18 PM ru.CryptoPro.ssl.cl_16 a
FINE: No appropriate cert was found.
Jun 07, 2022 12:37:18 PM ru.CryptoPro.ssl.cl_43 f
FINE: *** Certificate message
***
пусто


Выше в логах есть записи, что найден некий ключевой контейнер 62769612@2022-05-16-AO SPORTBET_copy:

Цитата:

Jun 07, 2022 12:37:18 PM ru.CryptoPro.ssl.cl_39 a
FINE: %% getting aliases for Client
Jun 07, 2022 12:37:18 PM ru.CryptoPro.ssl.cl_39 a
FINE: %% checking alias: 62769612@2022-05-16-AO SPORTBET_copy...
Jun 07, 2022 12:37:18 PM ru.CryptoPro.ssl.cl_39 a
FINE: %% check public key algorithm ignored.
Jun 07, 2022 12:37:18 PM ru.CryptoPro.ssl.cl_39 a
FINE: %% signature algorithm not found.
Jun 07, 2022 12:37:18 PM ru.CryptoPro.ssl.cl_39 a
FINE: %% check extended key usage of Client, size: 6...
Jun 07, 2022 12:37:18 PM ru.CryptoPro.ssl.cl_39 a
FINE: %% Extended key usage found and verified.
Jun 07, 2022 12:37:18 PM ru.CryptoPro.ssl.cl_39 a
FINE: %% check credential issuers...
Jun 07, 2022 12:37:18 PM ru.CryptoPro.ssl.cl_39 a
WARNING: %% No alias is match


После "check credential issuers" сертификат из 62769612@2022-05-16-AO SPORTBET_copy был отвергнут ("No alias is match"), видимо, издатель сертификата не подходит согласно ответу сервера, содержащему список разрешенных имен.
Еще выше логе есть список имен, которые прислал сервер:

Цитата:

FINE: *** CertificateRequest
Cert Types: Type-22, Type-238, Type-239
Supported Signature Algorithms: GOST3411_2012_256withGOST3410_2012_256, GOST3411_2012_512withGOST3410_2012_512, GOST3411withGOST3410EL
Cert Authorities:
<CN=Microsoft Root Certificate Authority, DC=microsoft, DC=com>
<CN=Минкомсвязь России, OID.1.2.643.3.131.1.1=#120C303037373130343734333735, OID.1.2.643.100.1=#120D31303437373032303236373031, O=Минкомсвязь России, STREET="улица Тверская, дом 7", L=г. Москва, ST=77 Москва, C=RU, EMAILADDRESS=dit@minsvyaz.ru>
<CN=Microsoft Root Authority, OU=Microsoft Corporation, OU=Copyright (c) 1997 Microsoft Corp.>
<CN=Microsoft Root Certificate Authority 2011, O=Microsoft Corporation, L=Redmond, ST=Washington, C=US>
<CN=Головной удостоверяющий центр, OID.1.2.643.3.131.1.1=#120C303037373130343734333735, OID.1.2.643.100.1=#120D31303437373032303236373031, O=Минкомсвязь России, STREET="125375 г. Москва, ул. Тверская, д. 7", L=Москва, ST=77 г. Москва, C=RU, EMAILADDRESS=dit@minsvyaz.ru>
<CN=VeriSign Class 3 Public Primary Certification Authority - G5, OU="(c) 2006 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US>
<CN=Microsoft Root Certificate Authority 2010, O=Microsoft Corporation, L=Redmond, ST=Washington, C=US>
<CN=CryptoPro GOST Root CA, O="LLC \"Crypto-Pro\"", L=Moscow, ST=Moscow, C=RU, OID.1.2.643.3.131.1.1=#120C303037373137313037393931, OID.1.2.643.100.1=#120D31303337373030303835343434>
<CN=localhost>
<CN=Microsoft ECC TS Root Certificate Authority 2018, O=Microsoft Corporation, L=Redmond, ST=Washington, C=US>
<CN=Минцифры России, OID.1.2.643.100.4=#120A37373130343734333735, OID.1.2.643.100.1=#120D31303437373032303236373031, O=Минцифры России, STREET="Пресненская набережная, дом 10, строение 2", L=г. Москва, ST=77 Москва, C=RU, EMAILADDRESS=dit@digital.gov.ru>
<CN=Microsoft ECC Product Root Certificate Authority 2018, O=Microsoft Corporation, L=Redmond, ST=Washington, C=US>
<CN=thawte Primary Root CA - G3, OU="(c) 2008 thawte, Inc. - For authorized use only", OU=Certification Services Division, O="thawte, Inc.", C=US>
<CN=DigiCert Global Root G2, OU=www.digicert.com, O=DigiCert Inc, C=US>
<CN=GeoTrust Global CA, O=GeoTrust Inc., C=US>
<CN=DigiCert Trusted Root G4, OU=www.digicert.com, O=DigiCert Inc, C=US>
<CN=DST Root CA X3, O=Digital Signature Trust Co.>
<CN=GlobalSign, O=GlobalSign, OU=GlobalSign Root CA - R3>
<CN=Baltimore CyberTrust Root, OU=CyberTrust, O=Baltimore, C=IE>
<CN=AAA Certificate Services, O=Comodo CA Limited, L=Salford, ST=Greater Manchester, C=GB>
<CN=ISRG Root X1, O=Internet Security Research Group, C=US>
<CN=Starfield Root Certificate Authority - G2, O="Starfield Technologies, Inc.", L=Scottsdale, ST=Arizona, C=US>
<CN=GlobalSign Root CA, OU=Root CA, O=GlobalSign nv-sa, C=BE>
<CN=COMODO RSA Certification Authority, O=COMODO CA Limited, L=Salford, ST=Greater Manchester, C=GB>
<OU=Starfield Class 2 Certification Authority, O="Starfield Technologies, Inc.", C=US>
<CN=DigiCert Global Root CA, OU=www.digicert.com, O=DigiCert Inc, C=US>
<CN=GTE CyberTrust Global Root, OU="GTE CyberTrust Solutions, Inc.", O=GTE Corporation, C=US>
<CN=thawte Primary Root CA, OU="(c) 2006 thawte, Inc. - For authorized use only", OU=Certification Services Division, O="thawte, Inc.", C=US>
<CN=SecureTrust CA, O=SecureTrust Corporation, C=US>
<CN=GlobalSign, O=GlobalSign, OU=GlobalSign Root CA - R2>
<OU=Class 3 Public Primary Certification Authority, O="VeriSign, Inc.", C=US>
<CN=Certum CA, O=Unizeto Sp. z o.o., C=PL>
<CN=DigiCert High Assurance EV Root CA, OU=www.digicert.com, O=DigiCert Inc, C=US>
<CN=Entrust.net Certification Authority (2048), OU=(c) 1999 Entrust.net Limited, OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.), O=Entrust.net>
<CN=Go Daddy Root Certificate Authority - G2, O="GoDaddy.com, Inc.", L=Scottsdale, ST=Arizona, C=US>
<CN=StartCom Certification Authority, OU=Secure Digital Certificate Signing, O=StartCom Ltd., C=IL>
<CN=USERTrust RSA Certification Authority, O=The USERTRUST Network, L=Jersey City, ST=New Jersey, C=US>
<OU=Go Daddy Class 2 Certification Authority, O="The Go Daddy Group, Inc.", C=US>
<CN=GlobalSign, O=GlobalSign, OU=GlobalSign ECC Root CA - R5>
<CN=Certum Trusted Network CA, OU=Certum Certification Authority, O=Unizeto Technologies S.A., C=PL>
<CN=DigiCert Assured ID Root CA, OU=www.digicert.com, O=DigiCert Inc, C=US>
<CN=GeoTrust Primary Certification Authority - G3, OU=(c) 2008 GeoTrust Inc. - For authorized use only, O=GeoTrust Inc., C=US>
<CN=AddTrust External CA Root, OU=AddTrust External TTP Network, O=AddTrust AB, C=SE>


Поскольку речь о "CN=Минкомсвязь России", то, скорее всего, цепочка сертификатов длиной более 2 сертификатов, а в вашем ключевом контейнере 62769612@2022-05-16-AO SPORTBET_copy есть только один сертификат - сертификат подписи, и его издатель (промежуточный центр) не подходит в качестве довереннего, т.к. его нет в списке (в списке только корневые).
То есть в ключевом контейнере 62769612@2022-05-16-AO SPORTBET_copy должна быть вся цепочка сертификатов клиента: вам необходимо установить полную цепочку (p7b) сертификатов клиента в 62769612@2022-05-16-AO SPORTBET_copy.

2. Нужно определиться, работаете ли вы с JCP или JCSP (+ CSP).
Из дистрибутива jcp-2.0.41789 нельзя установить JCSP - его там нет. Для JCSP нужен дистрибутив java-csp-x.y.zzzzz из раздела CSP сайта.
CSP должен быть 5.0, после установки в панели управления на вкладке "Алгоритмы" JCSP должен быть задан в качестве провайдера по умолчанию.

Отредактировано пользователем 7 июня 2022 г. 20:37:18(UTC)  | Причина: Не указана

Offline Артем Панин  
#4 Оставлено : 8 июня 2022 г. 13:13:54(UTC)
Артем Панин

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

Группы: Участники
Зарегистрирован: 07.06.2022(UTC)
Сообщений: 7
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
У меня есть 3 доверенных корневых сертификата и 8 промежуточных (на самом деле подходящий один, который можно вычислить по некоему идентификатору, но все 8 не должны помешать). Не совсем понимаю как правильно их добавить в контейнер "62769612@2022-05-16-AO SPORTBET_copy" при помощи только командной строки.
Добавлять все сертификаты командой
Код:
keytool -import -v -trustcacerts -alias root -file cert1.cer -keystore store.keystore -storepass password -storetype HDImageStore -sigalg GOST3411withGOST3410EL -provider ru.CryptoPro.JCP.JCP

не совсем то, что мне нужно?
Как создать из них цепочку в формате p7b не совсем понимаю. В windows с помощью мастера сертификатов в цепочку можно экспортировать только сертификаты из одной группы (доверенные, промежуточные), есть какой-то иной способ?
И еще один вопрос, что должно лежать в trustStore? Сейчас я сложил туда корневые и промежуточные сертификаты с алиасами взятыми с потолка, это неверно?

Отредактировано пользователем 8 июня 2022 г. 16:15:20(UTC)  | Причина: Не указана

Offline Артем Панин  
#5 Оставлено : 9 июня 2022 г. 11:27:06(UTC)
Артем Панин

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

Группы: Участники
Зарегистрирован: 07.06.2022(UTC)
Сообщений: 7
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Не получается разобраться с моей проблемой. В логе все равно остается следующее
Код:
Jun 09, 2022 11:10:30 AM ru.CryptoPro.ssl.cl_39 a
WARNING: %% No alias is match
Jun 09, 2022 11:10:30 AM ru.CryptoPro.ssl.cl_16 a
FINE: Appropriate client aliases not found.
Jun 09, 2022 11:10:30 AM ru.CryptoPro.ssl.cl_16 a
FINE: Containers not found.
Jun 09, 2022 11:10:30 AM ru.CryptoPro.ssl.cl_16 a
FINE: No appropriate cert was found.
Jun 09, 2022 11:10:30 AM ru.CryptoPro.ssl.cl_43 f
FINE: *** Certificate message
***

Что я сделал:
создал хранилище доверенных сертификатов следующей командой
Код:
keytool -import -v -trustcacerts -alias CARoot1 -file CARoot1.cer -keystore store.keystore -storepass password -storetype HDImageStore -sigalg GOST3411withGOST3410EL -provider ru.CryptoPro.JCP.JCP

при этом выполнил для каждого из моих 3х доверенный корневых сертификатов и 8ми промежуточных (алиасы задавал соответствующие: ..., CARoot3, Intermediate1, ..., Intermediate8). В итоге полчил store.keystore, который указал как хранилище доверенных сертификатов:
Код:
        String trustStorePath = ".../resources/store.keystore";
        TrustManagerFactory tmf = TrustManagerFactory.getInstance("GostX509");
        KeyStore trustStore = KeyStore.getInstance(JCP.HD_STORE_NAME, "JCP");
        trustStore.load(new FileInputStream(trustStorePath), "password".toCharArray());
        tmf.init(trustStore);


В
Код:
trustStore.aliases()
вижу все добавленные сертификаты + ключевой контейнер, который добавлял через cptools.
Так же прбовал добавлять все эти сертификаты черех графический интерфейс cptools на вкладке "Сертификаты".
Полный лог log.txt (259kb) загружен 1 раз(а).

Так же смущает появляющийся каждые 30 сек лог:
Код:
11:11:21.136 [Timer-0] WARN  java.util.prefs - Couldn't flush system prefs: java.util.prefs.BackingStoreException: /etc/.java/.systemPrefs/ru/CryptoPro/reprov create failed.

В базе знаний нашел, что решается это добавлением кода
Код:
System.setProperty("java.util.prefs.syncInterval", "9999");
, но как-то не очень помогает, критичные ли это ворнинг?

Отредактировано пользователем 9 июня 2022 г. 11:28:03(UTC)  | Причина: Не указана

Offline Артем Панин  
#6 Оставлено : 10 июня 2022 г. 18:08:28(UTC)
Артем Панин

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

Группы: Участники
Зарегистрирован: 07.06.2022(UTC)
Сообщений: 7
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Перепробовал уже многое, никак не получается получить корректный ответ от сервера. Пересмотрел форум, впринципе делаю что-то похожее.
Сертификаты, как доверенные, так и корневые беру по инструкции выданной второй стороной (на windows + C# все с ними заработало вообще без проблем).
Помимо корневых и доверенных в truststore ничего не должно быть? Алиасы с которыми я положил их в truststore играют какую-нибудь роль?
У меня установлен КриптоПро CSP, с его помощью установлен ключевой контейнер с приватным ключем на диск (в считыватель HDIMAGE), ключевой контейнер с приватным ключем программа видит. Может с помощью той же утилиты я должен экспортировать ключи/сертификаты и как-то использовать их?
Если я правильно понимаю, неверно строится (или вообще не строится) цепочка сертификатов. Что я делаю не так?
Спасибо.
Offline Евгений Афанасьев  
#7 Оставлено : 10 июня 2022 г. 20:22:19(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Я уже ответил тут:
Автор: Евгений Афанасьев Перейти к цитате

То есть в ключевом контейнере 62769612@2022-05-16-AO SPORTBET_copy должна быть вся цепочка сертификатов клиента: вам необходимо установить полную цепочку (p7b) сертификатов клиента в 62769612@2022-05-16-AO SPORTBET_copy.

Скорее всего, именно в 62769612@2022-05-16-AO SPORTBET_copy у вас один сертификат ключа подписи (а не цепочка).
Есть у вас нет p7b с клиентской цепочкой для установки в 62769612@2022-05-16-AO SPORTBET_copy, то вы можете установить ваш клиентский сертификат из 62769612@2022-05-16-AO SPORTBET_copy с помощью CSP (в панели просмотреть сертификаты контейнера, установить их) в My, затем открыть certmgr (оснастку CSP с сертификатами), найти там установленный сертификат из 62769612@2022-05-16-AO SPORTBET_copy, проверить, что CSP построил при просмотре цепочку (3 сертификата до корневого), экспортировать цепочку как p7b, затем установить полученный p7b в 62769612@2022-05-16-AO SPORTBET_copy либо с помощью панели CSP (установка сертификатов в ключевой контейнер), либо с помощью панели JCP (на вкладке "Хранилища ключей и сертификатов", выбрать 62769612@2022-05-16-AO SPORTBET_copy, открыть его, добавить в него p7b), либо с помощью keytool -importcert (см. команды Keytool в инструкции по использованию).

"Добавлять все сертификаты командой" - так будет добавлен сертификат в хранилище сертификатов store.keystore (trust store), а не ключевой контейнер. К тому же тут речь, видимо, о сертификатах сервера, а не ваших клиентских.

"что должно лежать в trustStore? Сейчас я сложил туда корневые и промежуточные сертификаты с алиасами взятыми с потолка, это неверно?" - в trust store должны лежать сертификаты для построения цепочки сервера (обычно корневой), а не клиента. Алиасы в trust store не имеют особого значения. Все клиентские сертификаты берутся из ключевого контейнера.

"критичные ли это ворнинг" - нет

"У меня установлен КриптоПро CSP, с его помощью установлен ключевой контейнер с приватным ключем на диск (в считыватель HDIMAGE), ключевой контейнер с приватным ключем программа видит. Может с помощью той же утилиты я должен экспортировать ключи/сертификаты и как-то использовать их?" - строить цепочку с помощью средств КриптоПро CSP при использовании JCP не имеет особого смысла, т.к. CSP берет сертификаты из системных хранилищ или грузит их по сети, хотя по факту в ключевом контейнере может быть один сертификат ключа подписи. Смотреть лучше с помощью панели JCP.
Offline Артем Панин  
#8 Оставлено : 15 июня 2022 г. 12:15:05(UTC)
Артем Панин

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

Группы: Участники
Зарегистрирован: 07.06.2022(UTC)
Сообщений: 7
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Установил клиентский сертификат экспортированный из КриптоПро CSP в cacerts по инструкции ниже:
Код:
    Copy your CA to dir /usr/local/share/ca-certificates/
    Use command: sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt
    Update the CA store: sudo update-ca-certificates

Далее проверил наличие сертификата в My:
Код:
  ./certmgr -list -cert -store uMy

Issuer              : ИНН ЮЛ=6673240328, E=ca@sertum.ru, ОГРН=1116673008539, C=RU, S=66 Свердловская область, L=Екатеринбург, STREET="ул. Малопрудная, стр. 5, офис 715", O="Общество с ограниченной ответственностью ""Сертум-Про""", CN="Общество с ограниченной ответственностью ""Сертум-Про"""
Subject             : ИНН ЮЛ=******, E=******, ИНН=******, СНИЛС=******, ОГРН=******, T==******, STREET==******, L==******, S==******, C==******, G==******, SN==******, CN==******
Serial              : 0x0420B8A10097AEFFA84BC13EB53DE6622B
SHA1 Thumbprint     : 02643b3ef037a7a598a2925781eebbda180eb455
SubjKeyID           : 3963dde6ddfc41fc9588eee1eb7510edf3fae352
Signature Algorithm : ГОСТ Р 34.11-2012/34.10-2012 256 бит
PublicKey Algorithm : ГОСТ Р 34.10-2012 256 бит (512 bits)
Not valid before    : 16/05/2022 09:43:48 UTC
Not valid after     : 16/05/2023 09:40:36 UTC
Embedded License    : CryptoPro CSP
PrivateKey Link     : Yes                 
Container           : HDIMAGE\\62769612.000\38DF
Provider Name       : Crypto-Pro GOST R 34.10-2012 KC1 CSP
Provider Info       : Provider Type: 80, Key Spec: 1, Flags: 0x0
Identification Kind : Personal presence   
OCSP URL            : http://pki.sertum-pro.ru/ocspqca2012/ocsp.srf
OCSP URL            : http://pki2.sertum-pro.ru/ocspqca2012/ocsp.srf
CA cert URL         : http://ca.sertum-pro.ru/certificates/sertum-pro-q-2022.crt
CA cert URL         : http://ca.sertum.ru/certificates/sertum-pro-q-2022.crt
CDP                 : http://ca.sertum-pro.ru/cdp/sertum-pro-q-2022.crl
CDP                 : http://ca.sertum.ru/cdp/sertum-pro-q-2022.crl
Extended Key Usage  : 1.3.6.1.5.5.7.3.2 Проверка подлинности клиента
                      1.2.643.2.2.34.6 Пользователь Центра Регистрации, HTTP, TLS клиент
                      1.3.6.1.5.5.7.3.4 Защищенная электронная почта
                      1.2.643.3.185.1
                      1.2.643.3.5.10.2.12
                      1.2.643.3.7.8.1 Квалифицированный сертификат

Не совсем понял как проверить выстроенную цепочку сертификатов с помощью certmgr (не подскажете?), но в хранилищах доверенных корневых и промежуточных сертификатов есть нужные мне:
Код:
  ./certmgr -list -cert -store uCa

Issuer              : E=dit@digital.gov.ru, C=RU, S=77 Москва, L=г. Москва, STREET="Пресненская набережная, дом 10, строение 2", O=Минцифры России, ОГРН=1047702026701, ИНН ЮЛ=7710474375, CN=Минцифры России
Subject             : ИНН ЮЛ=6673240328, E=ca@sertum.ru, ОГРН=1116673008539, C=RU, S=66 Свердловская область, L=Екатеринбург, STREET="ул. Малопрудная, стр. 5, офис 715", O="Общество с ограниченной ответственностью ""Сертум-Про""", CN="Общество с ограниченной ответственностью ""Сертум-Про"""
Serial              : 0x009E92D94400000000063D
SHA1 Thumbprint     : ed972e91562d65f43780e0060369ebe55cb65efc
SubjKeyID           : 26dda92baea078b865a6de8739fedfddb6c35084
Signature Algorithm : ГОСТ Р 34.11-2012/34.10-2012 256 бит
PublicKey Algorithm : ГОСТ Р 34.10-2012 256 бит (512 bits)
Not valid before    : 01/04/2022 13:37:42 UTC
Not valid after     : 01/04/2037 13:37:42 UTC
PrivateKey Link     : No                  
Identification Kind : Without personal presence by qualified signature
CA cert URL         : http://reestr-pki.ru/cdp/guc2022.crt
CDP                 : http://reestr-pki.ru/cdp/guc2022.crl
CDP                 : http://company.rt.ru/cdp/guc2022.crl
CDP                 : http://rostelecom.ru/cdp/guc2022.crl


  ./certmgr -list -cert -store uRoot 

Issuer              : E=dit@digital.gov.ru, C=RU, S=77 Москва, L=г. Москва, STREET="Пресненская набережная, дом 10, строение 2", O=Минцифры России, ОГРН=1047702026701, ИНН ЮЛ=7710474375, CN=Минцифры России
Subject             : E=dit@digital.gov.ru, C=RU, S=77 Москва, L=г. Москва, STREET="Пресненская набережная, дом 10, строение 2", O=Минцифры России, ОГРН=1047702026701, ИНН ЮЛ=7710474375, CN=Минцифры России
Serial              : 0x00951FA3477C61043AADFA858627823442
SHA1 Thumbprint     : 2f0cb09be3550ef17ec4f29c90abd18bfcaad63a
SubjKeyID           : c91358b14ca7623a7ed23f3ca6e7147c9d70a386
Signature Algorithm : ГОСТ Р 34.11-2012/34.10-2012 256 бит
PublicKey Algorithm : ГОСТ Р 34.10-2012 256 бит (512 bits)
Not valid before    : 08/01/2022 13:32:39 UTC
Not valid after     : 08/01/2040 13:32:39 UTC
PrivateKey Link     : No                  
Identification Kind : Personal presence 

В каждом из хранилищ есть установленные мной сертификаты. (проверял соответствие по отпечатку SHA1, брал их из КриптоПроCSP ниже)

В КриптоПро CSP в разделе сертификаты есть информация о проверенной цепочке сертификатов (по кнопке "Свойства сертификата"):
Код:
....
  Цепочка сертификатов: Успешно проверена.
#0:
  Издатель          : Минцифры России
  Субъект           : Минцифры России
  Выдан             : 08/01/2022 13:32:39 UTC
  Истекает          : 08/01/2040 13:32:39 UTC
  SHA1 отпечаток    : 2f0cb09be3550ef17ec4f29c90abd18bfcaad63a
#1:
  Субъект           : Общество с ограниченной ответственностью "Сертум-Про"
  Выдан             : 01/04/2022 13:37:42 UTC
  Истекает          : 01/04/2037 13:37:42 UTC
  SHA1 отпечаток    : ed972e91562d65f43780e0060369ebe55cb65efc
#2:
  Субъект           : АО "СПОРТБЕТ"
  Выдан             : 16/05/2022 09:43:48 UTC
  Истекает          : 16/05/2023 09:40:36 UTC
  SHA1 отпечаток    : 02643b3ef037a7a598a2925781eebbda180eb455

Но смотрю в панель JCP, и не вижу цепочки:
screen1.png (20kb) загружен 2 раз(а).
Подозреваю, что как раз именно тут я должен был увидеть цепочку из трех сертификатов.

Что пробовал делать:
1. экспортировать личный сертификат с помощью КриптоПроCSP на кладке "Сертификаты" и тут же его импортировать (странное решение, но попробовал)- безрезультатно, цепочки в JCP не вижу
2. попробовал конвертировать сертификаты из DER в CRT, собрать цепочку и импортировать ее в КриптоПРОCSP:
Код:
  openssl x509 -inform DER -in calocal.cer -out calocal.crt
  openssl x509 -inform DER -in intermediate.cer -out intermadiate.crt
  openssl x509 -inform DER -in caroot.cer -out caroot.crt
  cat calocal.crt intermadiate.crt caroot.crt > domain.p7b

КриптоПро пишет, что сертификаты распределены по хранилищам, но цепочки в JCP опять нет
3. Каждую из полученных выше цепочек попробовал добавить в контейнер с помощью панели JCP на вкладке "Хранилища ключей и сертификатов":
Выделив "Exchange key and certificate", нажимаю "You can add certificates to container and create certificate request" -> "Add" - получаю ошибку формата сертификата в обоих случаях. При этом я не удалял уже существующий сертификат (его видно на скриншоте выше)
Заметил странность еще, здесь же пробовал нажать "try building chain for selected certificate" -> "Build" - выскакивает окно для выбора хранилища, в котором ничего нет
screen2.png (8kb) загружен 1 раз(а).

На каждом шаге пробовал отправлять запросы - все без изменений, вижу ровно тот же лог:
Код:
Jun 14, 2022 4:10:30 PM ru.CryptoPro.ssl.cl_39 a
FINE: %% check credential issuers...
Jun 14, 2022 4:10:30 PM ru.CryptoPro.ssl.cl_39 a
WARNING: %% No alias is match
Jun 14, 2022 4:10:30 PM ru.CryptoPro.ssl.cl_16 a
FINE: Appropriate client aliases not found.
Jun 14, 2022 4:10:30 PM ru.CryptoPro.ssl.cl_16 a
FINE: Containers not found.
Jun 14, 2022 4:10:30 PM ru.CryptoPro.ssl.cl_16 a
FINE: No appropriate cert was found.
Jun 14, 2022 4:10:30 PM ru.CryptoPro.ssl.cl_43 f
FINE: *** Certificate message
***


Насколько я понимаю, у меня действительно нет цепочки для личного сертификата, можете посмотреть, что я делаю не так?
Offline Евгений Афанасьев  
#9 Оставлено : 15 июня 2022 г. 16:40:29(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Автор: Артем Панин Перейти к цитате

Установил клиентский сертификат экспортированный из КриптоПро CSP в cacerts

не совсем понятно, зачем устанавливать клиентский сертификат в cacerts.

Автор: Артем Панин Перейти к цитате

Далее проверил наличие сертификата в My

Не совсем корректный способ проверки, т.к. вы используете JCP, а не CSP, JCP не имеет связи с CSP, это два разных продукта.
Проверить наличие сертификата в ключевом контейнере можно с помощью панели JCP, или keytool -list и т.п. Но из сообщений выше примерно понятно, что у вас в ключевом контейнере, скорее всего, один сертификат, а надо цепочку.

Автор: Артем Панин Перейти к цитате

в хранилищах доверенных корневых и промежуточных сертификатов

Как я писал выше, это не те хранилища, это хранилища CSP, а вы используете JCP. Для него существуют либо ключевой контейнер с сертификатми клиента, либо trust store формата CertStore с доверенныи корневыми сертификатами для построения цепочки сервера при подключении к нему.

Автор: Артем Панин Перейти к цитате

Но смотрю в панель JCP, и не вижу цепочки

Да, если вы смотрите ключевой контейнер, то об этом речь - тут один сертификат, еще нужны промежуточный и корневой для полной цепочки клиента.

Автор: Артем Панин Перейти к цитате

КриптоПро пишет, что сертификаты распределены по хранилищам, но цепочки в JCP опять нет

См. выше про хранилища - JCP не имеет связи с CSP.

Автор: Артем Панин Перейти к цитате

Выделив "Exchange key and certificate", нажимаю "You can add certificates to container and create certificate request" -> "Add" - получаю ошибку формата сертификата в обоих случаях

Это правильный вариант - клиентские сертификаты надо добавить в ключевой контейнер.
Цепочка имеет формат p7b?
В файле вся цепочка сертификатов клиента?
Проверьте, что в файле p7b не base64 содержимое, а binary (можно перекодировать при необходимости из base64).

Автор: Артем Панин Перейти к цитате

Заметил странность еще, здесь же пробовал нажать "try building chain for selected certificate" -> "Build" - выскакивает окно для выбора хранилища, в котором ничего нет

Это нормально, предлагаются доступные CertStore из списка ниже в окне панели JCP.
thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
Артем Панин оставлено 20.06.2022(UTC)
Offline Артем Панин  
#10 Оставлено : 20 июня 2022 г. 15:55:30(UTC)
Артем Панин

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

Группы: Участники
Зарегистрирован: 07.06.2022(UTC)
Сообщений: 7
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Евгений, спасибо! Все работает, пришлось немного поковыряться с форматами ключей, но все получилось.
Теперь у меня другая проблема. У меня несколько проектов на java, компоненты общаются между собой с использованием самоподписанных сертификатов (нет нужды использовать другие). После установки JCP, он, видимо, начал проверять все мои кейсторы, сертификаты и они ему не нравятся, запросы не проходят, вижу ошибки в духе:

Код:
15:49:44.103 [ClubScheduler1] ERROR update - 
javax.ws.rs.ProcessingException: RESTEASY004655: Unable to invoke request
	at org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.invoke(ApacheHttpClient4Engine.java:289)
	at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:454)
	at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:105)
	at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76)
	at com.sun.proxy.$Proxy204.getUpdateMessage(Unknown Source)
	...
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:65)
	at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.runAndReset$$$capture(FutureTask.java:308)
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: javax.net.ssl.SSLHandshakeException: No subject alternative names present
	at sun.security.ssl.Alert.createSSLException(Alert.java:131)
	at sun.security.ssl.TransportContext.fatal(TransportContext.java:324)
	at sun.security.ssl.TransportContext.fatal(TransportContext.java:267)
	at sun.security.ssl.TransportContext.fatal(TransportContext.java:262)
	at sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:654)
	at sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate(CertificateMessage.java:473)
	at sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume(CertificateMessage.java:369)
	at sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:377)
	at sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:444)
	at sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:422)
	at sun.security.ssl.TransportContext.dispatch(TransportContext.java:182)
	at sun.security.ssl.SSLTransport.decode(SSLTransport.java:152)
	at sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1392)
	at sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1300)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:435)
	at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:394)
	at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:353)
	at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:141)
	at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
	at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380)
	at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
	at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
	at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
	at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
	at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
	at org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.invoke(ApacheHttpClient4Engine.java:285)
	... 19 common frames omitted
Caused by: java.security.cert.CertificateException: No subject alternative names present
	at ru.CryptoPro.ssl.util.HostnameChecker.a(Unknown Source)
	at ru.CryptoPro.ssl.util.HostnameChecker.match(Unknown Source)
	at ru.CryptoPro.ssl.cl_121.a(Unknown Source)
	at ru.CryptoPro.ssl.cl_121.a(Unknown Source)
	at ru.CryptoPro.ssl.cl_121.checkServerTrusted(Unknown Source)
	at sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:638)
	... 42 common frames omitted


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