Я пытаюсь подключиться к API eTrade, который использует OAuth. Я пытаюсь запросить токен.
Домен, к которому я пытаюсь подключиться, имеет сертификат SSL.
Соединение использует TLS 1.2. Соединение зашифровано и аутентифицировано с использованием AES_128_GCM и использует ECDHE_RSA в качестве механизма обмена ключами.
Вот точная ошибка, которую я получаю
Поймал исключение Код ошибки: 1001 Сообщение об ошибке: Ошибка №: 35 Ошибка: неизвестная ошибка протокола SSL при подключении к etws.etrade.com:443 # 0 /home/detroitclicks/public_html/etrade/Common/etHttpUtils.class.php(174): etHttpUtils -> DoHttpRequest () # 1 /home/detroitclicks/public_html/etrade/OAuth/etOAuth.class.php(58): etHttpUtils-> GetResponse () # 2 /home/detroitclicks/public_html/etphetOAamples/ 54): etOAuth-> GetRequestToken () # 3 {main} Выход …
Я не уверен, имеет ли это значение, но я настроил это в одном из моих php-файлов:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
The connection uses TLS 1.2.
....
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
Существует несоответствие между требованием для TLS 1.2 и явным значением версии 3 (SSL 3.0) для CURLOPT_SSLVERSION. Просто удалите этот параметр, и он должен стараться изо всех сил. Он может все еще потерпеть неудачу, если ваш локальный стек SSL еще не поддерживает TLS 1.2.
Других решений пока нет …