Я пытаюсь сделать запрос cURL HTTPS к API Twitter и получаю эту ошибку:
[root@webscoming httpdocs]# curl -v https://api.twitter.com
About to connect() to api.twitter.com port 443 (#0)
Trying 199.16.156.199... connected
Connected to api.twitter.com (199.16.156.199) port 443 (#0)
Initializing NSS with certpath: sql:/etc/pki/nssdb
CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
NSS error -5990
Closing connection #0
SSL connect error
curl: (35) SSL connect error
Я пробовал это с другого сервера, и он работает, как ожидалось. Что означает эта ошибка и как ее исправить?
На моем сервере работает CentOS версии 6.5.
Обратите внимание: я могу правильно подключиться к https://encrypted.google.com
но безуспешно с https://api.twitter.com
.
Я видел похожую проблему, но не заходил в твиттер.
Проблема, которую я видел, была на RHEL 6.1 -> RHEL 6.4, используя curl для доступа к REST API. curl показал ошибку: curl: (35) Ошибка подключения SSL
В конечном итоге проблема заключалась в том, что на нашем сервере, на котором запущен REST API, был RHEL 6.6 с использованием более новой версии NSS. Как только мы обновили клиентскую версию NSS, curl успешно завершился.
Мы обновили клиент с: nss-3.12.10-2.el6_1.x86_64
к: nss-3.16.1-14.el6
В соответствии с исходный код эта ошибка означает тайм-аут. Ваше сетевое соединение с этим хостом, скорее всего, неисправно. Также может быть, что Twitter отфильтровывает ваш IP-адрес по какой-либо причине.
Это может быть плохо настроенный прокси, отвечающий по протоколу http вместо https. У меня был случай, когда прокси всегда отвечал клиенту по http, независимо от исходного протокола, когда запрошенный сайт был в черном списке.
В общем, эта ошибка возникает также, когда вы получаете ответ, не зашифрованный с помощью TLS.
Ошибка cURL номер 35 связана с устаревшей версией cURL.
Чтобы решить эту проблему, вам необходимо обновить пакет cURL.