Странный тайм-аут с PHP cURL и SSL - PullRequest
2 голосов
/ 07 марта 2012

При попытке доступа к Amazon Cloudfront возникают странные тайм-ауты при использовании cURL с PHP.Похоже, что это влияет на все запросы на аннулирование, создание рассылок и т. Д. CURL либо сообщает о получении 0 байтов, либо очень мало байтов, а затем время ожидания: Operation timed out after 120000 milliseconds with 88 out of 619 bytes received.

Расширение настроек тайм-аута, похоже, не имеет значения.

При установке трассировки с использованием CURLOPT_VERBOSE получается такой вывод:

* About to connect() to cloudfront.amazonaws.com port 443 (#0)
*   Trying 72.21.215.67... * connected
* Connected to cloudfront.amazonaws.com (72.21.215.67) port 443 (#0)
* skipping SSL peer certificate verification
* SSL connection using SSL_RSA_WITH_RC4_128_MD5
* Server certificate:
*   subject: CN=cloudfront.amazonaws.com,O=Amazon.com Inc.,L=Seattle,ST=Washington,C=US
*   start date: Jul 30 00:00:00 2010 GMT
*   expire date: Jul 29 23:59:59 2013 GMT
*   common name: cloudfront.amazonaws.com
*   issuer: CN=VeriSign Class 3 Secure Server CA - G2,OU=Terms of use at https://www.verisign.com/rpa (c)09,OU=VeriSign Trust Network,O="VeriSign, Inc.",C=US
> POST /2010-11-01/distribution/E1CIM4A92QFD98/invalidation HTTP/1.1
User-Agent: S3/php
Accept: */*
Host: cloudfront.amazonaws.com
Date: Wed, 07 Mar 2012 14:31:58 GMT
Content-Type: application/xml
Authorization: AWS ************************
Content-Length: 200

< HTTP/1.1 201 Created
< x-amzn-RequestId: 4c2d0d3f-6862-11e1-ac27-5531ac8c967f
< Location: https://cloudfront.amazonaws.com/2010-11-01/distribution/E1CIM4A92QFD98/invalidation/I35KLNROKA40FU
* Operation timed out after 120000 milliseconds with 0 bytes received
* Closing connection #0

Это похоже на этот вопрос .Тем не менее, похоже, что в моем случае curl действительно получает ответ, но как-то игнорирует его и время ожидания?Из того, что я вижу, ответ получен (201 Created ...), и нет ошибок SSL.Так почему истекает время ожидания curl ??

Информация о версии cURL

[version_number] => 463623 
[age] => 3 
[features] => 1597 
[ssl_version_number] => 0 
[version] => 7.19.7 
[host] => x86_64-unknown-linux-gnu 
[ssl_version] => NSS/3.12.7.0 
[libz_version] => 1.2.3 
[protocols] => Array ( [0] => tftp [1] => ftp [2] => telnet [3] => dict [4] => ldap [5] => ldaps [6] => http [7] => file [8] => https [9] => ftps [10] => scp [11] => sftp )

Ответы [ 2 ]

2 голосов
/ 14 марта 2012

До сих пор не совсем уверен, почему эта версия curl ведет себя так (выглядит как ошибка), но решение было собрать другую версию curl и php (более или менее следуя этим инструкциям )

0 голосов
/ 07 марта 2012

Это поможет увидеть, как вы настраиваете свой сеанс скручивания. Вы делаете такие вещи, как:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/CAcerts/BuiltinObjectToken-EquifaxSecureCA.crt");

Быстрый тест на наличие проблемы с проверкой SSL:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
...