Tag: ssl

使用https连接到具有由我创建的CA签名的证书的服务器

我有一个测试环境,使用Ruby通过https连接驱动服务器。 由于最新版本的Ruby拒绝连接到具有无效证书的https服务器(请参阅我之前的这个问题 ),并且我想开始使用更新版本的Ruby,我正在尝试设置有效的证书。 我已经创建了一个要使用的CA证书(有多个服务器正在测试,所以这似乎更容易),并且已成功使用它来签署已安装在服务器上并正在使用的新证书。 我已将CA证书添加到浏览器商店,它(浏览器)现在将连接到服务器而无需投诉。 所以我相信我的证书是有效的并且设置正确。 我知道Ruby不会使用与浏览器相同的商店。 我使用此处提供的CA文件来测试连接到其他(公共)服务器(使用Net::HTTP#ca_file=方法设置),这也有效。 我无法工作的是Ruby使用我的证书连接到我的服务器。 我已经尝试了各种方法将它指向我的证书(包括将我的证书添加到上面链接的文件),它总是给出相同的错误: SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 read server hello A (OpenSSL::SSL::SSLError) 我该怎么做才能说服Ruby接受我的证书并连接到我的服务器? 我使用的代码是: require ‘net/https’ uri = URI.parse(“https://hostname/index.html”) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.ca_file = “My CA cert file” request = Net::HTTP::Get.new(uri.path) response = http.request(request) 我假设这是错误的。 我想知道的是,我该怎么做才能使用我的CA证书?

Ruby Mechanize https错误

我正在尝试执行以下操作: page = Mechanize.new.get “https://sis-app.sph.harvard.edu:9030/prod/bwckschd.p_disp_dyn_sched” 但我只得到这个例外: OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: sslv3 alert illegal parameter from /Users/amosng/.rvm/gems/ruby-1.9.3-p194/gems/net-http-persistent-2.7/lib/net/http/persistent/ssl_reuse.rb:70:in `connect’ from /Users/amosng/.rvm/gems/ruby-1.9.3-p194/gems/net-http-persistent-2.7/lib/net/http/persistent/ssl_reuse.rb:70:in `block in connect’ from /Users/amosng/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/timeout.rb:54:in `timeout’ from /Users/amosng/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/timeout.rb:99:in `timeout’ from /Users/amosng/.rvm/gems/ruby-1.9.3-p194/gems/net-http-persistent-2.7/lib/net/http/persistent/ssl_reuse.rb:70:in `connect’ from /Users/amosng/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:755:in `do_start’ from /Users/amosng/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:750:in `start’ from /Users/amosng/.rvm/gems/ruby-1.9.3-p194/gems/net-http-persistent-2.7/lib/net/http/persistent.rb:511:in `connection_for’ from /Users/amosng/.rvm/gems/ruby-1.9.3-p194/gems/net-http-persistent-2.7/lib/net/http/persistent.rb:806:in `request’ from /Users/amosng/.rvm/gems/ruby-1.9.3-p194/gems/mechanize-2.5.1/lib/mechanize/http/agent.rb:258:in `fetch’ from /Users/amosng/.rvm/gems/ruby-1.9.3-p194/gems/mechanize-2.5.1/lib/mechanize.rb:407:in `get’ from […]

Rails仅在指定的控制器上强制ssl

我有一个ssl证书,服务于https://secure.mydomain.com 。 我想仅在某些控制器上使用ssl而不是在整个应用程序中使用ssl。 我已经在线查看,似乎无法找到有关如何为指定控制器启用ssl的完整而准确的教程。 我知道我可以使用下面的配置ssl,但它不能为我提供服务,因为它支持ssl网站 config.force_ssl = true 我如何告诉rails只在特定的控制器上使用ssl而不是我的整个应用程序?

Ruby gem黄瓜SSL错误和Gem来源

我试图为Ruby安装黄瓜gem。 尽管与此有些相关的主题很少,但我找不到具有确切答案的确切问题。 在Windows上,我尝试运行命令gem install cucumber并返回控制台: 错误:无法从https://rubygems.org/下载数据 – SSL_connect返回= 1 errno = 0状态= SSLv3读取服务器证书B:证书validation失败( https://s3.amazonaws.com/production.s3.rubygems .org / specs.4.8.gz ) 然后,我搜索了一个解决方案,并在此处找到了一些删除源代码的建议。 我运行了gem sources -r ,它已被删除。 但不仅仅是黄瓜。 现在我甚至无法添加源代码。

SSL证书,Ruby,Mac OS X Yosemite故障排除

在OS X Mavericks上,当我尝试连接到各种API时,我从Ruby程序中收到以下错误: Seahorse::Client::NetworkingError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed 推荐的解决方案是什么?

对rails中的特定控制器跳过/禁用force_ssl

我需要在我的应用程序中的所有路由上强制使用SSL,除了message#new controller。 在config/environments/production.rb ,我有: config.force_ssl = true 现在所有路由都重定向到https,现在我想禁用message#new controller。 有谁知道如何在Rails 4+应用程序中禁用特定控制器的强制SSL?

如何设置本地SSL证书和Rails应用程序?

这可能是一个二合一的问题。 我有一个用于家庭/爱好使用的Rails应用程序,托管在Raspberry Pi上,我想知道是否可以为它创建本地SSL证书并设置Rails使用它? 如果是,我如何设置我的Rails / Puma / Foreman / Ubuntu应用程序? 现在,我使用Procfile运行Foreman的应用程序: web: bundle exec puma -t 8:8 -p 3000 worker: bundle exec sidekiq clock: bundle exec clockwork config/clock.rb

使用Ruby中的SSLServervalidation客户端证书

下面是我用来设置服务器的代码: require ‘socket’ require ‘openssl’ socket = TCPServer.new(‘127.0.0.1’, 4433) ssl_context = OpenSSL::SSL::SSLContext.new() ssl_context.cert = OpenSSL::X509::Certificate.new(File.open(“ssl/server/server.crt”)) ssl_context.key = OpenSSL::PKey::RSA.new(File.open(“ssl/server/server.key”)) ca_cert = OpenSSL::X509::Certificate.new(File.open(“ssl/ca/ca.crt”)) ssl_socket = OpenSSL::SSL::SSLServer.new(socket, ssl_context) Thread.start(ssl_socket.accept) do |s| puts “Connected to #{s.peeraddr.last}” if s.peer_cert.verify(ca_cert.public_key) puts “Certificate verified” else puts “Certificate invalid” end end 和客户: require ‘socket’ require ‘openssl’ socket = TCPSocket.new(‘127.0.0.1’, 4433) ssl_context = OpenSSL::SSL::SSLContext.new […]

Office 365 Rest API – 守护程序周身份validation

我正在尝试构建一个Ruby Daemon服务来访问Office 365 rest API。 最近通过OAuth’client_credentials’流程实现了这一点,详见本博客文章: http : //blogs.msdn.com/b/exchangedev/archive/2015/01/22/building-demon-or -服务-应用程序-与办公-365-邮件日历和联系人的API-的oauth2客户端-凭据flow.aspx 我正在努力生成有效的访问令牌。 令牌端点返回给我一个JWT,但是当使用这个令牌时,我收到了一条带有此消息的401: 使用身份validation方法获取访问令牌,该身份validation方法太弱而无法访问此应用程序。 提出的auth强度为1,要求为2 我知道client_credentials流程要求您提供X.509证书,不幸的是,博客文章中的所有示例都是针对C#的。 我在请求令牌时使用生成的自签名证书和私钥来执行客户端断言。 我按照博客文章中的步骤生成证书并更新清单以使用此证书。 这是ruby代码供参考: def request_token uri = URI.parse(“https://login.windows.net/== TENANT-ID ==/oauth2/token?api-version=1.0”) https = Net::HTTP.new(uri.host, uri.port) req = Net::HTTP::Post.new(uri.request_uri) req.set_form_data( :grant_type => ‘client_credentials’, :redirect_uri => ‘http://spready.dev’, :resource => ‘https://outlook.office365.com/’, :client_id => ‘== Client ID ==’, :client_secret => ‘== Client secret ==’ ) […]

如何在Ruby中设置TLS上下文选项(如OpenSSL :: SSL :: SSL_OP_NO_SSLv2)

在C中使用OpenSSL时,我们在上下文中设置选项以删除弱受损和受伤的协议,如SSLv2和SSLv3。 从ssl.h ,这里有一些有用的选项的位掩码: #define SSL_OP_NO_SSLv2 0x01000000L #define SSL_OP_NO_SSLv3 0x02000000L #define SSL_OP_NO_TLSv1 0x04000000L #define SSL_OP_NO_TLSv1_2 0x08000000L #define SSL_OP_NO_TLSv1_1 0x10000000L 但是,我在Ruby中设置它们时遇到了麻烦: if uri.scheme == “https” http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.options = OpenSSL::SSL::SSL_OP_NO_SSLv2 | OpenSSL::SSL::OP_NO_SSLv3 | OpenSSL::SSL::SSL_OP_NO_COMPRESSION end 结果是: $ ./TestCert.rb ./TestCert.rb:12:in `’: uninitialized constant OpenSSL::SSL::SSL_OP_SSL2 (NameError) 1.9.3 (和2.0.0)的Ruby文档甚至懒得提及它。 如何在Ruby中设置TLS上下文选项? 相关: 在ruby中设置SSLContext选项 。 但是当http.use_ssl = true时, […]