FreeBSDパッケージを手動で検証するための「ハウツー」はインターネット上にないので、ここに私が見つけたものがあります。
トリックは、openssl rsautl
出力のオクテット文字列が実際にはファイルのSHA256ハッシュである文字列のハッシュであることです。
たとえば、currentをダウンロードしてhttp://pkg.freebsd.org/FreeBSD:12:amd64/latest/digests.txz
抽出し、次のようにします。
方法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
が有効であることに注意してください。
openssl rsautl -pubin -inkey digests.pub -verify -in digests.sig -asn1parse
しているように見えますが、ここで言及されているものに類似したコマンドも 一致していないようです。