加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – SSL模式标志 – 证书验证:使用安全:无?

发布时间:2020-12-17 03:03:56 所属栏目:百科 来源:网络整理
导读:我正在使用Savon和HTTPi,一个 Ruby soap客户端和一个 Ruby HTTP客户端接口分别通过SSL写一个soap请求.这是代码: client = Savon::Client.new(original_class.constantize.wsdl_url)client.http.auth.ssl.cert_key_file = "path_to_the_key"client.http.auth
我正在使用Savon和HTTPi,一个 Ruby soap客户端和一个 Ruby HTTP客户端接口分别通过SSL写一个soap请求.这是代码:

client = Savon::Client.new(original_class.constantize.wsdl_url)
client.http.auth.ssl.cert_key_file = "path_to_the_key"
client.http.auth.ssl.cert_key_password = 'secret'
client.http.auth.ssl.cert_file = "path_to_the_certification"
client.http.auth.ssl.verify_mode = :none
@response = client.request :ins0,action do
  soap.body = encoded_body
end

这是我实现这一目标的唯一方法.但是,我知道还有其他三种验证模式,它们是:

>:peer(SSL_VERIFY_PEER)
>:fail_if_no_peer_cert(SSL_VERIFY_FAIL_IF_NO_PEER_CERT)
>:client_once(SSL_VERIFY_CLIENT_ONCE)

如果我将验证模式更改为上述任何其他模式,我会收到此错误:

OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

然后是我的问题(我的问题):

>如果我将验证模式保持为:none,我做错了吗?是否缺乏安全性?
>这个错误究竟意味着什么?我的代码错了或我的证书(自我分配—我在开发环境中)不好?

我阅读了有关验证模式的OpenSSL文档:

http://www.openssl.org/docs/ssl/SSL_CTX_set_verify.html

关于客户端模式下的SSL_VERIFY_NONE,说:

The result of the certificate verification process can be checked
after the TLS/SSL handshake using the SSL_get_verify_result(3)
function. The handshake will be continued regardless of the
verification result
.

我应该担心吗?我应该看看验证模式:none是危险的吗?

我问的是,因为我无法使其与其他验证模式一起工作,所以我想以现在的工作方式通过SSL功能发布soap请求.但如果这可能是危险的,我肯定不会这样做.

解决方法

过了一会儿,我加入了OpenSSL用户支持邮件列表,最后得到了帮助.

简而言之:

模式标志:fail_if_not_peer_cert和:client_once仅用于服务器,对客户端没有任何意义,因此客户端会忽略它们.

出于客户目的,:peer(SSL_VERIFY_PEER)是唯一重要的事情.

将验证模式设置为:none(SSL_VERIFY_NONE)并不安全.这样,就不会有服务器身份验证.如果有人拦截了我客户端的连接,我的客户端将无法检测到差异,并会向攻击者提供敏感数据.

为了使用:peer,我需要在客户端信任库中拥有证书.

非常感谢OpenSSL邮件列表中的Dave Thompson.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读