web-dev-qa-db-ja.com

SSLを使用したCurlがUbuntuサーバーで機能しない

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
4
askmike

あなたはタイプミスを持っているようです。

$ 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

これは、サーバーが接続を強制終了したことを意味します。どういうわけかそれは本当に私たちと話をしたくないです。

これはおそらく修正できるものではありません。

5
Michael Hampton

非常に類似した問題がありました-プロトコルネゴシエーションに問題があり、おそらく暗号プロバイダー(OpenSSL libs)との誤通信につながりました。安全なプロトコルを明示的に設定してみてください。例:

curl --sslv3 # OR
curl --sslv2 # OR
curl --tlsv1
1
Martin Cizek