curl errno 35 (Неизвестная ошибка протокола SSL при подключении к [защищенному сайту]: 443) - PullRequest
1 голос
/ 02 ноября 2010

Я пытаюсь отправить сообщение на внешний URL, используя curl, на странице externa используется https, вот адрес сервера, который я использую

Сервер Apache / 2.2.11 (Win32) mod_ssl / 2.2.11 OpenSSL / 0.9.8k PHP / 5.3.0

внешний URL перенаправляет на другой URL, который я отправляю в сообщении, но каждый раз, когда я пытаюсь, я получаю эту ошибку

curl_errno = 35 (Неизвестная ошибка протокола SSL при подключении к [защищенному сайту]: 443)

так что я проверяю ответную реакцию у firebug и там говорится

Не удалось загрузить источник для: http://localhost/3Party/PHP_VPC_3Party_Auth_Capture_Order_DO.php

Вот код, который я использую

ob_start();

// initialise Client URL object
$ch = curl_init();
// set the URL of the VPC

curl_setopt ($ch, CURLOPT_URL, $vpcURL);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $this->postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);  
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_exec ($ch);
if (curl_error($ch)) {
    $this->errorMessage = 
        "curl_errno=". curl_errno($ch) . " (" . curl_error($ch) . ")";
}
curl_close ($ch);

Ответы [ 3 ]

6 голосов
/ 02 ноября 2010

Мне кажется, проблема в том, что вы пытаетесь получить доступ к URL-адресу «http» (вместо «https») на порту 443.

Вы также можете попробовать установить версию SSL вручную:

curl_setopt($ch, CURLOPT_SSLVERSION, 3);

Замените 3 той версией SSL, которую использует удаленный сервер.

2 голосов
/ 07 февраля 2011

После нескольких недель решения этой проблемы я смог хотя бы установить соединение, я не знаю, является ли это реальным ответом, но он работает для меня, я просто добавил в приведенный выше пример вариантыиспользуйте прокси, вот так

curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_NTLM );
curl_setopt($ch, CURLOPT_PROXY, 'my.proxy');
curl_setopt($ch, CURLOPT_PROXYPORT, 'my.port');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'domain\user:password');  

надеюсь, это поможет

1 голос
/ 22 декабря 2016

Это может быть также предпочтение версии tls / ssl сервером. В этом случае вы должны попытаться указать различные константы версии здесь: https://curl.haxx.se/libcurl/c/CURLOPT_SSLVERSION.html

например. у меня сработало:

curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...