security

開発用のPKCS#12ファイルをOpenSSLで出来るだけ速く作る

投稿日:

「電子署名法」に則るにはセキュリティトークンが必要で、デジタル署名をちょっと試したいケースならPKCS#12が手っ取り早いです。

今回は可能な限り速く、開発に使えるテスト用のPKCS#12ファイルを作ります。
OpenSSLが入っているなら以下の4コマンドで作れます。

  1. openssl genrsa -aes256 -out ./prvkey.pem 2048
  2. openssl req -new -key ./prvkey.pem -out req.csr
  3. openssl x509 -req -in req.csr -signkey prvkey.pem -out pubkey.crt -days 36500
  4. 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ファイルで電子署名をかけ、署名値の検証をしてみます。

-security
-

執筆者:

関連記事

pgcryptoの有効化と共通鍵暗号の動作確認

PostgreSQLで「pgcrypto」拡張機能を有効にすると、PostgreSQLに保存するデータを暗号化出来るようになります。 INSERTする際、共通鍵暗号はpgp_sym_encrypt関数 …

主要ブラウザに保存させたパスワードの確認方法を比較してみる

アクセスしたサイトのパスワードをブラウザに覚えてもらったけどなんて入れたっけ? なんてことが稀にあったりします。各種ブラウザとも覚えさせたパスワードは後から確認が出来るのでそれぞれの方法を確認します。 …

H2 Databaseで生成したSHA256値をJavaで生成したSHA256値と比較してみる

ファイル、サーバ、メモリ、様々な動作形態がとれてプロトタイピングや、配布アプリの組み込みDBとして便利に使えるPure Javaデータベースの「H2」。 h2database.com  2 …

mkcertとhttp-serverでHTTPS環境を作りAndroid(chrome)、iPhone(safari)から接続

簡単にパーフェクトなオレオレ証明書が作れるとgithub上で人気上昇中の「mkcert」。 GitHub  135 UsersFiloSottile/mkcerthttps://github …

SNS他Webサービスの情報流出、セキュリティ事故に巻き込まれたかどうか調べる

FaceBookやCapital Oneなど、サービスに登録されたユーザ情報が漏洩する事件が取り沙汰されています。 「もしかしたら自分が登録した情報も漏れてるかもしれない」 そう思って気になったら、セ …

 

shingo.nakanishi
 

東京在勤、1977年生まれ、IT職歴2n年、生涯現役技術者を目指しています。健康第一。