我最近升级到OS,现在我得到了错误SSL_connect returned=1 errno=0 state=error: dh key too small。我知道这是因为服务器使用的是不安全的Diffie密钥,但是我不能更改关于服务器的任何内容。
如果我使用Homebrew的卷曲版本并执行curl --cipher 'DEFAULT:!DH' https://my.site.com,它就会工作。所以,我几乎肯定这和钥匙有关。
有什么办法可以绕过这件事吗?我能把它设置成卷曲或者萨文让我使用不安全的钥匙吗?
发布于 2016-04-12 08:02:45
Savon对网络请求使用HTTPi库,但是这个库不支持设置SSL密码器,从文档中的SSL选项列表中可以看到这一点。
从问题标签中,我假设您使用路缘作为Savon/HTTPi的网络适配器,而Curb幸运地支持设置各种SSL选项,包括在curl客户机上通过通用方法设置允许的密码列表。
因此,我想您唯一的选择是在调用Curb客户端时,使用猴子补丁HTTPi来设置适当的密码。一种更简洁的方法是,也可以通过猴子补丁Savon将一个"ssl_ciphers“选项传递给HTTPi库,但是如果您愿意的话,我将把它作为练习留给您。)
最直接的补丁位置是方法在HTTPi的curb适配器中。下面的修补程序重新定义此方法,以使也显式拒绝允许的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密码。请注意,此修补程序拒绝在应用程序中任何地方使用Savon / HTTPi的HTTPi密码!
有关设置SSL密码的进一步说明可以找到在密闭的文档里。
https://stackoverflow.com/questions/36561285
复制相似问题