One IT Thing

IT業界で飯を食う為の学習系雑記

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
-

執筆者:

関連記事

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

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

Javascript(暗号化JSライブラリ「Forge」)とp12ファイルで署名値を作成、Javaで検証する

前回、送信データの改ざんを検知する為、簡易的なセキュリティトークンであるPKCS#12形式のファイルを作成しました。  One IT Thing開発用のPKCS#12ファイルをOpenSSL …

主要ブラウザに保存させたパスワードの確認方法を比較してみる(Firefoxをメインブラウザにしない理由)

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

HTTPS開発環境用、自己署名証明書の作成

(2020/09/18追記) mkcertを使ってより簡単に完璧なSSL証明書を作ることができました。 ささっと開発用のHTTPSサーバを作りたい時はmkcert使った方が良いですね。  O …

開発用のRSA鍵ペア(バイナリ、テキスト)をopensslで作っておく

目次1 環境2 秘密鍵3 公開鍵4 まとめ 環境 CentOS7.6に付属のopenssl 1.0.2k。 $ cat /etc/redhat-release CentOS Linux release …

 

shingo.nakanishi
 

東京在勤、職歴20年越え中年ITエンジニアです。まだ開発現場で頑張っています。

19歳(1996年)から書き始めた個人日記が5,000日を超え、残りの人生は発信をして行きたいと思い、令和元日からこのサイトを開始しました。勉強と試行錯誤をしながら、自分が経験したIT関連情報を投稿しています。

私と同じく、今後IT業界で生計を立てて行きたいと考えている方や、技術共有したいけどフリーランスで孤独、といった方と一緒に成長、知識共有して行けたら楽しいな、と思っています。