文档章节

OpenSSL::SSL::SSLError: hostname "file.api.weixin.qq.com" does not match the server certificate

mingle
 mingle
发布于 02/22 18:29
字数 357
阅读 4
收藏 1

 

Rails在使用 rest-client 会出现ssl的问题,已rest-client =1.8.0 版本为例默认使用了系统的CA验证,

服务器环境 :

Ruby2.1.1

Rest-client-1.6.8 

OpenSSL 1.0.2

如果在服务器环境下其他项目使用 gem rest-client 高版本 >=1.8.0时,在请求 RestClient.post时,如果url时https 时 会提示

OpenSSL::SSL::SSLError: hostname "you host" does not match the server certificate

 解决方案:

一:跳过验证

1、OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE (这种会有警告)

2、覆盖RestClient::Request#transmit 中的 transmit 函数 

def transmit
   @ssl_opts[:verify_ssl] = OpenSSL::SSL::VERIFY_NONE
   #调用函数
end

二: 重新安装新版 openssl

rvm pkg install openssl 

rvm reinstall 2.1.1

 

#RestClient::Request源码 1.8.0

net.cert = ssl_client_cert if ssl_client_cert
  net.key = ssl_client_key if ssl_client_key
  net.ca_file = ssl_ca_file if ssl_ca_file
  net.ca_path = ssl_ca_path if ssl_ca_path
  net.cert_store = ssl_cert_store if ssl_cert_store

  # We no longer rely on net.verify_callback for the main SSL verification
  # because it's not well supported on all platforms (see comments below).
  # But do allow users to set one if they want.
  if ssl_verify_callback
    net.verify_callback = ssl_verify_callback

    # Hilariously, jruby only calls the callback when cert_store is set to
    # something, so make sure to set one.
    # https://github.com/jruby/jruby/issues/597
    if RestClient::Platform.jruby?
      net.cert_store ||= OpenSSL::X509::Store.new
    end

    if ssl_verify_callback_warnings != false
      if print_verify_callback_warnings
        warn('pass :ssl_verify_callback_warnings => false to silence this')
      end
    end
  end

  if OpenSSL::SSL::VERIFY_PEER == OpenSSL::SSL::VERIFY_NONE
    warn('WARNING: OpenSSL::SSL::VERIFY_PEER == OpenSSL::SSL::VERIFY_NONE')
    warn('This dangerous monkey patch leaves you open to MITM attacks!')
    warn('Try passing :verify_ssl => false instead.')
  end

 

© 著作权归作者所有

共有 人打赏支持
mingle
粉丝 11
博文 139
码字总数 20900
作品 0
朝阳
程序员
私信 提问
wamp server 配置ssl加密认证

You can follow my guided steps to create working https SSL: Step1 -> Create SSL Certificate and Key 1a) Open the DOS command window and change directory to bin directory of wamp......

魔杰小武
2018/06/29
0
0
更新cocoapods 时遇到问题及解决

运行命令 sudo gem install cocoapods 报错: ERROR: While executing gem ... (OpenSSL::SSL::SSLError) hostname "upyun.gems.ruby-china.org" does not match the server certificate 原因......

长大以后想当小孩
2017/06/22
0
0
Nginx配置SSL自签名证书的方法

Nginx配置SSL自签名证书的方法。 生成自签名SSL证书 生成RSA密钥(过程需要设置一个密码,记住这个密码) $ openssl genrsa -des3 -out domain.key 1024 拷贝一个不需要输入密码的密钥文件 $ op...

郑加威
01/03
0
0
一步一步实现linux系统apache实现https详解

https提供安全的web通讯 原理部分:http://stlong.blog.51cto.com/5144113/1730771 1)配置域名支持ca: [root@ns ~]# vim /var/named/chroot/var/named/sggfu.com.zone ##添加ca主机记录 ca......

Tanton008
2018/06/26
0
0
Linux系统下如何配置Nginx的SSL安全证书

首先你要确保你安装了OpenSSL库,并且你安装Nginx的时候使用了–with-httpsslmodule参数,初学者或者菜鸟建议使用LNMP进行一键安装。 生成证书: 进入你要生成证书的目录 cd /usr/local/ngin...

天下杰论
2014/06/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如果让你写一个消息队列,该如何进行架构设计?

面试题 如果让你写一个消息队列,该如何进行架构设计?说一下你的思路。 面试官心理分析 其实聊到这个问题,一般面试官要考察两块: 你有没有对某一个消息队列做过较为深入的原理的了解,或者...

李红欧巴
今天
4
0
错题

无知的小狼
今天
2
0
PowerShell因为在此系统中禁止执行脚本的解决方法

参考:window系统包管理工具--chocolatey 报错提示: & : 无法加载文件 C:\Users\liuzidong\AppData\Local\Temp\chocolatey\chocInstall\tools\chocolateyInstall.ps1,因为在此系统上禁止运...

近在咫尺远在天涯
今天
3
0
TP5 跨域请求处理

https://blog.csdn.net/a593706205/article/details/81774987 https://blog.csdn.net/wyk9916/article/details/82315700...

15834278076
今天
3
0
深入理解java虚拟机-Java内存区域与内存溢出异常

深入理解java虚拟机 Java内存区域与内存溢出异常 运行时数据区域 程序计数器 线程私有,内存小,是当前线程执行的字节码行号指示器,字节码解释器通过改变这个计数器的值来选取下一条需要执行...

须臾之余
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部