2014-01-27 4 views
2

У меня есть сайт, который использует http, а не https. Когда я сейчас использую cURL, http-Version получает http_code = 200. Когда я теперь использую https-версию, он получает 0, что хорошо, поскольку нет версии https сайта. Но проблема в том, что ssl_verifiy_result является 0, что означает:ssl_verify_result равно 0, когда нет версии https

операция прошла успешно

источник: http://www.openssl.org/docs/apps/verify.html#VERIFY_OPERATION

Почему?

+0

Покажите нам код? –

+1

Несомненно, я скажу, зачем вам нужен код? Я использую простой запрос curl в php. Просто используя основные методы с этими дополнительными опциями 'returntrasnfer => true | verifypeer => false | followlocation => true' Остальное - просто основной локон. то есть: curl_init, curl_execute и т. д. – Musterknabe

ответ

0

Это действительно ошибка в openSSL. Эта функция полезна только если у вас есть:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);

Смотри также:

If no peer certificate was presented, the returned result code is X509_V_OK. This is because no verification error occurred, it does however not indicate success. SSL_get_verify_result() is only useful in connection with SSL_get_peer_certificate(3).

http://www.openssl.org/docs/ssl/SSL_get_verify_result.html#bugs

Помните, что если вы хотите Curl для подключения к SSL и проверки сертификата, прежде чем загружать и сохранять сертификат CA (firefox может это сделать) в ваше приложение и ссылаться на него в вашем вызове cURL. Например:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/CACertificats/AddTrustExternalCARoot.crt"); 

Небольшой учебник по этому поводу: http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/

+0

«... не увенчались успехом» - я не уверен, что это правильно. 'ssl_verifiy_result' поступает из библиотеки OpenSSL, и я считаю, что его' X509__OK'. В соответствии с OpenSSL [справочная страница по SSL_get_verify_result] (http://www.openssl.org/docs/ssl/SSL_get_verify_result.html), * «Проверка прошла успешно или не был представлен сертификат одноранговой сети». *. Это похоже на потенциальную ошибку в cURL. cURL должен, вероятно, указывать на отсутствие SSL/TLS и не указывать на успех (поскольку cURL накладывается поверх библиотеки SSL). – jww

+0

@jww Видимо, это так. Он также говорит об этом в документе doc. Если не было представлено ни одного сертификата-партнера, возвращаемый код результата - X509_V_OK. Это связано с тем, что не произошло никакой ошибки проверки, однако это не указывает на успех. SSL_get_verify_result() полезен только в связи с SSL_get_peer_certificate (3). 'Stupid. – bicycle

Смежные вопросы