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

Уведомление

Icon
Error

3 Страницы123>
Опции
К последнему сообщению К первому непрочитанному
Offline norn  
#1 Оставлено : 20 ноября 2009 г. 15:14:34(UTC)
norn

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

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

Поблагодарили: 2 раз в 2 постах
У нас УЦ КриптоПро 1.4, меня хватает только на VisualBasic =))
Для клиентов и АРМ Админа используем CryptoPro CSP 2.0
Написал код, использующий и CAPICOM и CEnroll.
Задача была - написать программу для создания запроса на сертификат и на его обновление.

Код для создания запроса на сертификат у меня такой:

Код:
Option Explicit
Const AT_KEYEXCHANGE As Long = 1
Const PROV_GOST_2001_DH As Long = 75
Function GenerateSelfSignedCertRequest(ByVal sDN As String, ByVal sEKU As String) As String
    Dim oEnroll As XENROLLLib.CEnroll
    Set oEnroll = New XENROLLLib.CEnroll
    oEnroll.ProviderType = PROV_GOST_2001_DH
    oEnroll.ProviderName = "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider"
    oEnroll.KeySpec = AT_KEYEXCHANGE
    GenerateSelfSignedCertRequest = oEnroll.createPKCS10(sDN, sEKU)
End Function

Private Sub cmdGenerate_Click()
    Dim strZapros As String, FN As String
    Dim strDN As String, intFH As Integer
    
    If Len(txtFIO.Text) < 10 Or Len(txtOrg.Text) < 4 Or Len(txtDolg.Text) < 4 Then
        'MsgBox "Не полностью заполнены поля с информацией об уполномоченном лице.", vbCritical, "Ошибка заполенния!"
        'Exit Sub
    End If
    If Len(txtCity.Text) < 4 Or Len(txtOblast.Text) < 8 Then
        'MsgBox "Не полностью указано местонахождение организации.", vbCritical, "Ошибка заполенния!"
        'Exit Sub
    End If
    
    strDN = "CN=" + txtFIO.Text + ", S=" + txtOblast.Text + " , L=" + txtCity.Text + ", O=" + txtOrg.Text + ", OU=" + txtDolg.Text + ",  C=RU"
    strZapros = GenerateSelfSignedCertRequest(strDN, "1.3.6.1.5.5.7.3.4, 1.3.6.1.5.5.7.3.2, 1.2.643.2.2.34.6")
    
    FN = "c:\Запрос " + txtFIO.Text + ".p10"
    intFH = FreeFile
    Open FN For Output As intFH
    Print #intFH, strZapros
    MsgBox strZapros
    Close intFH
    
End Sub


Проблема №1:
При работе этого кода, взятого из документации на КриптоПро УЦ, CryptoPro CSP 2.0 не показывает ни одного считывателя кроме реестра.


Код для создания запроса на обновление сертификата такой:

Код:
Option Explicit
Const AT_KEYEXCHANGE As Long = 1
Const PROV_GOST_2001_DH As Long = 75

Private Sub cmdUpdate_Click()
    'frmUpdateQuest.Visible = True
    'Unload frmMain
    UpdateCert
End Sub


Function ReverseDN(ByVal sDN As String)
    Dim dnArray As Variant, i As Long, rdn As String
    dnArray = Split(sDN, ",")
    ReverseDN = ""
    For i = UBound(dnArray) To LBound(dnArray) Step -1
        rdn = Trim(dnArray(i))
        If Len(rdn) > 0 Then
            If Len(ReverseDN) = 0 Then
                ReverseDN = rdn
            Else
                ReverseDN = ReverseDN & ", " & rdn
            End If
        End If
    Next
End Function

Function GenerateRenewalCertRequest(ByVal oSignerCertificate As CAPICOM.Certificate, ByVal sEKU As String) As String
    Dim sDN As String: sDN = ReverseDN(oSignerCertificate.SubjectName)
    Dim sPKCS10 As String: sPKCS10 = GenerateSelfSignedCertRequest(sDN, sEKU)
    Dim oSignedData As CAPICOM.SignedData: Set oSignedData = New CAPICOM.SignedData
    Dim oUt As CAPICOM.Utilities: Set oUt = New CAPICOM.Utilities
    oSignedData.Content = oUt.Base64Decode(sPKCS10)
    Dim oSigner As CAPICOM.Signer: Set oSigner = New CAPICOM.Signer
    oSigner.Certificate = oSignerCertificate
    oSigner.Options = CAPICOM.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY
    GenerateRenewalCertRequest = oSignedData.Sign(oSigner)
End Function

Private Sub UpdateCert()
    Dim oStore As CAPICOM.Store: Set oStore = New CAPICOM.Store: oStore.Open
    Dim oCertificates As CAPICOM.Certificates
    Set oCertificates = oStore.Certificates.Select("DocSamples", "Выберите сертификат для обновления:")
    
    Dim oCertificate As CAPICOM.Certificate: Set oCertificate = oCertificates.Item(1)
    MsgBox GenerateRenewalCertRequest(oCertificate, "1.3.6.1.5.5.7.3.4, 1.3.6.1.5.5.7.3.2, 1.2.643.2.2.34.6, 1.3.6.1.4.1.33760.1")
End Sub

Function GenerateSelfSignedCertRequest(ByVal sDN As String, ByVal sEKU As String) As String
    Dim oEnroll As XENROLLLib.CEnroll
    Set oEnroll = New XENROLLLib.CEnroll
    oEnroll.ProviderType = PROV_GOST_2001_DH
    oEnroll.ProviderName = "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider"
    oEnroll.KeySpec = AT_KEYEXCHANGE
    GenerateSelfSignedCertRequest = oEnroll.createPKCS10(sDN, sEKU)
End Function



Проблема №2:
При работе этого кода, взятого из документации на КриптоПро УЦ, компилятор выдаёт ошибку на последней строке выполнения при создании запроса: GenerateRenewalCertRequest = oSignedData.Sign(oSigner)
Говорит: "The Signer's certificate is not valid for signing"




Прошу! Помогите!
thanks 1 пользователь поблагодарил norn за этот пост.
vuan оставлено 04.02.2013(UTC)
Offline Kirill Sobolev  
#2 Оставлено : 20 ноября 2009 г. 15:25:56(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Цитата:
CryptoPro CSP 2.0 не показывает ни одного считывателя кроме реестра.

Видимо, больше никакие считыватели не установлены. Процесс установки описан в документации на КриптоПро CSP?
Цитата:
Говорит: "The Signer's certificate is not valid for signing"

Сертификат подписчика действителен? В расширении "Использование ключа" есть "Цифровая подпись"?
Техническую поддержку оказываем тут
Наша база знаний
Offline norn  
#3 Оставлено : 20 ноября 2009 г. 15:48:33(UTC)
norn

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

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

Поблагодарили: 2 раз в 2 постах
Kirill Sobolev написал:
Цитата:
CryptoPro CSP 2.0 не показывает ни одного считывателя кроме реестра.

Видимо, больше никакие считыватели не установлены. Процесс установки описан в документации на КриптоПро CSP?


В том то и проблема, стоят 3 рабочих считывателя: дискета, флешка и реестр. Убираю реестр вообще ничего не видет. Просматриваю произвольный контейнер с флешки из КриптоПро CSP - видит.

Kirill Sobolev написал:

Цитата:
Говорит: "The Signer's certificate is not valid for signing"

Сертификат подписчика действителен? В расширении "Использование ключа" есть "Цифровая подпись"?


Кстати да, не установлен корневой сертификат, может из-за этого.
Offline Kirill Sobolev  
#4 Оставлено : 20 ноября 2009 г. 16:34:59(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
http://www.cryptopro.ru/certsrv/ а если тут запрос делать - сколько считывателей будет доступно?
Техническую поддержку оказываем тут
Наша база знаний
Offline norn  
#5 Оставлено : 23 ноября 2009 г. 9:26:00(UTC)
norn

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

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

Поблагодарили: 2 раз в 2 постах
Тоже только реестр
Offline Kirill Sobolev  
#6 Оставлено : 23 ноября 2009 г. 15:37:24(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Дело в настройках считывателей, значит - УЦ тут непричем.
Техническую поддержку оказываем тут
Наша база знаний
Offline norn  
#7 Оставлено : 23 ноября 2009 г. 16:51:24(UTC)
norn

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

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

Поблагодарили: 2 раз в 2 постах
C первой проблемой разобрался, причина в винде, не запускала сервис криптопро, но вот со второй проблемой не справился.
Не получается создать запрос на обновление сертификата.
Сертификат подписчика действителен, в расширении "Использование ключа" есть "Цифровая подпись".
Offline IvanZzz  
#8 Оставлено : 23 ноября 2009 г. 17:01:44(UTC)
IvanZzz

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

Группы: Участники
Зарегистрирован: 23.04.2008(UTC)
Сообщений: 519
Мужчина
Откуда: Крипто-Про

Где хранится ключ клиента ЦР?
Offline norn  
#9 Оставлено : 23 ноября 2009 г. 17:18:41(UTC)
norn

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

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

Поблагодарили: 2 раз в 2 постах
IvanZzz, вы не поняли, ЦР здесь не при чём, разрабатываю программу и код, указанный выше не работает (VB говорит: "The Signer's certificate is not valid for signing").
Offline IvanZzz  
#10 Оставлено : 23 ноября 2009 г. 17:23:47(UTC)
IvanZzz

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

Группы: Участники
Зарегистрирован: 23.04.2008(UTC)
Сообщений: 519
Мужчина
Откуда: Крипто-Про

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