我正在尝试使用以下代码将/etc/pki/tls/certs
中的所有pem和crt文件添加到OpenSSL::X509::Store
:
require 'openssl'
store = OpenSSL::X509::Store.new
Dir.glob('/etc/pki/tls/certs/*.{pem,crt}') do |cert_path|
puts cert_path
cert = OpenSSL::X509::Certificate.new(IO.read(cert_path))
store.add_cert(cert)
end
当它到达/etc/pki/tls/certs/ca-bundle.trust.crt
时,OpenSSL::X509::Certificate.new
会引发此错误:
cert_test.rb:6:in `initialize': nested asn1 error (OpenSSL::X509::CertificateError)
from cert_test.rb:6:in `new'
from cert_test.rb:6:in `block in <main>'
from cert_test.rb:4:in `glob'
from cert_test.rb:4:in `<main>'
任何人都知道ca-bundle.trust.crt
是什么或为什么ruby的openssl无法读取它?
对于它的价值,我在运行时不会出现任何错误:
openssl x509 -text -in /etc/pki/tls/certs/ca-bundle.trust.crt
答案 0 :(得分:0)
这是一组&#34;受信任的证书&#34;。
x509手册页介绍了一些。
TRUST SETTINGS
请注意,这些选项目前是实验性的,可能会有所改变。
可信证书是普通证书,附有若干附加信息,例如证书的允许和禁止使用以及&#34;别名&#34;。
通常,在验证证书时,至少有一个证书必须是“受信任的”#34;。默认情况下,受信任的证书必须存储在本地,并且必须是根CA.任何以此CA结尾的证书链都可用于任何目的。
信任设置目前仅用于根CA.它们允许更好地控制根CA可用于的目的。例如,CA可能对SSL客户端而不是SSL服务器使用。
有关信任设置含义的更多信息,请参阅验证实用程序的说明。
OpenSSL的未来版本将识别任何证书上的信任设置:不仅仅是根CA.
和
PEM格式使用页眉和页脚行:
----- BEGIN CERTIFICATE -----
----- END CERTIFICATE -----
它还将处理包含以下内容的文件:
----- BEGIN X509 CERTIFICATE -----
----- END X509 CERTIFICATE -----
受信任的证书具有
行-----开始信赖的证书-----
----- END TRUSTED CERTIFICATE -----