ошибка curl 35: неизвестный SSL google OAuth2

Я пытаюсь использовать Google php OAuth2 (google-api-php-client), и у меня curl errno 35, но только когда я использую прокси:

HTTP Error: (0) Unknown SSL protocol error in connection to accounts.google.com:8080

Я тестирую много решений:

// Test disabled verify peer & host
CURLOPT_SSL_VERIFYPEER => false
CURLOPT_SSL_VERIFYHOST => false

...

// Test set proxy & auth proxy
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_PROXYPORT, '8080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth);

...

// Test set auth proxy in header
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization' => $proxyauth))

...

// Test Specify the SSL version
curl_setopt($ch, CURLOPT_SSLVERSION, 3);

...

// Test specify HTTP version
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);

...

// Test change proxy type
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
or
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);

Я пробовал разные решения, найденные повсюду (почти исчерпывающий список выше), но ни одно из них не работает для меня.

Я задавался вопросом, был ли это не номер порта, который был проблемой, но мне не удалось изменить это (я пытался с опцией CURLOPT_PORT), а также в URL-адресах в Google_OAuth2.php.

Спасибо за вашу помощь,

Саймон.


person Simon    schedule 30.07.2013    source источник


Ответы (1)


Я работаю именно над этой проблемой. Решения пока нет, но вот что нашел:

Если вы сравните вывод:

$ curl -v https://accounts.google.com 

* About to connect() to proxy 10.1.1.10 port 8080 (#0)
*   Trying 10.1.1.10... connected
* Connected to 10.1.1.10 (10.1.1.10) port 8080 (#0)
* Establish HTTP proxy tunnel to accounts.google.com:443
> CONNECT accounts.google.com:443 HTTP/1.1
> Host: accounts.google.com:443
> User-Agent: curl/7.18.2 (i686-pc-linux-gnu) libcurl/7.21.7 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5 libssh2/1.2.7
> Proxy-Connection: Keep-Alive
> 
< HTTP/1.1 200 Connection established
< 
* Proxy replied OK to CONNECT request
* successfully set certificate verify locations:
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
...
* SSLv3, TLS handshake, Finished (20):
* SSL connection using RC4-SHA
* Server certificate:
*        subject: C=US; ST=California; L=Mountain View; O=Google Inc; CN=accounts.google.com
...
*        SSL certificate verify ok.
> GET / HTTP/1.1
> User-Agent: curl/7.18.2 (i686-pc-linux-gnu) libcurl/7.21.7 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5 libssh2/1.2.7
> Host: accounts.google.com
> Accept: */*

(что работает) и

$ curl -v https://accounts.google.com:8080

вы увидите, что проблема

error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

Я предполагаю, что прокси-сервер добавляет порт к обратному адресу, и это приводит к сбою проверки сертификата. К сожалению, прокси-серверы не являются моей областью знаний. Надеюсь, это даст вам ключ к разгадке.

person angryloner    schedule 01.08.2013