特定のファイル/データと秘密鍵からDSA署名を作成するためのLinux/Unixコマンドラインツールを探しています。
xmlsec1 tool について知っています。しかし、もっと簡単なものが欲しいのですが。 OpenSSLはこの機能を開発者ライブラリとして提供しているようですが、ツールとしては提供していません。
それは「openssldgst」で行われます-それを置くための最も明白な場所ではありません...
で見つかりました:
http://www.myelin.co.nz/post/2005/5/23/
openssl dsaparam 1024 < /dev/random > dsaparam.pem
openssl gendsa dsaparam.pem -out dsa_priv.pem
openssl dsa -in dsa_priv.pem -pubout -out dsa_pub.pem
echo "foobar" > foo.txt
sha1sum < foo.txt | awk '{print $1}' > foo.sha1
openssl dgst -dss1 -sign dsa_priv.pem foo.sha1 > sigfile.bin
openssl dgst -dss1 -verify dsa_pub.pem -signature sigfile.bin foo.sha1
次の暫定コマンドセットは、openssl1.0.2gおよび1.1.0gで機能するようです。それと比較して 他の答え 、小文字の16進数の署名(2番目のハッシュステップを含む)ではなく、ファイルの署名(標準で義務付けられたハッシュステップを含む)を生成することを目的としていますASCIIファイルの最初のハッシュの表現。また、より新しいハッシュとモジュラスサイズを使用します。
# generate parameters with 2048-bit DSA, SHA-256 (can be common to multiple keys)
openssl genpkey -genparam -algorithm DSA -pkeyopt dsa_paramgen_bits:2048 -pkeyopt dsa_paramgen_q_bits:256 -pkeyopt dsa_paramgen_md:sha256 -out dsaparams.pem
# generate a private key and extract the public key
openssl genpkey -paramfile dsaparams.pem -out dsaprivkey.pem
openssl dsa -in dsaprivkey.pem -pubout > dsapubkey.pem
# create a file "myfile" to be signed
echo 'The Magic Words are Squeamish Ossifrage' > myfile
# create signature "myfile.sig"
openssl dgst -sha256 -sign dsaprivkey.pem myfile > myfile.sig
# verify "myfile" against signature "myfile.sig" and public key
openssl dgst -sha256 -verify dsapubkey.pem -signature myfile.sig myfile
注:A 以前の試み openssl 1.0.2gで160ビットqの署名が生成されました(おそらくSHA-1を使用)。 comment ごとに、-sha256
をopenssl dgst
に追加しましたが、違いはありませんでした。 manページ は-pkeyopt dsa_paramgen_q_bits:256
がそれを処理すると明示的に述べていますが、実験では-pkeyopt dsa_paramgen_md:sha256
を使用する必要があることが示唆されています。
dsa_paramgen_md:digest
パラメーター生成中に使用するダイジェスト。sha1
、sha224
、またはsha256
のいずれかである必要があります。設定されている場合、qのビット数は、指定されたダイジェストの出力サイズと一致し、dsa_paramgen_q_bits
パラメーターは無視されます(。 。)
あなたは見ましたか:
ファイルの整合性を検証できるように、ファイルの署名を作成しますか?あなたはGnuPrivacy Guard(GnuPG)を探していると思います。
gpg --output filename.sig --detach-sig filename
これにより、元のファイル名に基づいて署名ファイルfilename.sigが作成され、次の方法で検証できます。
gpg --verify filename.sig filename