Я не знаю, что именно происходит, но я заметил, что curl не может получить защищенные страницы без дополнительных переключателей.
~# curl -v https://api.dreamhost.com
* About to connect() to api.dreamhost.com port 443 (#0)
* Trying 75.119.208.14...
* connected
* Connected to api.dreamhost.com (75.119.208.14) port 443 (#0)
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
(hangs for a minute)
* Unknown SSL protocol error in connection to api.dreamhost.com:443
* Closing connection #0
curl: (35) Unknown SSL protocol error in connection to api.dreamhost.com:443
Теперь, когда я добавляю -1 (принудительно tlsv1) или -3 (принудительно sslv3), curl работает безупречно. Проблема в том, что другие программы, похоже, имеют похожие проблемы, например сценарии Python.
Когда я пробую openssl, он зависает как завиток
openssl s_client -connect api.dreamhost.com:443
CONNECTED(00000003)
(HANGS)
write:errno=104
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 320 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---
То же самое происходит, если я использую -tls1_2, но он работает, если я использую переключатель -ssl3
Дополнительная информация:
OpenSSL> version
OpenSSL 1.0.1e 11 Feb 2013
Кто-нибудь знает, как это исправить и заставить curl или openssl работать с настройками по умолчанию? У меня есть еще одна машина с Debian lenny, которая может безупречно выполнять обе команды без каких-либо переключателей.
Спасибо!
-Родриго
Если вы запустите этот сайт против SSLLabs тестты увидишь это нетерпимый к долгим рукопожатиям, проблема, которая определенно влияет на вашу версию OpenSSL.
Уменьшение размера списка шифров должно помочь, например:
openssl s_client -cipher RSA -connect api.dreamhost.com:443
(Вы можете использовать --ciphers
вариант для curl
.)
Поэтому я пошел дальше и подал заявку в Dreamhost (на основе анализа @Bruno выше), потому что у меня была такая же проблема. На это ушло несколько недель, но они все исправили. Любая другая компания, наверное, просто отправила бы меня в ад техподдержки.
Убедитесь, что у вас есть ca-certificates
пакет установлен правильно. Если он установлен, возможно, вы случайно удалили его файлы и вам необходимо переустановить его.
sudo apt-get install --reinstall ca-certificates