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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline makov190  
#1 Оставлено : 7 декабря 2022 г. 9:21:26(UTC)
makov190

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

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

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

Формирую запрос на изготовление ГОСТ ТЛС-сертификата в командной строке при помощи утилиты cryptcp версия 5.0.12004.0

cryptcp.exe -creatrqst C:\CryptCP\cert\11.ru.der -provtype 80 -exprt -dn "C=RU, S=77 Москва, L=г. Москва, O=111, CN=111, 1.2.643.100.1=1111111111111, 1.2.643.100.4=1111111111, STREET=1111" -altname www.11.ru, -altname 11.ru -certusage "1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2" -both -ku

, где 11 - название домена
111 - название организации
1111111111111 - ОГРН
1111111111 - ИНН
1111 - улица дом

В УЦ сообщили, что в запросе содержатся лишние поля (ниже). Это технические атрибуты, которые добавляет cryptcp автоматически.

1.3.6.1.4.1.311.13.2.3 :6.1.7601.2
1.3.6.1.4.1.311.21.20 :unable to print attribute
1.3.6.1.4.1.311.13.2.2 :unable to print attribute

Решение, указанное в https://www.cryptopro.ru...spx?g=posts&t=19567, не помогает.

Каким образом сделать запрос без включения вышеуказанных полей?

Отредактировано пользователем 7 декабря 2022 г. 9:49:58(UTC)  | Причина: Не указана

Offline TolikTipaTut1  
#2 Оставлено : 9 декабря 2022 г. 15:25:31(UTC)
TolikTipaTut1

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

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

Сказал(а) «Спасибо»: 43 раз
Поблагодарили: 69 раз в 61 постах
Не уверен, что вопрос "лежит" в правильной ветке.

Протестил на Ubuntu 22.04. Как и ожидалось, лишних полей не добавляется. Можно написать в тех. поддержку, а можно попытаться решить вопрос своими силами: надо извлечь подписываемое "тело" запроса, удалить из него лишние атрибуты, после чего переподписать запрос.
Offline Александр Лавник  
#3 Оставлено : 9 декабря 2022 г. 15:28:53(UTC)
Александр Лавник

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

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

Сказал «Спасибо»: 53 раз
Поблагодарили: 791 раз в 731 постах
Автор: TolikTipaTut1 Перейти к цитате
Не уверен, что вопрос "лежит" в правильной ветке.

Протестил на Ubuntu 22.04. Как и ожидалось, лишних полей не добавляется. Можно написать в тех. поддержку, а можно попытаться решить вопрос своими силами: надо извлечь подписываемое "тело" запроса, удалить из него лишние атрибуты, после чего переподписать запрос.
На Linux и не добавляются эти атрибуты.
Техническую поддержку оказываем тут
Наша база знаний
Offline Александр Лавник  
#4 Оставлено : 9 декабря 2022 г. 15:30:37(UTC)
Александр Лавник

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

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

Сказал «Спасибо»: 53 раз
Поблагодарили: 791 раз в 731 постах
Автор: makov190 Перейти к цитате
Здравствуйте.

Формирую запрос на изготовление ГОСТ ТЛС-сертификата в командной строке при помощи утилиты cryptcp версия 5.0.12004.0

cryptcp.exe -creatrqst C:\CryptCP\cert\11.ru.der -provtype 80 -exprt -dn "C=RU, S=77 Москва, L=г. Москва, O=111, CN=111, 1.2.643.100.1=1111111111111, 1.2.643.100.4=1111111111, STREET=1111" -altname www.11.ru, -altname 11.ru -certusage "1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2" -both -ku

, где 11 - название домена
111 - название организации
1111111111111 - ОГРН
1111111111 - ИНН
1111 - улица дом

В УЦ сообщили, что в запросе содержатся лишние поля (ниже). Это технические атрибуты, которые добавляет cryptcp автоматически.

1.3.6.1.4.1.311.13.2.3 :6.1.7601.2
1.3.6.1.4.1.311.21.20 :unable to print attribute
1.3.6.1.4.1.311.13.2.2 :unable to print attribute

Решение, указанное в https://www.cryptopro.ru...spx?g=posts&t=19567, не помогает.

Каким образом сделать запрос без включения вышеуказанных полей?
Решение не помогает - значит что-то неверно сделали по рекомендации.

Техническую поддержку оказываем тут
Наша база знаний
Offline TolikTipaTut1  
#5 Оставлено : 10 декабря 2022 г. 17:27:24(UTC)
TolikTipaTut1

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

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

Сказал(а) «Спасибо»: 43 раз
Поблагодарили: 69 раз в 61 постах
Автор: TolikTipaTut1 Перейти к цитате
Не уверен, что вопрос "лежит" в правильной ветке.

Протестил на Ubuntu 22.04. Как и ожидалось, лишних полей не добавляется. Можно написать в тех. поддержку, а можно попытаться решить вопрос своими силами: надо извлечь подписываемое "тело" запроса, удалить из него лишние атрибуты, после чего переподписать запрос.


Я тут на досуге повеселиться решил:
1) на винде создал запрос с использованием cryptcp;
2) с использованием BouncyCastle выдрал из структуры CertificationRequestInfo все, кроме attributes;
3) с использованием BouncyCastle сформировал новую структуру CertificationRequestInfo, подписал ее ключом, созданным во время генерации запроса с использованием cryptcp;
4) с использованием BouncyCastle сформировал новый запрос на сертификат и отправил его для проверки сюды: https://www.cryptopro.ru/certsrv/certrqxt.asp.

Результат: все работает )

Код:
Add-Type -Path ".\BouncyCastle.dll"

$lib = @"
    [DllImportAttribute("advapi32.dll", SetLastError = true, CharSet = CharSet.Auto)]
    public static extern bool CryptAcquireContext(
        ref IntPtr phProv,
        string pszContainer,
        string pszProvider,
        int dwProvType,
        Int64 dwFlags
    );

    [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    public static extern bool CryptCreateHash(
        IntPtr hProv,
        uint algId,
        IntPtr hKey,
        uint dwFlags,
        ref IntPtr phHash
    );

    [DllImport("advapi32.dll", SetLastError = true)]
    public static extern bool CryptHashData(
        IntPtr hHash,
        byte[] pbData,
        uint dataLen,
        uint flags
    );

    [DllImport("advapi32.dll", SetLastError = true)]
    public static extern bool CryptSignHash(
        IntPtr hHash,
        uint keySpec,
        IntPtr description,
        uint flags,
        [Out] byte[] signature,
        [In, Out] ref uint signatureLen
    );

    [DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=true)]
    public static extern bool CryptReleaseContext(
        IntPtr phProv,
        int flags
    );

    [DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=true)]
    public static extern bool CryptDestroyHash(
        IntPtr phProv
    );
"@

Add-Type -MemberDefinition $lib -Namespace PKI -Name CSP
cryptcp.exe -creatrqst ".\1.req" -provtype 80 -exprt -dn "C=RU, S=77 Москва, L=г. Москва, O=111, CN=111, 1.2.643.100.1=1111111111111, 1.2.643.100.4=1111111111, STREET=1111" -altname www.11.ru, -altname 11.ru -certusage "1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2" -both -ku -cont "\\.\HDIMAGE\MyContainer"
$PKCS10Request = [Org.BouncyCastle.OpenSsl.PemReader]::new([System.IO.File]::OpenText((gi -Path ".\1.req").FullName)).ReadObject() -as [Org.BouncyCastle.Pkcs.Pkcs10CertificationRequest]
$Der_PKCS10Request = [Org.BouncyCastle.Asn1.DerSequence]::GetInstance($PKCS10Request.GetDerEncoded())
$tbsRequest = [Org.BouncyCastle.Asn1.DerSequence]::new(
    @(
        $Der_PKCS10Request[0][0],
        $Der_PKCS10Request[0][1],
        $Der_PKCS10Request[0][2]
    ) -as [Org.BouncyCastle.Asn1.Asn1Encodable[]]
)

[IntPtr] $phProv = [IntPtr]::Zero
[PKI.CSP]::CryptAcquireContext(
    [ref]$phProv,
    "\\.\HDIMAGE\MyContainer",
    "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider",
    80,
    (0x0)
)
[IntPtr] $hHash = [IntPtr]::Zero
[PKI.CSP]::CryptCreateHash($phProv, 32801, [System.IntPtr]::Zero, 0, [ref] $hHash)
[PKI.CSP]::CryptHashData($hHash, $tbsRequest.GetDerEncoded(), $tbsRequest.GetDerEncoded().Count, 0)
[byte[]] $signature = $null
[uint32] $signatureLen = 0
[PKI.CSP]::CryptSignHash($hHash, 0x1, [System.IntPtr]::Zero, 0, $signature, [ref] $signatureLen)
$signature = [byte[]]::new($signatureLen)
[PKI.CSP]::CryptSignHash($hHash, 0x1, [System.IntPtr]::Zero, 0, $signature, [ref] $signatureLen)
[PKI.CSP]::CryptDestroyHash($hHash)
[PKI.CSP]::CryptReleaseContext($phProv,0)

[array]::reverse($signature)
$Der_NewReq = ([Org.BouncyCastle.Asn1.DerSequence]::new(
    @(
        $tbsRequest,
        $Der_PKCS10Request[1],
        [Org.BouncyCastle.Asn1.DerBitString]::new($signature)
    ) -as [Org.BouncyCastle.Asn1.Asn1Encodable[]]
).GetDerEncoded())
$NewReq = [Org.BouncyCastle.Pkcs.Pkcs10CertificationRequest]::new($Der_NewReq)
$NewReq.Verify()
[System.Convert]::ToBase64String($Der_NewReq)

Отредактировано пользователем 11 декабря 2022 г. 14:52:35(UTC)  | Причина: Не указана

Offline makov190  
#6 Оставлено : 19 декабря 2022 г. 9:31:37(UTC)
makov190

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

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

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 6 раз в 1 постах
На другом компе с Win10 x64 сформировался запрос без ненужных полей.
А на Win7 x32 не получилось.
Offline Александр Лавник  
#7 Оставлено : 19 декабря 2022 г. 10:00:25(UTC)
Александр Лавник

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

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

Сказал «Спасибо»: 53 раз
Поблагодарили: 791 раз в 731 постах
Автор: makov190 Перейти к цитате
На другом компе с Win10 x64 сформировался запрос без ненужных полей.
А на Win7 x32 не получилось.
На Windows 7 x32 добавляли параметр в ветку:

Код:
HKEY_LOCAL_MACHINE\SOFTWARE\Crypto Pro\Cryptography\CurrentVersion\Parameters

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