OpenSSL :: SSL :: SSLError:hostname与服务器证书不匹配

Rat*_*lle 5 ruby ssl openssl httparty

今天早上突然我的HTTP客户端(HTTParty)抛出了一个错误 OpenSSL::SSL::SSLError: hostname does not match the server certificate

首先,我无法理解,今天我们几乎整天都在过去2年没有任何问题地拨打api电话

其次我不明白如何解决它,因为它是HTTParty内部的

我唯一知道的是我无法SSL_CERT_FILE进入,ENV但据说我已经在我的/etc/ssl/certs(SSL_CERT_DIR)中列出了ROOT CA

这是我的输出

irb(main):001:0> require "openssl"
=> true
irb(main):002:0> puts OpenSSL::OPENSSL_VERSION
OpenSSL 1.0.1 14 Mar 2012
=> nil
irb(main):003:0> puts "SSL_CERT_FILE: %s" % OpenSSL::X509::DEFAULT_CERT_FILE
SSL_CERT_FILE: /usr/lib/ssl/cert.pem
=> nil
irb(main):004:0> puts "SSL_CERT_DIR: %s" % OpenSSL::X509::DEFAULT_CERT_DIR
SSL_CERT_DIR: /usr/lib/ssl/certs
Run Code Online (Sandbox Code Playgroud)

最后,正如所说Openssl上没有任何变化,代码明智的唯一的事情就是openssl版本引用HEARTBLEED漏洞 的补丁

请注意,我们只修补openssl版本,但这didnt recompile the RUBY可能是一个问题

有问题的Ruby是 ruby 1.9.3p327

Net :: HTTP库是版本httparty-0.13.0

注意: - 作为解决方案,我没有在OPENSSL中使用VERIFY_NONE选项

Ste*_*ich 1

在不知道您正在连接的主机的情况下很难确定,但我猜他们只是在服务器端更改了证书。问题可能是,您的脚本不支持 SNI(服务器名称指示,例如同一 IP 后面的多个主机名和证书),但服务器提供商现在更改了该站点的默认证书(如果客户端不支持,则使用该证书)不支持SNI)。

但正如我所说,由于问题中缺乏细节,很难确定。