Tag: ssl

Net :: HTTP中的服务器名称指示支持?

我正在尝试让Ruby的Net::HTTP实现与SNI一起使用。 mail.google.com和gmail.com都位于相同的IP地址上,因此当通过SSL连接时,Google服务器需要知道要使用的证书。 默认情况下,它会返回mail.google.com证书,如果您尝试实施WebFinger,则会出现问题。 WebFinger要求您检索https://gmail.com/.well-known/host-meta以获取LRDD信息,但是,出于安全原因,validationSSL证书信息至关重要。 由于Google在这种情况下提供默认的mail.google.com证书,因此SSL post_connection_check失败。 这里正确的解决方案是为Net::HTTP启用服务器名称指示,但我不清楚如何使用OpenSSL的Ruby绑定。 其他人有想法吗? 您应该能够通过运行来查看问题: require ‘open-uri’ open(‘https://gmail.com/.well-known/host-meta’) { |f| f.read } 我还创建了一个使用早期版本的curl和OpenSSL来展示问题的要点: https://gist.github.com/7936ef38787092a22897

如何使用最新版本的Ruby连接到具有无效证书的https服务器

请考虑以下代码: require ‘net/https’ uri = URI.parse(“https://host/index.html”) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(uri.path) response = http.request(request) 其中https://host/index.html是服务器上的证书无效的有效地址。 在旧版本的ruby(特别是1.8.7-p334和1.9.2-p180)上,这段代码运行正常。 在所有最新版本(1.8.7-p352,1.9.2-p290和1.9.3-p0)中,它抛出以下exception: OpenSSL::SSL::SSLError: SSL_connect SYSCALL returned=5 errno=0 state=unknown state 在最后一行。 将verify_mode更改为OpenSSL::SSL::VERIFY_PEER确实提供了错误,表明它正在尝试validation证书,而不管设置如何。 如何说服ruby忽略无效证书并连接?

使用自签名证书

我只是试图了解SSL。 我在localhost上设置了一个Jetty服务器,并使用Keytool生成了我自己的证书。 现在,当我去https:// localhost:8443 /我得到了不能相信这个证书错误。 我用 keytool -export -alias pongus -keystore keystore -file certfile.cer 创建我认为是客户端需要对服务器进行身份validation的证书。 (这是我可能非常错的地方!) 我有以下ruby代码: require ‘net/https’ require ‘openssl’ require ‘open-uri’ puts ‘yay’ if File.exists?(‘certfile.cer’) uri = URI.parse(“https://localhost:8443/”) http_session = Net::HTTP.new(uri.host, uri.port) http_session.use_ssl = true http_session.verify_mode = OpenSSL::SSL::VERIFY_PEER http_session.ca_file = ‘certfile.cer’ res = http_session.start do |http| # do some requests here http.get(‘/’) end […]

Ruby中的HTTPS URL服务器证书

如何使用Net :: HTTP或HTTPClient Ruby lib获取https服务器证书?

如何使用ssl通过smtp发送带有ruby的邮件(不带有rails,没有用于gmail的TLS)

我想要的只是使用SSL通过SMTP发送来自我的ruby脚本的电子邮件。 我只找到从Rails或使用TLS的Gmail中执行此操作的示例。 我发现有人在讨论使用ruby 1.8.5的SMTPS支持,但是libdoc没有提到它。 有人通过端口465通过SMTP发送邮件的例子吗? ruby -v ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]

connect:SSL_connect返回= 1 errno = 0 state = SSLv3读取服务器证书B:证书validation失败(OpenSSL :: SSL :: SSLError)

我很难获得SSL来validation证书。 我完全不了解证书的运作方式,因此这是一个很大的障碍。 这是运行脚本时出现的错误: c:/Ruby191/lib/ruby/1.9.1/net/http.rb:611:in `connect’: SSL_connect returned=1 e rrno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL ::SSL::SSLError) 这是相关的代码: client = Savon::Client.new order_svc request = client.create_empty_cart { |soap, http| http.auth.ssl.cert_file = ‘mycert.crt’ http.auth.ssl.verify_mode = :none http.read_timeout = 90 http.open_timeout = 90 http.headers = { “Content-Length” => “0”, “Connection” => “Keep-Alive” } soap.namespaces[“xmlns:open”] = “http://schemas.datacontract.org/2004/07/Namespace” […]

HTTP POST(未知协议)上的SSL错误

尝试通过SSL连接到Imgur API会给我一个错误。 这是代码和错误: API_URI = URI.parse(‘https://api.imgur.com’) API_PUBLIC_KEY = ‘Client-ID –‘ ENDPOINTS = { :image => ‘/3/image’, :gallery => ‘/3/gallery’ } # Public: Upload an image # # args – The image path for the image to upload # def upload(image_path) http = Net::HTTP.new(API_URI.host) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE params = {‘image’ => File.open(image_path)} request […]

如何为独立的Sinatra应用启用SSL?

我想在Sinatra写一个快速的服务器应用程序。 它必须是自包含的(即不使用apache / nginx / passenger),但也必须支持SSL。 有没有简单的方法为Sinatra启用SSL支持(例如使用WEBRick)?

如何使用net / httpvalidationruby中的SSL证书链

如何使用net / http在ruby中validationhttps://processing.ukash.com/等网站的证书? https = Net::HTTP.new(‘processing.ukash.com’, 443) https.use_ssl = true https.verify_mode = OpenSSL::SSL::VERIFY_NONE 到目前为止工作,但我如何validation它现在是正确的证书? 我从firefox中保存了证书,但生成的.pem文件中有许多证书,net / http似乎不喜欢它。

使用Net :: HTTP的块forms的HTTPS请求 – 是否可能?

要执行不带阻止表单的Net :: HTTP https请求,您可以执行以下操作: … http = Net::HTTP.new(url.host, url.port) http.use_ssl = true … 但有没有办法告诉Net :: HTTP在执行块表单时使用https? u = URI.parse(url) Net::HTTP.start(u.host, u.port) do |http| # if I put http.use_ssl = true here, ruby complains that this can’t # be done becuase the sesion has already started resp = http.get(u.request_uri) end 我在ruby1.8.7上