51

openssl を使用して x509 証明書またはドキュメントにデジタル署名する方法はありますか?

4

3 に答える 3

76

秘密鍵を生成するには

openssl genrsa -out privatekey.pem 2048

署名する

openssl dgst -sha256 -sign privatekey.pem -out data.txt.signature data.txt

公開鍵を生成するには

dgst -verify公開鍵が必要

openssl rsa -in privatekey.pem -outform PEM -pubout -out publickey.pem

検証します

openssl dgst -sha256 -verify publickey.pem -signature data.txt.signature data.txt
  • 成功の場合: を出力し"Verified OK"、コードを返します0
  • 失敗した場合: を出力し"Verification Failure"、コードを返します1
于 2013-08-21T14:09:41.290 に答える
59

はい、OpenSSL のdgstおよびrsautlコンポーネントを使用して、指定された RSA キー ペアの署名を計算できます。

署名:

openssl dgst -sha256 data.txt > hash
openssl rsautl -sign -inkey privatekey.pem -keyform PEM -in hash >signature

署名のみを検証する:

openssl rsautl -verify -inkey publickey.pem -pubin -keyform PEM -in signature

更新: これは重要なニュアンスであるため、下から Reto のコメントをキャプチャします。おそらく、検証するのに苦労する場合は、署名が添付されているプレーンテキストで作成されたことを知りたいと思うでしょう:

これは一部の人にとっては明白に聞こえるかもしれませんがrsautl verify、ファイルを復号化するだけであることに注意してくださいsignature。この呼び出しの出力は、秘密鍵の所有者によって生成されることが保証されていますが、それ以外には何もチェックされていません。したがって、実際に の一貫性を検証するにはdata.txt、ダイジェストを再生成し、それを の出力と比較する必要がありますopenssl rsautl -verify

秘密鍵の所有者が次のことを保証していることを確認しますdata.txt

openssl dgst -sha256 -verify publickey.pem -signature signature data.txt

この操作のために、opensslは公開鍵、署名、およびメッセージを必要とします。

于 2012-05-28T10:21:45.927 に答える
8

openssl でドキュメントにデジタル署名するには、機能します

この最初の場合、証明書は信頼されている必要があります。次のようになります

-----BEGIN TRUSTED CERTIFICATE-----
MIIDbjCCAlYCCQCOyunl25ProDANBgkqhkiG9w0BAQUFADB5MQswCQYDVQQGEwJJ
...
-----END TRUSTED CERTIFICATE-----

次に、次のコマンドを使用します

smime -sign -signer certificate.pem -inkey private.key -in test.txt \
    -out test1.txt -from ashish -to singhal
于 2014-02-05T08:54:16.790 に答える