5

Io 言語で HTTPS 経由でファイルをフェッチしようとしています:

url := URL with("https://api.example.com")
url fetch println

そして、私はこれを取得します:

 Error_0x7f97e1509a80:
  location         = "/opt/local/lib/io/addons/Socket/io/URL.io:232"
  message          = "Protocol 'https' unsupported"

ネットで調べてみたのですが、名前からしてなかなか難しいのは皆さんご承知のとおり。このスレッドhttp://tech.groups.yahoo.com/group/iolanguage/message/10898しか見つかりませんでしたが、それはかなり古いものです。

Io で HTTPS サポートを取得するにはどうすればよいですか?

編集

Io のソースに、OpenSSL のラッパーである SecureSocket アドオンがあることがわかりました。sudo port io installただし、Mountain Lion を搭載した MacBook にインストールしたときはインストールされませんでした。ソースからビルドしようとしましたが、うまくいきませんでした。Linux マシンでもビルドできませんでした。

EDIT2

ソース ( git clone https://github.com/stevedekorte/io.git) から Io を再度ビルドしようとしました (付属のスクリプトを使用build.sh)。cmake が OpenSSL を検出したことがわかりました。

 -- Found OpenSSL: /usr/lib/libssl.dylib;/usr/lib/libcrypto.dylib  

しかし、SecureSocket アドオンはビルドされません。その readme ファイル: https://github.com/stevedekorte/io/tree/master/addons/SecureSocketは言う:

このファイルのパッチが OpenSSL 0.9.8e に適用されない限り、DTLS1 バインディングは使用できません。ただし、このパッチには d1_both.c のハンドシェイク再送信コードの無効化が含まれているため、実稼働環境には適していません。私は一切の責任を負いません、などなど。どうしても使いたい場合は、(さまざまなニュースグループや私自身の実験から集めた) パッチを適用し、build.io のコメントアウトされたブロックのコメントを外してください。価値のあることとして、OpenSSL での DTLS サポートは 0.9.8 の時点で新しく、そもそもかなりバグがあります。良いアイデアですが、まだ製品化の準備が整っていないようです。これらのバインディングも例外ではありません。

4

2 に答える 2

2

io にそれを実行させることができない場合、最善の選択肢は、wgetorのような外部ツールを呼び出してからcurl、ファイル/結果をローカルにロードするか、パイプ経由で返すことです。

于 2013-04-26T01:04:35.087 に答える
0

別の回避策に興味がある人は、SSL を実行する Io プログラムの前にスタッドを置くことができるはずです。私はまだそれを自分でテストしていません。

スタッド - Scalable TLS Unwrapping Daemon スタッドは, TLS/SSL 接続を終了し, 暗号化されていないトラフィックをバックエンドに転送するネットワークプロキシです. マルチコア マシンで数万の接続を効率的に処理するように設計されています。

于 2013-04-30T12:37:44.940 に答える