【发布时间】:2014-01-06 09:57:40
【问题描述】:
我有几个关于使用 SSL 证书部署 Rails 应用程序的问题。
背景:
- Rails 3.2.16 / Ruby 1.9.3
- 由内部 Windows CA 服务器签名的 SAN SSL 证书
- 使用 Apache/Passenger 将应用部署到 Ubuntu 12.04 服务器
根据https://gist.github.com/fnichol/867550,使用 Ruby net/http 的 Windows 客户端不信任 Ubuntu 服务器上的证书。我认为这是因为未设置 SSL_CERT_FILE 环境变量(尽管内部根证书已安装在 Ubuntu 服务器上并通过组策略部署到 Windows 客户端..?)
我希望能够从我的应用程序的任何客户端(Windows 或 Ubuntu)运行以下代码 sn-p
require 'net/http'
uri = URI.parse('https://ubuntu-server.internal.com/')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.start { |agent| agent.get(uri.path) }
我是否应该将内部 CA 根证书(和中间证书,以及 CURL 证书包的其余部分)与应用程序捆绑在一起,然后在代码中设置
ENV['SSL_CERT_FILE']?)我是否应该在应用程序中仅包含内部 CA 根证书并在使用前使用初始化程序来设置 net/http?这似乎是 RubyInstaller https://github.com/oneclick/rubyinstaller/blob/master/rake/contrib/uri_ext.rb#L287-295 的方法,但我真的不知道如何编写这个代码?
还有别的吗?
到目前为止,选项 2 对我来说似乎是最好的,但正如我所说,我不知道如何进行设置
http.use_ssl = true
http.ca_file = "#{Rails.root}/config/internal-ca.crt"
在 Rails 初始化程序中。
任何帮助/建议将不胜感激。
谢谢
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 openssl ssl-certificate