小包の署名を確認しようとしています。FreeBSDパッケージウェブサイト
wget http://pkg.freebsd.org/FreeBSD:11:amd64/latest/digests.txz
tar xf digests.txz
これは3つのファイルを提供します:digests
、digests.pub
digests.sig
私はdigests.sig
公開鍵としてファイルの署名であると仮定します。しかし、確認しようとしています。digests
digests.pub
openssl dgst -verify digests.pub -signature digests.sig digests
そしてメッセージを受け取った
Verification Failure
私に何か問題があると思います。私が何を見逃しているのか教えてくれる人はいますか?
編集:ソースコード検索に基づいて考える重要な機能を見つけることができますここ、rsa_verify_cert_cb
opensslライブラリから呼び出されます。RSA_verify
しかし、ここに何を入れるのか、openssl
コマンドラインツールを使用して関数を呼び出せるかどうかはわかりません。
答え1
FreeBSDパッケージを手動で検証する「方法」がインターネットにないので、これが私が知っているものです。
秘密は、出力のオクテット文字列がopenssl rsautl
実際には文字列のハッシュ値、つまりSHA256ハッシュ値ファイルの。
たとえば、current をダウンロードして解凍http://pkg.freebsd.org/FreeBSD:12:amd64/latest/digests.txz
し、次のようにします。
方法1(1行に使用openssl dgst
)
ここで重要なのは、tr -d '\n'
標準入力から改行文字を削除して文字列入力に含まれないようにすることですopenssl dgst
。
sha256 -q digests | tr -d '\n' | openssl dgst -verify digests.pub -signature digests.sig
コマンドはVerified OK
。
方法2(手動で生成されたハッシュと.sigファイルのオクテット文字列を視覚的に比較)
OpenSSL ユーティリティを使用して Digests.sig のコンテンツをダンプします。
openssl rsautl -pubin -inkey digests.pub -verify -in digests.sig -asn1parse 0:d=0 hl=2 l= 49 cons: SEQUENCE 2:d=1 hl=2 l= 13 cons: SEQUENCE 4:d=2 hl=2 l= 9 prim: OBJECT :sha256 15:d=2 hl=2 l= 0 prim: NULL 17:d=1 hl=2 l= 32 prim: OCTET STRING 0000 - ac c6 ac be cd 5e 61 63-62 82 62 4b ba 77 37 6e .....^acb.bK.w7n 0010 - 0b fa ea ef 6e 10 21 01-62 64 06 2f d0 f1 60 22 ....n.!.bd./..`"
ここでは、埋め込みオブジェクトがSHA256ハッシュであり、その値があることを確認できます
acc6acbecd5e61636282624bba77376e0bfaeaef6e1021016264062fd0f16022
。これでファイルのSHA256を計算します
digests
。sha256 -q digests 8db18c93bea414fd8a281f5f3795b2ca4be51479c18b225ff87b8aa957ec2c5d
- 最後に、
echo
コマンドを使用して文字列のSHA256を計算し、それを返された値と比較しますopenssl rsautl
。echo -n 8db18c93bea414fd8a281f5f3795b2ca4be51479c18b225ff87b8aa957ec2c5d | sha256 acc6acbecd5e61636282624bba77376e0bfaeaef6e1021016264062fd0f16022
手順3の値が手順1の値とどのように一致するかを確認することで、ファイルがdigests
有効になります。
答え2
このメッセージは、公開鍵がダウンロードしたファイルと一致しないことを示します。 dgst マンページによると-verify filename "filename"の公開鍵を使用して署名を確認します。 出力は「確認成功」または「確認失敗」です。最も可能性の高い原因は、ダウンロード処理中にファイルが破損しているためです。もう一度ダウンロードしてみましたが、まだスキャンに失敗した場合は、ダウンロードリンクが壊れています(ただし、freebsdサイトから取得したものなので、ダウンロードエラーにすぎません。または不安定な場合は、正しくダウンロードするためにいくつかの試みが必要な場合があります。コマンドに関する情報を確認する必要がある場合は、マンページを確認することをお勧めします。