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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline GoodHumster  
#1 Оставлено : 2 ноября 2015 г. 18:46:18(UTC)
GoodHumster

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

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

Здраствуйте, Каким образом на ios можно получить корневой сертификат вручную? Пробывал получить с помощью GetCACertificate  но она выдает 12169 ошибку.

Отредактировано пользователем 3 ноября 2015 г. 15:05:54(UTC)  | Причина: Не указана

Offline GoodHumster  
#2 Оставлено : 3 ноября 2015 г. 11:02:55(UTC)
GoodHumster

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

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

Кто нибудь подскажет что делать?Аууууу??????

Отредактировано пользователем 5 ноября 2015 г. 12:57:59(UTC)  | Причина: Не указана

Offline GoodHumster  
#3 Оставлено : 5 ноября 2015 г. 14:19:42(UTC)
GoodHumster

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

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

Автор: GoodHumster Перейти к цитате
Здраствуйте, Каким образом на ios можно получить корневой сертификат вручную? Пробывал получить с помощью GetCACertificate  но она выдает 12169 ошибку.


Мне кто нибудь ответит?
Offline Alexander A. Nikitkov  
#4 Оставлено : 6 ноября 2015 г. 15:42:02(UTC)
Alexander A. Nikitkov

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

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

Сказал «Спасибо»: 4 раз
Поблагодарили: 54 раз в 54 постах
Доброго дня, GoodHumster

Возможно где-то ошиблись.
Просмотрите пример ещё раз - там всё описано.
get_and_install_ca_cert в CPRequest.cpp
И пришлите вывод ошибки полностью.
Offline GoodHumster  
#5 Оставлено : 6 ноября 2015 г. 15:54:58(UTC)
GoodHumster

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

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

Автор: ГОСТface_killah Перейти к цитате
Доброго дня, GoodHumster

Возможно где-то ошиблись.
Просмотрите пример ещё раз - там всё описано.
get_and_install_ca_cert в CPRequest.cpp
И пришлите вывод ошибки полностью.


Извините я конечно может чего не понимаю, но файл CPRequest.cpp закрыт от любопытных глаз и прочих доброжелателей
Offline Русев Андрей  
#6 Оставлено : 6 ноября 2015 г. 18:04:08(UTC)
Русев Андрей

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

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,272

Сказал(а) «Спасибо»: 22 раз
Поблагодарили: 446 раз в 325 постах
В руководстве разработчика:
API запроса на сертификат
Класс UnixRequest
Метод GetCACertificate()
Примеры работы с классом UnixRequest есть в пакете для разработчика для любой Unix-платформы, кроме iOS, где собирать обычные консольные приложения нет смысла.
Вероятно, вам будет удобен дистрибутив КриптоПро CSP для OS X. Там пакет разработчика называется CPROcspd. Исходники и readme по сборке в /opt/cprocsp/src.
Нужный вам пример - /opt/cprocsp/src/doxygen/CSP/CPCA15/CPCA15.cpp. Там нет вызова GetCACertificate(), но есть вся процедура запроса сертификата, что позволит разобраться.
Официальная техподдержка. Официальная база знаний.
Offline GoodHumster  
#7 Оставлено : 7 ноября 2015 г. 13:07:01(UTC)
GoodHumster

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

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

Пробывал сделать запрос через UnixEnroll, возвращает код с ошибкой -2146893801.
Offline int_el  
#8 Оставлено : 26 ноября 2015 г. 12:47:22(UTC)
int_el

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

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

Сказал(а) «Спасибо»: 1 раз
Всем доброго времени суток!
У меня такая же проблема - не могу получить корневой сертификат через CryptoAPI на iOS.
Код простейший:
Код:

UnixRequest * request = UnixRequest::URFactory("CPCA15");
HRESULT res;
BSTR bstrConfig = SysAllocString(L"https://cryptopro.ru:5555/ui");
BSTR bstrCACert;
res = request->GetCACertificate(false, bstrConfig, CR_OUT_BASE64HEADER|CR_OUT_CHAIN, &bstrCACert);
if (res == S_OK)
{
    printf("Got CA Certificate: ");
    printf("%s",ConvertBSTRToString(bstrCACert));
    printf("\n");
}
else
{
    handleError("GetCACertificate");
}       

Вот что выводит в консоли:
libssp: 0x3a721d4: :3915 AddToMessageLog CryptoPro TLS. Certificate status: 0x20
libssp: 0x3a721d4: :3922 AddToMessageLog CryptoPro TLS. Error 0x80090325 validating server's certificate: The certificate chain was issued by an authority that is not trusted.
An error occurred in the program.
GetCACertificate
Error number 80092004.

Пробовал различные варианты авторизации через SetCredential - не помогает.
Причем, если через панель КриптоПРО установить сертификат, то после этого код работает без проблем.
Подскажите, пожалуйста, как решить эту проблему.
Offline Dmitry_Bokovikov  
#9 Оставлено : 18 января 2016 г. 12:30:59(UTC)
Dmitry_Bokovikov

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

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

Поблагодарили: 18 раз в 17 постах
Автор: int_el Перейти к цитате
Всем доброго времени суток!
У меня такая же проблема - не могу получить корневой сертификат через CryptoAPI на iOS.
Код простейший:
Код:

UnixRequest * request = UnixRequest::URFactory("CPCA15");
HRESULT res;
BSTR bstrConfig = SysAllocString(L"https://cryptopro.ru:5555/ui");
BSTR bstrCACert;
res = request->GetCACertificate(false, bstrConfig, CR_OUT_BASE64HEADER|CR_OUT_CHAIN, &bstrCACert);
if (res == S_OK)
{
    printf("Got CA Certificate: ");
    printf("%s",ConvertBSTRToString(bstrCACert));
    printf("\n");
}
else
{
    handleError("GetCACertificate");
}       

Вот что выводит в консоли:
libssp: 0x3a721d4: :3915 AddToMessageLog CryptoPro TLS. Certificate status: 0x20
libssp: 0x3a721d4: :3922 AddToMessageLog CryptoPro TLS. Error 0x80090325 validating server's certificate: The certificate chain was issued by an authority that is not trusted.
An error occurred in the program.
GetCACertificate
Error number 80092004.

Пробовал различные варианты авторизации через SetCredential - не помогает.
Причем, если через панель КриптоПРО установить сертификат, то после этого код работает без проблем.
Подскажите, пожалуйста, как решить эту проблему.


Прошу прощения за поздний ответ, не хватает вызова SetCredential
static long getAndInstallCACert(const char* UIURL, long * pCertsInstalled)
{
LONG flags = CR_OUT_BASE64HEADER;
UnixRequest * pRequest = 0;
HRESULT res;
BSTR bstrCert = 0;

pRequest = UnixRequest::URFactory("CPCA15");

if (pRequest == 0)
return NTE_FAIL;

res = pRequest->SetCredential(NULL,X509AuthAnonymous,
X509EnrollmentCheckChainFlags(X509CC_TLS|X509CC_NoCheck),
NULL, NULL);
if(res != S_OK){
printf("SetCredential failed\n");
return res;
}

BSTR UrlOfCA = ConvertStringToBSTR(UIURL);
res = pRequest->GetCACertificate(0, UrlOfCA, flags, &bstrCert);
if(res != S_OK){
printf("GetCACertificate failed\n");
SysFreeString(UrlOfCA);
if(bstrCert) SysFreeString(bstrCert);
return res;
}

Callbacks tb;
UnixEnroll * pEnroll = new UnixEnroll(tb,true);
LONG lCertInstalled=0;

res = pEnroll->installPKCS7Ex(bstrCert,&lCertInstalled);
*pCertsInstalled = lCertInstalled;

SysFreeString(UrlOfCA);
if(bstrCert) SysFreeString(bstrCert);
delete pEnroll;
delete pRequest;
return res;
}

Пример вызова:
long plCertInstalled = 0;
std::string UIURL = "https://cryptopro.ru:5555/ui";

res = getAndInstallCACert(UIURL.c_str(), &plCertInstalled);
if ((res != S_OK) || (plCertInstalled == 0)) {
HandleError("Error getAndInstallCACert");
goto er;
}


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