Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > Где взять сертификат?


Автор: neosapient 16.11.2014, 16:20
Здравствуйте.

Тестирую http://curl.haxx.se/libcurl/c/smtp-ssl.html

Собрал cURL с поддержкой OpenSSL. Проверил, что всё работает.
Код

 curl_version_info_data *vinfo = curl_version_info( CURLVERSION_NOW );
 if( vinfo->features & CURL_VERSION_SSL )
 {
     printf("LIBCURL: SSL Support Enabled\n");
 } 

Далее, пробую подключиться на почту
Цитата

* Rebuilt URL to: smtps://smtp.mail.ru:465
* Hostname was NOT found in DNS cache
*   Trying 94.100.180.160...
* Connected to smtp.mail.ru (94.100.180.160) port 465(#0)
* SSL certificate problem: unable to get local issuer certificate
* Closing connection 0

Вопрос, где взять сертификат? 
Делать самому? Как?
Или сертификат мне должен выдать хост, к которому подключаюсь?

Затем, куда этот сертификат положить, чтобы его увидела программа? Либо, как указать программе, откуда брать сертификат?

Автор: neosapient 18.11.2014, 02:43
Снял макроопределения с опций CURLOPT_SSL_VERIFYPEER и CURLOPT_SSL_VERIFYHOST, и письмо доставилось
Код

//#ifdef SKIP_PEER_VERIFICATION
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
//#endif
//#ifdef SKIP_HOSTNAME_VERFICATION
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
//#endif

Вопрос про то, как получить сертификат и как им пользоваться остается открытым. ?
Появился второй вопрос, почему письмо доставилось без проверок сертификата?

Автор: feodorv 18.11.2014, 14:33
Ставьте http://curl.haxx.se/libcurl/c/CURLOPT_VERBOSE.html, смотрите на строчку с заголовком http://geektimes.ru/post/69079/#comment_1967828. Ибо http://curl.haxx.se/libcurl/c/CURLOPT_CAINFO.html. Выясняйте, получен ли уже сертификат от mail.ru. Сертификат может не проходить проверки, поэтому возникает ошибка SSL certificate problem: unable to get local issuer certificate.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)