6

根据这个页面,我可以看到 HTTPI 基于常量在哪里寻找我的 SSL 证书OpenSSL::X509::DEFAULT_CERT_FILE

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

我的证书在其他地方,但该页面说我可以使用环境变量更改 Ruby 的路径SSL_CERT_FILE。我在 .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吗?或者常数永远不会改变并且它会影响其他一些设置?最终,找不到证书,所以我需要知道它是什么/如何检查/如何设置它。

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

4

1 回答 1

1

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

于 2015-07-23T12:44:46.577 回答