「電子署名法」に則るにはセキュリティトークンが必要で、デジタル署名をちょっと試したいケースならPKCS#12が手っ取り早いです。
今回は可能な限り速く、開発に使えるテスト用のPKCS#12ファイルを作ります。
OpenSSLが入っているなら以下の4コマンドで作れます。
- openssl genrsa -aes256 -out ./prvkey.pem 2048
- openssl req -new -key ./prvkey.pem -out req.csr
- openssl x509 -req -in req.csr -signkey prvkey.pem -out pubkey.crt -days 36500
- openssl pkcs12 -export -in pubkey.crt -inkey prvkey.pem -out forTest.p12
また、以下の記事のようにオレオレなサーバ証明書を作って使っている場合、サーバ証明書とサーバ秘密鍵を4番目のコマンド纏めてしまえば1コマンドでテスト用p12ファイルの完成です。
サクッと作れるようにして行きましょう。
今回作るもの
リモートに申請する際にデジタル署名を掛ける為のp12(PKCS#12)ファイルを作ります。
環境
- Windows 10
- Cygwin
- openssl 1.1.1c
C:\openssl>openssl version
OpenSSL 1.1.1c 28 May 2019
C:\openssl>which openssl
/usr/bin/openssl
未インストールの場合は以下から1.1.1をインストール。
p12ファイル作成手順
1.秘密鍵作成
openssl genrsa -aes256 -out ./prvkey.pem 2048
C:\openssl>openssl genrsa -aes256 -out ./prvkey.pem 2048
Generating RSA private key, 2048 bit long modulus (2 primes)
.....................................+++++
....................................+++++
e is 65537 (0x010001)
Enter pass phrase for ./prvkey.pem: (hogehoge)
Verifying - Enter pass phrase for ./prvkey.pem:
2.証明書リクエスト作成
openssl req -new -key ./prvkey.pem -out req.csr
C:\openssl>openssl req -new -key ./prvkey.pem -out req.csr
Enter pass phrase for ./pubkey.pem:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Katsushika
Organization Name (eg, company) [Default Company Ltd]:(会社名)
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
3.証明書付き公開鍵作成
openssl x509 -req -in req.csr -signkey prvkey.pem -out pubkey.crt -days 36500
C:\openssl>openssl x509 -req -in req.csr -signkey prvkey.pem -out pubkey.crt -days 36500
Signature ok
subject=C = JP, ST = Tokyo, L = Katsushika, O = (会社名)
Getting Private key
Enter pass phrase for prvkey.pem: (hogehoge)
4.p12ファイル作成
秘密鍵、証明書付き公開鍵を1ファイルに纏めたファイルを作成します。
openssl pkcs12 -export -in pubkey.crt -inkey prvkey.pem -out forTest.p12
C:\openssl>openssl pkcs12 -export -in pubkey.crt -inkey prvkey.pem -out forTest.p12
Enter pass phrase for prvkey.pem: (hogehoge)
Enter Export Password:(hogehoge)
Verifying - Enter Export Password:(hogehoge)
パスワードが「hogehoge」のp12ファイルが出来ました。OpenSSLさえ入っていれば数分で作れますね。
次回は今回作ったforTest.p12ファイルで電子署名をかけ、署名値の検証をしてみます。