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

Уведомление

Icon
Error

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

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

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

Сказал(а) «Спасибо»: 4 раз
Подскажите пожалуйста как это реализовать на c++ ? куда копать что смотреть?
Смотрел что то про "msxml4.dll" и "mssoap30.dll" так и не понял ни чего...
а Так надо чтоб на выходе был файл name.p10 который в последующее в базу будет вносится.при добавлении пользователя
Offline Андрей Писарев  
#2 Оставлено : 12 ноября 2012 г. 13:10:42(UTC)
Андрей *

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

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

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Посмотрите SDK
+
MSDN
1. Creating Certificate Requests Using the Certificate Enrollment Control and CryptoAPI

2. Making a Certificate Request


Отредактировано пользователем 12 ноября 2012 г. 13:20:40(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline Al_25  
#3 Оставлено : 27 ноября 2012 г. 12:17:33(UTC)
Al_25

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

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

Сказал(а) «Спасибо»: 4 раз
Кстати подскажите какие ключи надо сделать чтоб сертификат был со свойствами
Цитата:
Подписывание документа Пользователь Центра Регистрации, HTTP, TLS клиент Проверка подлинности клиента

ПЫ использую CertEnroll

Отредактировано пользователем 27 ноября 2012 г. 12:49:40(UTC)  | Причина: Не указана

Offline dedov  
#4 Оставлено : 27 ноября 2012 г. 13:07:13(UTC)
dedov

Статус: Эксперт

Группы: Участники
Зарегистрирован: 03.04.2008(UTC)
Сообщений: 380
Мужчина
Откуда: Россия, г. Белгород

Сказал «Спасибо»: 11 раз
Поблагодарили: 9 раз в 9 постах
Al_25 написал:
Кстати подскажите какие ключи надо сделать чтоб сертификат был со свойствами
Цитата:
Подписывание документа Пользователь Центра Регистрации, HTTP, TLS клиент Проверка подлинности клиента

ПЫ использую CertEnroll


может это поможет
Offline Al_25  
#5 Оставлено : 28 ноября 2012 г. 10:37:21(UTC)
Al_25

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

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

Сказал(а) «Спасибо»: 4 раз
нашел вот это: ссыль там как раз про то что мне надо это: обмен внутри организации и эл.подпись флаги, но что тоне могу понять как реализовать, может кто нибудь объяснит "на пальцах"?
Offline MCR  
#6 Оставлено : 28 ноября 2012 г. 12:39:23(UTC)
MCR

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

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

Сказал(а) «Спасибо»: 57 раз
Поблагодарили: 11 раз в 8 постах
Al_25 написал:
нашел вот это: ссыль там как раз про то что мне надо это: обмен внутри организации и эл.подпись флаги, но что тоне могу понять как реализовать, может кто нибудь объяснит "на пальцах"?

По ссылке лишь одна функция из многих, которые нужно вызывать.

Начинать нужно с основ, а не с вызова функций напрямую.
Взять лучше интерфейс какой-нибудь.
Искать в этом направлении:
http://www.cryptopro.ru/...ro/forum/view.asp?q=1658
http://cpdn.cryptopro.ru...mple_CEnrollRequest.html
Offline Al_25  
#7 Оставлено : 28 ноября 2012 г. 13:18:57(UTC)
Al_25

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

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

Сказал(а) «Спасибо»: 4 раз
Код:

IEnroll* CertEnroll = NULL;

	CLSID CLSID_CCertEnroll;

	HRESULT hr = CoInitialize(NULL);
	if (FAILED(hr))
	{
	ShowMessage(GetLastError());
	Close();
	}

	hr =	CoCreateInstance(CLSID_CEnroll,NULL,CLSCTX_INPROC_SERVER,IID_IEnroll,(void **)&CertEnroll );
	if (FAILED(hr))
	{
	ShowMessage(GetLastError());
	Close();
	}
	hr =	CertEnroll->put_ProviderNameWStr(L"Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider");
	if (FAILED(hr))
	{
	ShowMessage(GetLastError());
	Close();
	}
	hr = 	CertEnroll->put_ProviderType(75);
	if (FAILED(hr))
	{
	ShowMessage(GetLastError());
	Close();
	}                              // AT_KEYEXCHANGE  XCN_AT_SIGNATURE
	hr =	CertEnroll->put_KeySpec(AT_KEYEXCHANGE|AT_SIGNATURE); // пытался тут сделать но не вышло
	if (FAILED(hr))
	{
	ShowMessage(GetLastError());
	Close();
	}
	hr = 	CertEnroll->put_MyStoreFlags(CERT_SYSTEM_STORE_LOCAL_MACHINE);
	if (FAILED(hr))
	{
	ShowMessage(GetLastError());
	Close();
	}
//	HCRYPTPROV hProv = 0;                
 //1.3.6.1.4.1.311.10.3.12  	подписание документа AT_SIGNATURE (цифровая подпись)
//1.2.643.3.31415.1           обмен док. в нутри организации AT_KEYEXCHANGE
//	HCRYPTKEY hKey = 0;                   
//	if(!CryptGenKey(hProv, CALG_SHA1, AT_KEYEXCHANGE, &hKey)) {
//		ShowMessage("FAIL CryptGenKey");
//	}
//	unsigned long u;

	String zap="";
	String zapr="";
	if (Edit1->Text == "") {
		zapr = "C:\\zapros.p10";
	}
	else {
        zapr = Edit1->Text;
    }

	wchar_t* w = new wchar_t[2];

	w[0] = '\'';
	w[1] = '\0';
	if (mail!= "")
		zap = "CN="+name_usr+ ",OU=о."+ otdel +",O=ОАО "+w+w+"строй"+w+w+",L=Город,S=область,C=RU,E=" + mail;
	else
		zap = "CN="+name_usr+ ",OU=о."+ otdel +",O=ОАО "+w+w+"строй"+w+w+",L=Город,S=область,C=RU";
	ShowMessage(zap);

	hr =	CertEnroll->createFilePKCS10WStr(zap.w_str(),L"",zapr.w_str());


	if (FAILED(hr))
	{
	ShowMessage(GetLastError());
	Close();
	}

ну вот собственно как у меня...
Offline MCR  
#8 Оставлено : 28 ноября 2012 г. 20:01:28(UTC)
MCR

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

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

Сказал(а) «Спасибо»: 57 раз
Поблагодарили: 11 раз в 8 постах
Al_25 написал:
Код:

IEnroll* CertEnroll = NULL;

	CLSID CLSID_CCertEnroll;

	HRESULT hr = CoInitialize(NULL);
	if (FAILED(hr))
	{
	ShowMessage(GetLastError());
	Close();
	}

	hr =	CoCreateInstance(CLSID_CEnroll,NULL,CLSCTX_INPROC_SERVER,IID_IEnroll,(void **)&CertEnroll );
	if (FAILED(hr))
	{
	ShowMessage(GetLastError());
	Close();
	}
	hr =	CertEnroll->put_ProviderNameWStr(L"Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider");
	if (FAILED(hr))
	{
	ShowMessage(GetLastError());
	Close();
	}
	hr = 	CertEnroll->put_ProviderType(75);
	if (FAILED(hr))
	{
	ShowMessage(GetLastError());
	Close();
	}                              // AT_KEYEXCHANGE  XCN_AT_SIGNATURE
	hr =	CertEnroll->put_KeySpec(AT_KEYEXCHANGE|AT_SIGNATURE); // пытался тут сделать но не вышло
	if (FAILED(hr))
	{
	ShowMessage(GetLastError());
	Close();
	}
	hr = 	CertEnroll->put_MyStoreFlags(CERT_SYSTEM_STORE_LOCAL_MACHINE);
	if (FAILED(hr))
	{
	ShowMessage(GetLastError());
	Close();
	}
//	HCRYPTPROV hProv = 0;                
 //1.3.6.1.4.1.311.10.3.12  	подписание документа AT_SIGNATURE (цифровая подпись)
//1.2.643.3.31415.1           обмен док. в нутри организации AT_KEYEXCHANGE
//	HCRYPTKEY hKey = 0;                   
//	if(!CryptGenKey(hProv, CALG_SHA1, AT_KEYEXCHANGE, &hKey)) {
//		ShowMessage("FAIL CryptGenKey");
//	}
//	unsigned long u;

	String zap="";
	String zapr="";
	if (Edit1->Text == "") {
		zapr = "C:\\zapros.p10";
	}
	else {
        zapr = Edit1->Text;
    }

	wchar_t* w = new wchar_t[2];

	w[0] = '\'';
	w[1] = '\0';
	if (mail!= "")
		zap = "CN="+name_usr+ ",OU=о."+ otdel +",O=ОАО "+w+w+"строй"+w+w+",L=Город,S=область,C=RU,E=" + mail;
	else
		zap = "CN="+name_usr+ ",OU=о."+ otdel +",O=ОАО "+w+w+"строй"+w+w+",L=Город,S=область,C=RU";
	ShowMessage(zap);

	hr =	CertEnroll->createFilePKCS10WStr(zap.w_str(),L"",zapr.w_str());


	if (FAILED(hr))
	{
	ShowMessage(GetLastError());
	Close();
	}

ну вот собственно как у меня...

Как работает?
Offline Al_25  
#9 Оставлено : 29 ноября 2012 г. 8:36:10(UTC)
Al_25

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

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

Сказал(а) «Спасибо»: 4 раз
создает файл запроса. *.p10
потом в АРМ администратора ЦР создаю пользователя подкидываю файл. поля нужные заполнены.
далее далее.. потом сам запрос на сертификат, там создать новый. так же далее далее.
все создал но в св-вах сертификата а точнее в "Этот сертификат предназначен для:" там нет того что я хочу увидеть - подпись документа вместо этого там "Защита сообщений эл. почты".:(
Offline Kirill Sobolev  
#10 Оставлено : 29 ноября 2012 г. 13:58:17(UTC)
Кирилл Соболев

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

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

Поблагодарили: 177 раз в 168 постах
Цитата:
в св-вах сертификата а точнее в "Этот сертификат предназначен для:" там нет того что я хочу увидеть - подпись документа вместо этого там "Защита сообщений эл. почты".:(

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