根据this page我可以看到httpi在哪里根据OpenSSL::X509::DEFAULT_CERT_FILE常量查找我的ssl证书:

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

我的证书在其他地方,但是那个页面说我可以使用环境变量SSL_CERT_FILE更改ruby查看的路径。我是这么做的。巴什克:
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证书文件不会更改默认证书文件的内容。但是它仍然会改变openssl查找证书的位置:如果给定ssl证书文件,它将接受该值,否则将接受默认证书文件中的值。这就是openssl在内部的工作方式。

09-25 16:17
查看更多