web-dev-qa-db-ja.com

LinuxコマンドラインからのDSA署名の作成

特定のファイル/データと秘密鍵からDSA署名を作成するためのLinux/Unixコマンドラインツールを探しています。

xmlsec1 tool について知っています。しかし、もっと簡単なものが欲しいのですが。 OpenSSLはこの機能を開発者ライブラリとして提供しているようですが、ツールとしては提供していません。

2
mparaz

それは「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
3
mparaz

次の暫定コマンドセットは、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 ごとに、-sha256openssl dgstに追加しましたが、違いはありませんでした。 manページ-pkeyopt dsa_paramgen_q_bits:256がそれを処理すると明示的に述べていますが、実験では-pkeyopt dsa_paramgen_md:sha256を使用する必要があることが示唆されています。

dsa_paramgen_md:digest
パラメーター生成中に使用するダイジェスト。 sha1sha224、またはsha256のいずれかである必要があります。設定されている場合、qのビット数は、指定されたダイジェストの出力サイズと一致し、dsa_paramgen_q_bitsパラメーターは無視されます(。 。)

1
fgrieu

あなたは見ましたか:

ファイルの整合性を検証できるように、ファイルの署名を作成しますか?あなたはGnuPrivacy Guard(GnuPG)を探していると思います。

gpg --output filename.sig --detach-sig filename

これにより、元のファイル名に基づいて署名ファイルfilename.sigが作成され、次の方法で検証できます。

gpg --verify filename.sig filename
0
dotplus