gpt4 book ai didi

openssl生成指纹的Ruby代码

转载 作者:数据小太阳 更新时间:2023-10-29 08:23:43 24 4
gpt4 key购买 nike

我需要以下的 ruby​​ 等价物:

openssl x509 -sha1 -fingerprint -noout -in cert.pem

我写的代码是:

data = File.read("cert.pem")
data["-----BEGIN CERTIFICATE-----\n"]=""
data["-----END CERTIFICATE-----\n"]=""
OpenSSL::Digest::SHA1.new(Base64.encode64(data))

此代码不会生成与 openssl cli 命令相同的指纹。

知道我做错了什么吗?

最佳答案

正如 gtrig 所提到的,OpenSSL 命令行通过散列证书的 DER 编码来构建指纹,而不是 Base64 PEM 表示。您可以使用纯 OpenSSL 解析它:

file_data = File.read("cert.pem")
cert = OpenSSL::X509::Certificate.new(file_data)
puts OpenSSL::Digest::SHA1.new(cert.to_der).to_s

不要脸的外挂:r509也可以这样做:

cert = R509::Cert.load_from_file("cert.pem")
puts cert.fingerprint('sha1')

如果您需要它以冒号分隔的形式,您可以只获取散列并执行类似 "fingerprint".scan(/../).map{ |s| 的操作s.upcase }.join(":")

关于openssl生成指纹的Ruby代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16516555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com