【发布时间】:2014-03-13 21:52:49
【问题描述】:
我已经获得了一些 SSL 证书的访问权限以安装在 Rails 应用程序中。但是,我无法弄清楚它们是什么格式,以及如何让我的应用程序使用它们。我最初将服务器设置为使用一些自签名证书。这是script/rails 的例外情况:
module Rails
class Server < ::Rack::Server
def default_options
super.merge({
:Port => 3000,
:environment => (ENV['RAILS_ENV'] || "development").dup,
:daemonize => false,
:debugger => false,
:pid => File.expand_path("tmp/pids/server.pid"),
:config => File.expand_path("config.ru"),
:SSLEnable => true,
:SSLVerifyClient => OpenSSL::SSL::VERIFY_NONE,
:SSLPrivateKey => OpenSSL::PKey::RSA.new(
File.open("server.key").read),
# $private_key),
:SSLCertificate => OpenSSL::X509::Certificate.new(
File.open("server.crt").read),
:SSLCertName => [["CN", WEBrick::Utils::getservername]]
})
end
end
end
我收到了三个文件。一个名为server.key,它只是一个普通的 RSA 私钥。那个很好。
下一个名为server_cert.cer。这是一个 32 行文件,以-----BEGIN CERTIFICATE----- 开头。其中实际的 base64 代码有 1864 个字符。我被这个文件弄糊涂了:它看起来像一个 SSL 证书,但我的自签名 SSL 证书只有 24 行长。
我还有一个名为server_interim.cer 的文件。它有三个证书串联在一起,都不同于server_cert.cer。
如果我只是盲目地告诉 Rails 加载 server_cert.cer 而不是 server.crt(我生成的),它会给我以下错误:
script/rails:24:in `initialize': nested asn1 error (OpenSSL::X509::CertificateError)
我尝试运行各种openssl 命令将证书从一种形式转换为另一种形式,但它们都说我的证书格式错误。
我如何知道我收到的证书是什么格式的?
【问题讨论】:
标签: ruby-on-rails ssl https