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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline max.001  
#1 Оставлено : 26 августа 2016 г. 16:00:20(UTC)
max.001

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

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

На дебиан был установлен пакет (linux-amd64_4.0-deb.tgz) программ и симлинком была поменяна ссылка файла libcurl на libcpcurl.
код на php заработал
Код:
     
$ch = curl_init();
................
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'CERT_SHA1_HASH_PROP_ID:CERT_SYSTEM_STORE_CURRENT_USER:MY');
curl_setopt($ch, CURLOPT_SSLCERT, 'e80ed2c1ea2fdf04a1fadd2c11f9890a89a77c88');
curl_setopt($ch, CURLOPT_POSTFIELDS, $arPostFields);
................
$strContent = curl_exec($ch);

Пробую повторить тоже самое через curl из пакета в консоле
Код:

/opt/cprocsp/bin/amd64/curl --connect-timeout 60 --data "file=@file.txt" --data "param1=aaa" --cert-type CERT_SHA1_HASH_PROP_ID:CERT_SYSTEM_STORE_CURRENT_USER:MY --cert "e80ed2c1ea2fdf04a1fadd2c11f9890a89a77c88" --trace - --verbose --request POST --url "https://site......" -o result_curl.txt

И получаю ошибку 58 : Problem with the local SSL certificate
Почему проблема с локальным сертификатом? если php скрипт с curl команда выполняется от одного и того же пользователя?
в curl есть возможно залогировать вызов libcurl, (--libcurl filename.log)
получаю
Код:
/********* Sample code generated by the curl command line tool **********
 * All curl_easy_setopt() options are documented at:
 * http://curl.haxx.se/libcurl/c/curl_easy_setopt.html
 ************************************************************************/
#include <curl/curl.h>

int main(int argc, char *argv[])
{
  CURLcode ret;
  CURL *hnd = curl_easy_init();
  curl_easy_setopt(hnd, CURLOPT_URL, "https://site......");
  curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "file=@file.txt&param1=aaa");
  curl_easy_setopt(hnd, CURLOPT_POSTFIELDSIZE_LARGE, (curl_off_t)-1);
  curl_easy_setopt(hnd, CURLOPT_USERAGENT, "curl/7.21.3 (x86_64-unknown-linux-gnu) libcurl/7.21.3 SSPI/CPRO Feb 29 2016 23:40:09 zlib/1.2.8 libidn/1.29");
  curl_easy_setopt(hnd, CURLOPT_SSLCERTTYPE, "CERT_SHA1_HASH_PROP_ID:CERT_SYSTEM_STORE_CURRENT_USER:MY");
  curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50);
  curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
  curl_easy_setopt(hnd, CURLOPT_CONNECTTIMEOUT, 60);
  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1);
  ret = curl_easy_perform(hnd);
  curl_easy_cleanup(hnd);

  /* Here is a list of options the curl code used that cannot get generated
     as source easily. You may select to either not use them or implement
     them yourself.

  CURLOPT_WRITEDATA set to a objectpointer
  CURLOPT_WRITEFUNCTION set to a functionpointer
  CURLOPT_READDATA set to a objectpointer
  CURLOPT_READFUNCTION set to a functionpointer
  CURLOPT_SEEKDATA set to a objectpointer
  CURLOPT_SEEKFUNCTION set to a functionpointer
  CURLOPT_ERRORBUFFER set to a objectpointer
  CURLOPT_HTTPHEADER set to a objectpointer
  CURLOPT_SSLCERT set to a objectpointer
  CURLOPT_STDERR set to a objectpointer
  CURLOPT_DEBUGFUNCTION set to a functionpointer
  CURLOPT_DEBUGDATA set to a objectpointer
  CURLOPT_SOCKOPTFUNCTION set to a functionpointer
  CURLOPT_SOCKOPTDATA set to a objectpointer

  */
  return (int)ret;
}
/**** End of sample code ****/


Если тоже самое сделать, но использовать не "/opt/cprocsp/bin/amd64/curl" а "curl" то вывод будет таким
Код:

/********* Sample code generated by the curl command line tool **********
 * All curl_easy_setopt() options are documented at:
 * http://curl.haxx.se/libcurl/c/curl_easy_setopt.html
 ************************************************************************/
#include <curl/curl.h>

int main(int argc, char *argv[])
{
  CURLcode ret;
  CURL *hnd;
  struct curl_slist *slist1;

  slist1 = NULL;
  slist1 = curl_slist_append(slist1, "Content-Type: multipart/form-data");

  hnd = curl_easy_init();
  curl_easy_setopt(hnd, CURLOPT_URL, "https://site......");
  curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "file=@file.txt&param1=aaa");
  curl_easy_setopt(hnd, CURLOPT_POSTFIELDSIZE_LARGE, (curl_off_t)99);
  curl_easy_setopt(hnd, CURLOPT_USERAGENT, "curl/7.38.0");
  curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, slist1);
  curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);
  curl_easy_setopt(hnd, CURLOPT_SSLCERT, "e80ed2c1ea2fdf04a1fadd2c11f9890a89a77c88");
  curl_easy_setopt(hnd, CURLOPT_SSLCERTTYPE, "CERT_SHA1_HASH_PROP_ID:CERT_SYSTEM_STORE_CURRENT_USER:MY");
  curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
  curl_easy_setopt(hnd, CURLOPT_CONNECTTIMEOUT_MS, 60000L);
  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
  curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);

  /* Here is a list of options the curl code used that cannot get generated
     as source easily. You may select to either not use them or implement
     them yourself.

  CURLOPT_WRITEDATA set to a objectpointer
  CURLOPT_WRITEFUNCTION set to a functionpointer
  CURLOPT_READDATA set to a objectpointer
  CURLOPT_READFUNCTION set to a functionpointer
  CURLOPT_SEEKDATA set to a objectpointer
  CURLOPT_SEEKFUNCTION set to a functionpointer
  CURLOPT_ERRORBUFFER set to a objectpointer
  CURLOPT_STDERR set to a objectpointer
  CURLOPT_DEBUGFUNCTION set to a functionpointer
  CURLOPT_DEBUGDATA set to a objectpointer
  CURLOPT_HEADERFUNCTION set to a functionpointer
  CURLOPT_HEADERDATA set to a objectpointer

  */

  ret = curl_easy_perform(hnd);

  curl_easy_cleanup(hnd);
  hnd = NULL;
  curl_slist_free_all(slist1);
  slist1 = NULL;

  return (int)ret;
}
/**** End of sample code ****/

Почему при использовании "/opt/cprocsp/bin/amd64/curl" в запрос не попала запись CURLOPT_SSLCERT?
Цитата:
curl_easy_setopt(hnd, CURLOPT_SSLCERT, "e80ed2c1ea2fdf04a1fadd2c11f9890a89a77c88");


или сертификат как то по другому надо указывать?

Отредактировано пользователем 26 августа 2016 г. 16:00:55(UTC)  | Причина: Не указана

Online Русев Андрей  
#2 Оставлено : 1 сентября 2016 г. 10:04:06(UTC)
olin

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

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

Сказал(а) «Спасибо»: 22 раз
Поблагодарили: 471 раз в 337 постах
На глаз сертификат задан верно. Аналогичная вашей ошибка возникает, например, при неверном указании отпечатка сертификата. А можете для проверки прислать по нему выдачу certmgr:
Код:

root@test-x64-ub14:~# /opt/cprocsp/bin/amd64/certmgr -list -thumbprint a6370636e16dd598a4a172cdc216b647a7b2296a
Certmgr 1.0 (debug version) (c) "CryptoPro",  2007-2010.
program for managing certificates, CRLs and stores

=============================================================================
1-------
Issuer              : DC=ru, DC=cp, CN=test-ca
Subject             : CN=cln512e, E=cln512e@cryptopro.ru
Serial              : 0x2993D8C500000050B4BA
SHA1 Hash           : 0xa6370636e16dd598a4a172cdc216b647a7b2296a
SubjKeyID           : 2a017cbab3404dcececf698f45007e012b51dd81
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before    : 31/08/2016  22:57:35 UTC
Not valid after     : 01/09/2026  05:37:35 UTC
PrivateKey Link     : Yes
Container           : HDIMAGE\\cln512e.000\38EB
Provider Name       : Crypto-Pro GOST R 34.10-2001 KC1 CSP
Provider Info       : ProvType: 75, KeySpec: 1, Flags: 0x0
Extended Key Usage  : 1.3.6.1.5.5.7.3.2
=============================================================================

[ErrorCode: 0x00000000]

CURLOPT_SSLCERT наша версия не выводит и при успешной работе, неудобно - попробуем разобраться.
Официальная техподдержка. Официальная база знаний.
Offline max.001  
#3 Оставлено : 1 сентября 2016 г. 10:41:31(UTC)
max.001

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

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

Автор: olin Перейти к цитате
На глаз сертификат задан верно. Аналогичная вашей ошибка возникает, например, при неверном указании отпечатка сертификата. А можете для проверки прислать по нему выдачу certmgr:


Код:
/opt/cprocsp/bin/amd64/certmgr -list -thumbprint e80ed2c1ea2fdf04a1fadd2c11f9890a89a77c88
Certmgr 1.0 (c) "CryptoPro",  2007-2010.
program for managing certificates, CRLs and stores

=============================================================================
1-------
Issuer            : OGRN=1037816019647, STREET="ул. Малыгина, дом 6 лит. А", INN=007806122720, C=RU, L=Санкт-Петербург, S=78 г.Санкт-Петербург, O="ЗАО ""УДОСТОВЕРЯЮЩИЙ ЦЕНТР""", CN=NWUDCCA7
Subject           : SNILS=...................................................................
Serial            : 0x01D14300C99C9C00000000080FC20001
SHA1 Hash         : 0xe80ed2c1ea2fdf04a1fadd2c11f9890a89a77c88
Not valid before  : 30/12/2015  12:51:22 UTC
Not valid after   : 30/12/2016  12:51:22 UTC
PrivateKey Link   : Yes. Container  : HDIMAGE\\..............\84F3
=============================================================================

[ErrorCode: 0x00000000]
Online Русев Андрей  
#4 Оставлено : 6 сентября 2016 г. 18:33:21(UTC)
olin

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

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

Сказал(а) «Спасибо»: 22 раз
Поблагодарили: 471 раз в 337 постах
А можете обратиться к серверу не post, а get-запросом? Если да, сделайте его с помощью
Код:
csptestf -tlsc -v -nosave -server server_name -file some_file -dn SNILS=...

Отредактировано пользователем 6 сентября 2016 г. 18:36:08(UTC)  | Причина: Не указана

Официальная техподдержка. Официальная база знаний.
Offline simon  
#5 Оставлено : 3 ноября 2016 г. 17:03:47(UTC)
simon

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

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

Здравствуйте. Нам не удалось воспроизвести эту проблему, хотелось бы побольше информации, а в идеале - адрес сервера, чтобы мы могли к нему обращаться с тестовыми запросами. Из информации - кто реализует TLS на сервере, что на клиенте за провайдер, ну и если ещё есть какая-то полезная информация - будем благодарны.
Offline max.001  
#6 Оставлено : 8 ноября 2016 г. 16:47:24(UTC)
max.001

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

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

Автор: simon Перейти к цитате
Здравствуйте. Нам не удалось воспроизвести эту проблему, хотелось бы побольше информации, а в идеале - адрес сервера, чтобы мы могли к нему обращаться с тестовыми запросами. Из информации - кто реализует TLS на сервере, что на клиенте за провайдер, ну и если ещё есть какая-то полезная информация - будем благодарны.


url на который идут запросы: https://int223.zakupki.g...ation/integration/upload
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.