S/MIMEの場合、PKCS#7の分離された署名を次の方法で確認できることがわかりました。
openssl smime -verify -in detachedsign.pem -content content.txt
しかし、非MIMEメッセージはどうですか?
メッセージに署名した場合Hello, World!
とopenssl smime -sign -text....
実際に署名します
Content-Type: plain/text
Hello, World!
opensslを使用して、通常のテキストファイルに署名できますか(そのままです)?いつ -sign
はPKCS#7分離署名を出力し、-verify
PKCS#7分離署名およびコンテンツを受け入れます
はい、OpenSSLを使用してプレーンテキストファイルのメッセージダイジェストを作成および署名し、後でその署名済みダイジェストを使用してテキストの有効性を確認できます。
openssl sha1 -sign rsaprivate.pem -out rsasign.bin file.txt
後でテキストメッセージの有効性を確認します
openssl sha1 -verify rsapublic.pem -signature rsasign.bin file.txt
O'Reillyの本OpenSSLを使用したネットワークセキュリティを調べて、これらの関数の優れたドキュメントソースを確認してください。上記の例はその本から来ました。
qistophのブログ (およびdave_thompson_085のコメント)によると、メッセージに署名する
openssl smime -sign -nodetach -inkey keyfile.key -signer cert.cer -in unsigned.txt -inform pem -out signed.p7m
ここで、unsigned.txt
は署名するファイルです。 keyfile.key
はPKCS#8秘密鍵です(暗号化されていません)。 cert.cer
はX.509証明書です。 signed.p7s
は、添付されたPKCS#7署名になります。つまり、ペイロード(unsigned.txt
)が署名に含まれます。デタッチされた署名を取得するには、フラグ-nodetach
を削除します(そして 標準 に従って、出力ファイルに拡張子.p7s
を付けます)。
署名を確認するには:
openssl smime -verify -in signed.p7 -inform pem
証明書自体を検証する必要がない場合(たとえば、パブリックCAによって署名されていない場合)、-noverify
フラグを追加します。 -noverify
は証明書の検証のみを無効にします。ペイロードの署名はまだ検証されています。