根据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
的效果,该页面是否有误?或者常数是否永远不变,它会影响其他一些设置?最终,证书没有找到,所以我需要知道它是什么/如何检查/如何设置它。
一等奖是一种类似的方法,默认设置为环境变量,因为我不想硬编码证书的路径。
答案 0 :(得分:1)
我不知道ruby部分,但根据我对OpenSSL代码的经验,我认为设置环境SSL_CERT_FILE不会改变DEFAULT_CERT_FILE的内容。但是它仍将在OpenSSL查找证书的位置发生变化:如果给出SSL_CERT_FILE,它将获取此值,否则采用DEFAULT_CERT_FILE中的值。这就是OpenSSL内部工作的方式。