分享 服务器是用 https,客户端访问用 http.verify_mode = OpenSSL::SSL::VERIFY_NONE

yakczh · 2013年12月18日 · 最后由 yakczh 回复于 2013年12月19日 · 3758 次阅读

这样的话,整个传输过程是加密传输的吗?

require 'uri'

uri = URI.parse('https://localhost/userlogin")

http = Net::HTTP.new(uri.host, uri.port)

password

http.start { http.request_post(uri.path,'text=123') {|res| print res.body } }

这样访问提示 400 The plain HTTP request was sent to HTTPS port

中间加上 http.use_ssl = true if uri.scheme == "https" # enable SSL/TLS http.verify_mode = OpenSSL::SSL::VERIFY_NONE
这样就可以得到接口的内容

共收到 4 条回复

是加密的. 但由于客户端没对服务器证书做验证, 防止不了中间人攻击

不验证证书的 SSL 是没有意义的,就如同加密的文件,但密码用的是一个公开的假密码。

#2楼 @kgen 如果是手机android客户端怎么验证呢,是导入服务器的证书吗?

http.ca_file ='my-server.crt' 这样就可以,不过要注册生成证书时 hostname 要与域名一致,不然会提示post_connection_check': hostname does not match the server certificate (OpenSSL::SSL::SSLError)

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册