2016-04-11 23 views
0

Son zamanlarda OS X El Capitan'a geçtim ve şimdi SSL_connect returned=1 errno=0 state=error: dh key too small hatasını alıyorum. Bunun, sunucunun güvensiz bir Diffie Hellman anahtarı kullandığını biliyorum, ancak sunucuyla ilgili hiçbir şey değiştiremiyorum.Savon: SSL ciphers listesinin ayarlanması

Homebrew'ın kıvrımlı sürümünü kullanır ve curl --cipher 'DEFAULT:!DH' https://my.site.com yaparsam çalışır. Yani, neredeyse olumlu, anahtar ile ilgili bir şey var.

Bunu aşmanın bir yolu var mı? Bu kadar kıvrılabilir miyim, yoksa Savon güvensiz bir anahtar kullanmama izin verir mi?

cevap

0

Savon ağ istekleri için HTTPi library kullanır ama SSL options in the documentation listesinden görülebileceği gibi bu kütüphane , SSL anahtarlarını ayarı desteklemez. Sana Savon/HTTPi için ağ bağdaştırıcısı olarak Curb kullanmak ve Curb varsayalım soru etiketleri itibaren

Neyse ki bukle istemci üzerinde genel set method aracılığıyla izin şifrelere listesinde dahil çeşitli SSL seçeneklerini ayarlarken destekler.

Bu yüzden tek seçeneğiniz, Curb istemcisini ayarlama çağrısı yaparken uygun şifreyi ayarlamak için HTTPi'yi maymun düzeltme eki yapmaktır. Daha temiz bir yaklaşım da maymun yama Savon'un HTTPi kütüphanesine bir "ssl_ciphers" seçeneği iletmesidir ama bunu isterseniz bunu sizin için bir egzersiz olarak bırakacağım :).

Yama için en basit yer, curb HTTPi bağdaştırıcısında setup_ssl_auth method'dur. Aşağıdaki yama da açıkça izin SSL şifrelerin listesinde DH şifrelere reddetmek için bu yöntemi yeniden tanımlamaktadır:

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 

yama ilk orijinal set_ssl_auth yöntemini çağırır ve sonra istemci üzerinde DH şifrelere reddeder. Bu yamanın uygulamanızda Savon/HTTPi'nin kullanıldığı her yerde DH şifrelerini reddettiğini unutmayın!

SSL şifrelerini ayarlamakla ilgili diğer notlar in the libcurl docs bulunabilir.