芽萌丸プログラミング部 @programming
@programming
2020/9/7 11:45 更新✏

opensslで秘密鍵と公開鍵の生成・署名・検証

目次:

秘密鍵の生成

鍵長 2024 bitで秘密鍵 rsa.priv を生成:

$ openssl genrsa 2024 > ./rsa.priv

AES256暗号化された秘密鍵を生成する場合は -aes256 オプションを指定:

$ openssl genrsa -aes256 2024 > ./rsa.priv

秘密鍵から公開鍵の生成

先ほど生成した秘密鍵から公開鍵 rsa.pub を生成:

$ openssl rsa -in ./rsa.priv -pubout > ./rsa.pub

秘密鍵でファイルの署名を生成

先ほどの秘密鍵を使い、ファイルfoo.txtの署名を生成: (署名ファイル名foo.sig, base64形式)

$ openssl dgst -sha256 -sign ./rsa.priv ./foo.txt | openssl base64 > ./foo.sig

公開鍵でファイルの署名を検証

公開鍵 rsa.pub とファイル foo.txt から先ほどの署名を検証:

## 署名ファイルfoo.sigを一旦sha256ハッシュ化:
$ openssl base64 -d -in ./foo.sig > ./foo.sha256
## 公開鍵とfoo.txtファイルでsha256ハッシュ化された署名を検証:
$ openssl dgst -sha256 -verify ./rsa.pub -signature ./foo.sha256 ./foo.txt

Verified OK ## 検証OK!

暗号

芽萌丸プログラミング部 @programming
芽萌丸プログラミング部@programming
プログラミング関連アカウント。Web標準技術を中心に書いていきます。フロントエンドからサーバサイドまで JavaScript だけで済ませたい人たちの集いです。記事は主に @TanakaSoftwareLab が担当。
オススメ:Zattoyomiで時事ネタチェックの時間節約!