Ubuntu 12.04 TLSサーバーでSSLページをCurlにしようとすると、機能しません。
sslページではない:
$ curl https://evernote.com/ -vv
[the entire webpage]
ssl page:
$ curl https://evernote.com/ -vv
* About to connect() to evernote.com port 443 (#0)
* Trying 204.154.94.73... connected
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* Unknown SSL protocol error in connection to evernote.com:443
* Closing connection #0
curl: (35) Unknown SSL protocol error in connection to evernote.com:443
これは自分のマシン(OS X)で動作します。
OpenSSLで試してみると:
$ openssl s_client -connect evernote.com:433
connect: Connection timed out
connect:errno=110
openSSLバージョン:
$ openssl version
OpenSSL 1.0.1c 10 May 2012
あなたはタイプミスを持っているようです。
$ openssl s_client -connect evernote.com:433
リモートホストでポート433が開いていないため、エラー110(接続が拒否されました)が発生しました。
代わりにポート443(標準のHTTPSポート)を使用してみてください。
カールについては、evernote.com
を使用すると問題を再現できますが、www.evernote.com
は正しく機能します(302リダイレクトをhttps://evernote.com/
に送信しますが)。
$ curl https://evernote.com/ -vv
* About to connect() to evernote.com port 443 (#0)
* Trying 204.154.94.73...
* connected
* Connected to evernote.com (204.154.94.73) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* NSS error -5938 (PR_END_OF_FILE_ERROR)
* Encountered end of file
* Closing connection #0
curl: (35) Encountered end of file
これは、サーバーが接続を強制終了したことを意味します。どういうわけかそれは本当に私たちと話をしたくないです。
これはおそらく修正できるものではありません。
非常に類似した問題がありました-プロトコルネゴシエーションに問題があり、おそらく暗号プロバイダー(OpenSSL libs)との誤通信につながりました。安全なプロトコルを明示的に設定してみてください。例:
curl --sslv3 # OR
curl --sslv2 # OR
curl --tlsv1