ruby-on-rails - 使用环境变量更改 HTTPI SSL 默认证书文件位置

标签 ruby-on-rails ruby ssl openssl httpi

根据 this page根据 OpenSSL::X509::DEFAULT_CERT_FILE 常量,我可以看到 HTTPI 在哪里寻找我的 SSL 证书:

2.1.5 :008 > OpenSSL::X509::DEFAULT_CERT_FILE
 => "/usr/lib/ssl/cert.pem"

我的证书在别处,但那个页面说我可以使用环境变量 SSL_CERT_FILE 更改 Ruby 查看的路径。我在 .bashrc 中这样做了:

export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt

Rails 查找环境变量:

2.1.5 :007 > ENV['SSL_CERT_FILE']
 => "/etc/ssl/certs/ca-certificates.crt"

但这对 OpenSSL 常量没有影响:

2.1.5 :008 > OpenSSL::X509::DEFAULT_CERT_FILE
 => "/usr/lib/ssl/cert.pem"

那个页面关于设置SSL_CERT_FILE的效果是不是错了?还是常量永远不会改变并且会影响其他设置?最终,找不到证书,所以我需要知道它是什么/如何检查/如何设置它。

一等奖是通过环境变量设置默认值的类似方法,因为我不想硬编码证书路径。

最佳答案

我不知道 ruby​​ 部分,但根据我使用 OpenSSL 代码的经验,我认为设置环境 SSL_CERT_FILE 不会更改 DEFAULT_CERT_FILE 的内容。但它仍然会改变 OpenSSL 查找证书的位置:如果给定 SSL_CERT_FILE,它将采用该值,否则采用 DEFAULT_CERT_FILE 中的值。这就是 OpenSSL 在内部的工作方式。

关于ruby-on-rails - 使用环境变量更改 HTTPI SSL 默认证书文件位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31587347/

相关文章:

ruby-on-rails - 运行 rake db :create: undefined method `extend_object' for class `Singleton' 时出错

ruby-on-rails - Ruby On Rails 是否像 Java 一样对内存有任何限制

ruby-on-rails - `method_missing' : ActionMailer::Base:Class 的未定义方法 `add_delivery_method'

ssl - 在 Visual Studio 2015 中自签名 SSL 证书 SHA-1

java - 我该如何修复 javax.net.ssl.SSLHandshakeException : no cipher suites in common?

ruby-on-rails - CSS 或 jQuery on rails/How to "fill frame"with an image?

ruby-on-rails - 为 nil :NilClass 设计 Rspec 未定义方法 `env'

ruby - 在文件同步之前 vagrant up provisioning

ruby-on-rails - 如何使用 Ruby 1.9 在 Rails 中使用美式日期?

.net - 在 IIS 中运行时 WCF 服务无法连接到 Web 服务