4

次のルビーに相当するものが必要です。

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 コマンドと同じフィンガープリントを生成しません。

私が間違っているかもしれないことは何ですか?

4

2 に答える 2

1

Base64.decode64 を試してください。

OpenSSL::Digest::SHA1.new(Base64.decode64(data))

PEM 形式の証明書は、バイナリ DER 形式の Base 64 エンコード バージョンであるため、SHA1 ハッシュを取得する前にデコードする必要があります。

または、次のように OpenSSL を使用して PEM ファイルを DER 形式に変換することもできます。

openssl x509 -in cert.pem -out cert.der -outform der

次に、Ruby コードは次のようになります。

 data2 = File.read("cert.der")
 print OpenSSL::Digest::SHA1.new(data2)

どちらの方法でも機能します。

于 2013-05-13T17:39:02.907 に答える