2016-04-11 10 views
0

最近OS X El Capitanにアップグレードしましたが、今はエラーSSL_connect returned=1 errno=0 state=error: dh key too smallが表示されています。サーバーが安全でないDiffie Hellmanキーを使用しているためですが、サーバーについては何も変更できません。Savon:SSL暗号リストを設定

ホームブリュのカールバージョンを使用してcurl --cipher 'DEFAULT:!DH' https://my.site.comを実行すると機能します。だから、私はそれがキーと何か関係があるということはほぼ肯定的だ。

これを回避する方法はありますか?カールやサボンが不安定なキーを使用するように設定することはできますか?

答えて

0

サボンは、ネットワーク要求のためのHTTPi libraryを使用していますが、SSL options in the documentationのリストからわかるように、このライブラリは、SSL暗号の設定をサポートしていません。

質問タグからは、Savon/HTTPiのネットワークアダプタとしてCurbを使用し、curlクライアントの一般的なset methodで許可された暗号リストを含む様々なSSLオプションの設定を幸いサポートしています。

唯一の選択肢は、curbクライアントの設定を呼び出すときに適切な暗号を設定するためのmonkey-patch HTTPiです。より洗練されたアプローチは、サボンパッチSavonにHTTPiライブラリに "ssl_ciphers"オプションを渡すことですが、あなたが望むならそれをあなたのための練習として残します:)。

パッチの最も簡単な場所は、HTTPiのcurbアダプタのsetup_ssl_auth methodです。次のパッチもが明示的に許可SSL暗号のリストにDH暗号を拒否するように、このメソッドを再定義:

module HTTPI 
    module Adapter 
    class Curb 

     alias_method :orig_setup_ssl_auth, :setup_ssl_auth 

     private 
     def setup_ssl_auth 
     orig_setup_ssl_auth 
     @client.set(:SSL_CIPHER_LIST, "DEFAULT:!DH") 
     end 

    end 
    end 
end 

パッチは、初のオリジナルset_ssl_authメソッドを呼び出した後、クライアント上DH暗号を拒否します。このパッチは、アプリケーションでSavon/HTTPiが使用されているすべての場所で、DHの暗号を拒否しています。

さらにSSL暗号を設定する際の注意事項は、in the libcurl docsです。

関連する問題