
次の方法でHTTPS Webサイトをカーリングしようとしています。
$ curl -v https://thepiratebay.se/
しかし、エラーのため失敗します。
* About to connect() to thepiratebay.se port 443 (#0)
* Trying 173.245.61.146...
* connected
* Connected to thepiratebay.se (173.245.61.146) port 443 (#0)
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS alert, Server hello (2):
* error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
* Closing connection #0
curl: (35) error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
-k
/を使用したりmyに--insecure
追加しても何の違いもありません。insecure
~/.curlrc
コマンドラインを使用してcurl
証明書を無視または強制するにはどうすればよいですか?
使用すると効果が良いようですwget
。これはopenssl
以下のようにテストするときにも機能します。
$ openssl s_client -connect thepiratebay.se:443
CONNECTED(00000003)
SSL handshake has read 2651 bytes and written 456 bytes
New, TLSv1/SSLv3, Cipher is AES128-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher : AES128-SHA
私は持っています:
$ curl --version
curl 7.28.1 (x86_64-apple-darwin10.8.0) libcurl/7.28.1 OpenSSL/0.9.8| zlib/1.2.5 libidn/1.17
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp
Features: IDN IPv6 Largefile NTLM NTLM_WB SSL libz
答え1
一部のサイトではSSL 3.0のサポートを無効にするため(おそらくいくつかの脆弱性が原因で)、または特定のSSL-2
バージョンを強制的に適用できます。要求されたページが別の場所に移動されたことを確認することをお勧めします。--sslv2
-3
--sslv3
-L
私の場合、これはcurl
バグでした(OpenSSLで見つかりました)なので、curl
最新バージョン(> 7.40)にアップグレードしなければ正常に動作します。
また見なさい:
答え2
Mavericksから、AppleはTLS / SSLエンジンをOpenSSLからAppleの分散cURLバイナリにある独自の安全なトランスポートエンジンに切り替えて、クライアント証明書の使用を中止しました。 homebrewのcURLバイナリの使用:
brew install curl
brew link curl --force
答え3
無効なホストヘッダーを送信したときにこのエラーが発生しました。
エージェントを開発中です。http://127.0.0.1:12345到着https://site.com:443。したがって、ブラウザはリクエストヘッダをそのまま送信しており、ホスト:127.0.0.1:12345ヘッダがあります。問題を解決するために、ブラウザからホストヘッダーを削除しました。