2016-04-11 8 views
0

Недавно я обновился до OS X El Capitan, и теперь я получаю ошибку SSL_connect returned=1 errno=0 state=error: dh key too small. Я знаю, что это потому, что сервер использует небезопасный ключ Diffie Hellman, но я ничего не могу изменить о сервере.Savon: список SSL-шифров

Если я использую версию лорда Homebrew и делаю curl --cipher 'DEFAULT:!DH' https://my.site.com, он действительно работает. Итак, я почти уверен, что это имеет какое-то отношение к ключу.

Есть ли способ обойти это? Могу ли я установить его так, чтобы он завивал, или Савон позволил мне использовать небезопасный ключ?

ответ

0

Савон использует HTTPi library для сетевых запросов, но эта библиотека не поддерживает установку SSL шифры, как можно видеть из списка SSL options in the documentation.

от вопроса тегов я полагаю, что вы используете Curb в качестве сетевого адаптера для Savon/HTTPi и обочины, к счастью, поддерживает настройки различных параметров SSL, в том числе списка разрешенных шифров через общий set method на скручивании клиента.

Так что, я думаю, ваш единственный вариант - установить HTTP-ключ обезьяны-патчей, чтобы установить соответствующий шифр при вызове настройки клиента Curb. Более чистым подходом было бы также обезвреживание палочки Savon для передачи опции «ssl_ciphers» в библиотеку HTTPi, но я оставлю это как упражнение для вас, если вы этого захотите :).

Самым простым местом для исправления является setup_ssl_auth method в адаптере curb HTTPi. Следующий патч переопределяет этот метод также явно отрицает DH шифров в списке разрешенных SSL шифров:

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 шифров на клиенте. Обратите внимание, что этот патч запрещает шифры DH везде, где Savon/HTTPi используется в вашем приложении!

Дополнительные замечания по настройке шифров SSL можно найти in the libcurl docs.