openssl.cnf
ENV 変数または構成ファイルを設定することにより、OpenSSL を使用するプログラムに対して SSLv3 または TLSv1 を強制できますか? OpenSSL 1.0.1c バージョンが最初に TLSv1.2 のネゴシエーションを開始し、特定の API (つまり、Shopify API) への接続に問題があることがわかりました。で失敗しSSL protocol error
ます。
この問題は、私の OpenSSL 1.0.1c に対してリンクされたすべての SW に共通しており、バージョン <1.0 はうまく機能します。私の場合、OSX バンドル 0.9.8r です。また、Ubuntu の 1.0.1c は OK であることがわかりました...これは圧倒されます。
テスト:
curl https://ApiKey:Passwd@shop.myshopify.com/admin/customers.json
ちょうど 1 分後に失敗します。とUnknown SSL protocol error
。
curl -1 https://ApiKey:Passwd@shop.myshopify.com/admin/customers.json
即合格OK。
したがって、デフォルトのネゴシエーションは正常に機能しません。SSLv3 または TLSv1 (TLSv1.1+ ではない) を強制する必要がありますが、すべてのライブラリまたはユーティリティを書き直すつもりはありません。
私は Python を使用する予定で、現在は PyCURL を使用して SSLv3 または TLSv1 を強制するだけで通信できます。その SSL デフォルト ネゴシエーションの問題が原因で、元の ShopifyAPI ライブラリを使用できません。