根据 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/