上野家のホームページ
ナーマル,マリン,ココ
[
新規
|
一覧
|
検索
|
最新
|
ヘルプ
]
PC/デジタル署名とタイムスタンプ/オレオレ電子証明書の作成
のソース
資料室
PC
/
デジタル署名とタイムスタンプ
/
オレオレ電子証明書の作成
のソース
[
差分
|
バックアップ
|
リロード
]
[ ]
差分
を表示
PC/デジタル署名とタイムスタンプ/オレオレ電子証明書の作成
へ行く。
« Prev
* オレオレ電子証明書の作成 [#v9a0277c] 一般的には電子証明書(X.509)は以下の手順で作成する。~ - ''秘密鍵''を作成する。~ - 作成した秘密鍵に対する公開鍵を作成する。~ - ''第3者認証機関''に申請する署名要求証明書(CSR)を作成する。~ 第3者認証機関で有効な電子証明書を発行してもらうため,署名要求証明書(CSR)を用意する。~ 中身は上記で作成した公開鍵と個人(会社)情報や連絡先等の情報などの認証情報を含んだもの。~ - 作成した署名要求証明書(CSR)を第3者認証機関に提出する。~ 署名要求証明書(CSR)を第3者認証機関に提出し,認証機関で電子証明書(X.509)を発行してもらう。~ 認証機関では申請者を確認し,署名要求証明書(CSR)の中身をハッシュ化し,ハッシュ値に対して認証機関の秘密鍵でデジタル署名した電子証明書を作成する。~ - 作成された''電子証明書(X.509)''を受け取り,コンピュータに保管して利用する。~ この電子証明書(X.509)を使ってデジタル署名をすることができる。~ 第3者認証機関にCSRを提出し公的な認証を受ける(電子証明書を発行してもらう)場合,お金がかなりかかる。 なので,テスト使用や個人的なやり取りや社内で使用するだけなどの目的で,デジタル署名をする時に使用する独自の自己電子証明書(X.509)を,勝手に作成してみた。~ もちろんこの勝手に作る電子証明書は,第3者認証機関での身分保証はないので,公的には使用できない。~ * opensslコマンドで自己電子証明書を作成する [#w5c92c0d] OpenSSLはハッシュ・共通鍵暗号・公開鍵暗号・署名などに関する機能を集約したソフトウェア。~ 秘密鍵,公開鍵,サーバ電子証明書,クライアント電子証明書なんかを作成する時に使用できる。~ OpenSSLは[[ここから>https://slproweb.com/products/Win32OpenSSL.html]]Windows版インストーラーをダウンロードし,ダブルクリックでインストールできる。~ [[MSYS2/MinGW-w64>/開発/toolchain/MinGW#xde2a8b1]]環境があれば,パッケージ管理ツールpacmanでインストールできる。~ $ pacman -S mingw-w64-x86_64-openssl mingw-w64-i686-openssl opensslの主なオプション。~ |オプション |説明 |h |version |バージョンを表示。 | |rand |ランダムデータを作成する。 | |enc |エンコードする。 | |genrsa |RSA秘密鍵を作成。 | |rsa |RSA秘密鍵関連の処理をする。 | |req |証明書署名要求および証明書作成。 | |-new |新しく証明書署名要求を作成する。-keyにて指定した秘密鍵を利用して公開鍵を作成する。| |-x509 |証明書署名要求ではなく自己署名証明書を出力する。 | |-in |入力ファイル名を指定する。 | |-out |出力ファイル名を指定する。 | |-pubin |公開鍵を入力。 | |-pubout |公開鍵を出力。 | |-sha512 |証明書のメッセージダイジェストを作成する時にsha512アルゴリズムを指定する。 | |-aes256 |AES256で暗号化する。 | |-binary |バイナリで出力する。 | |-text |テキストで出力する。 | |-base64 |BASE64で出力する。 | |-hex |16進数で出力する。 | |-noout |末尾にPEM(-----BEGIN...)を出力しない。 | opensslで扱うファイルの拡張子。~ |拡張子 |説明 |h |.pem |PEM形式。-----BEGIN ...のファイル。&br;中身は秘密鍵だったり公開鍵だったり電子証明書だったりする。&br;Base64でエンコードしたテキストファイル。| |.key |鍵ファイルで,秘密鍵や公開鍵。&br;ファイルはpemと同じ形式。 | |.pub |鍵ファイルで,公開鍵。&br;ファイルはpemと同じ形式。 | |.csr |証明書署名要求(Certificate Signing Request)&br;RFC2986(PKCS #10)で定められているものをBase64でエンコードしたテキストファイル。 | |.crt, .cer |電子証明書(Certificate)&br;ファイルはpemと同じ形式。 | |.der |[[X.509>https://ja.wikipedia.org/wiki/X.509]]形式の電子証明書や秘密鍵をバイナリ形式で保存したファイル形式。 | |.ppk |PuTTYが扱う鍵ファイル形式。 | ** 秘密鍵の生成 [#w2b6c1d3] 秘密鍵は公開鍵方式のRSAで鍵長を2048bitでパスフレーズ無しで作成する。~ 以下のようにopensslコマンドを使って作成出来る。~ > openssl genrsa 2048 > OreOrePrivate.key ** 自己電子証明書の生成 [#v31bdd80] 作成した秘密鍵で署名した自己電子証明書(X.509)を作成する。~ > openssl req -new -x509 -days 3650 -key OreOrePrivate.key -sha512 -out OreOreCertificate.cer ''-days''オプションで10年間有効な自己電子証明書にしている。~ ''-sha512''オプションで署名アルゴリズムをsha512に指定している。~ 国,県,場所,会社名,部署名,名前,メールアドレスなどを入力する。~ 作成した自己電子証明書OreOreCertificate.cerには,デジタル署名と公開鍵が含まれている。~ *** 自己電子証明書を確認 [#u656aaf3] 作成した自己電子証明書の中身を確認してみる。~ > openssl x509 -in OreOreCertificate.cer -text -noout ** pfxファイルを作成する [#x839bf81] 秘密鍵と自己電子証明書(署名と公開鍵)から,''pfxファイル(個人情報交換ファイル)''を作成する。~ pfxファイルは秘密鍵と対応するX.509形式の電子証明書(公開鍵とデジタル署名)をセットにしたファイルで,Microsoft製品で電子証明書の登録時やデジタル署名をする時なんかによく使われているファイル形式。~ pfxファイルは以下のようにして作成できる。~ > openssl pkcs12 -export -inkey OreOrePrivate.key -in OreOreCertificate.cer -out OreOreCertificate.pfx Windowsマシンの場合,作成されたpfxファイルを用いたり,証明書ストアに登録したりして,アプリケーション等にデジタル署名を追加することが出来るようになる。~ * Microsoftのコマンドを使用して自己電子証明書を作成する [#h51d8c2a] Microsoftのコマンドを使用して自己電子証明書(X.509)を作成出来る。以下の手順で作成する。~ - 自己電子証明書と秘密鍵を作成する。~ これは,makecertコマンドを使用する。~ - 自己電子証明書と秘密鍵を使って個人情報交換(PFX)ファイルに変換する。~ これは,pvk2pfxコマンドを使用する。~ ** 自己電子証明書と秘密鍵を作成する [#de102527] makecertコマンドを使用して,独自の自己電子証明書と秘密鍵を作成する。~ makecertコマンドの使い方は,以下の様になっている。作成する電子証明書ファイル名(拡張子はcer)を指定する。~ > makecert -r -sv <name-of-private-key-file>.pvk -n "CN=<developer-name>" <name-of-certificate-file>.cer -b <start-data> -e <end-date> :-aオプション|署名に使用するダイジェストアルゴリズムを指定する。~ md5, sha1(デフォルト), sha256, sha512が指定できる。~ 古いバージョンのmakecertだと,sha256やsha512は使えない。~ :-rオプション|自己署名ルート証明書を作成したい場合指定する。~ :-svオプション|作成する秘密鍵ファイル名(拡張子pvk)を指定する。~ :-nオプション|証明書の名前を指定する。~ 名前はX.509に準拠する必要がある。簡単にする場合"CN=MyName"を使用する。~ CN=コモン名,O=組織の名前,C=国~ 例:-n "CN=MyName,O=MyAddress,C=JP"~ :-ssオプション|作成された電子証明書が登録されるする証明書ストアの名前を指定する。~ :-peオプション|秘密鍵をエクスポート可能にする。~ 電子証明書に秘密鍵組み込む時に指定する。証明書ストアに登録してデジタル署名をする場合には必要。~ :-equオプション|証明書の拡張キーを設定する。~ コード署名: "1.3.6.1.5.5.7.3.3"~ ライフタイム署名: "1.3.6.1.4.1.311.10.3.13"~ コード署名とライフタイム署名の両方: "1.3.6.1.5.5.7.3.3,1.3.6.1.4.1.311.10.3.13"~ :-bオプション|証明書の有効期限の開始日を指定する。~ 形式は,mm/dd/yyyyになっている。指定しない場合は,作成日になる。~ :-eオプション|証明書の有効期限の終了日を指定する。~ 形式は,mm/dd/yyyyになっている。指定しない場合は,デフォルト終了日:2039/12/31になる。~ 以下のようにして自己電子証明書と秘密鍵を作成した。~ > makecert -r -sv OreOreCertificate.pvk -n "CN=OreOre CA" OreOreCertificate.cer -b 05/01/2016 -e 04/30/2100 コマンド実行すると秘密鍵を暗号化する時に使用するパスワードを聞かれるので,パスワードを入力する。~ その後,確認のためパスワードを再度入力する。~ うまくいくと,自己電子証明書''OreOreCertificate.cer''と秘密鍵''OreOreCertificate.pvk''が作成される。~ ** pfxファイルを作成する [#ladf2460] pvk2pfxコマンド使用して,自己電子証明書と秘密鍵を合成してpfx(個人情報交換)ファイルを作成する。~ 変換する時に,秘密鍵OreOreCertificate.pvkと自己電子証明書OreOreCertificate.cer,秘密鍵を暗号化した時のパスワードが必要となる。~ コマンドの使い方は以下のようになっている。~ > pvk2pfx -pvk <name-of-private-key-file>.pvk -pi <password-for-pvk> -spc <name-of-certification-file-name>.cer -pfx <name-of-pfx-file> -po <password-for-pfx> :-pvkオプション|秘密鍵ファイル名(拡張子pvk)を指定する。~ :-piオプション |秘密鍵のパスワードを指定する。~ :-spcオプション|電子証明書ファイルを指定する。~ :-pfxオプション|出力するpfxファイル名を指定する。~ :-poオプション |pfxファイルのパスワードを指定する。~ 以下のようにしてpfxファイルに変換した。~ > pvk2pfx -pvk OreOreCertificate.pvk -pi xxxxxxxxxxx -spc OreOreCertificate.cer -pfx OreOreCertificate.pfx -po xxxxxxxxxx -f うまくいけば''OreOreCertificate.pfx''ファイルが作成されている。~ Windowsマシンの場合,作成された.pfxファイルを直接利用したり,証明書ストアに登録したりして,アプリケーション等にデジタル署名を追加することが出来るようになる。~ * Windowsの証明書ストアに電子証明書を登録する [#ifddd68f] 上記のどちらかの方法で''pfxファイル''が作成できたら,そのファイルを使って電子証明書をWindowsの証明書ストアに登録する。~ 証明書ストアに登録する理由は,アプリケーション等にデジタル署名を追加する場合,Windowsでは電子証明書を参照するデフォルト場所として証明書ストアを使用しているから。~ また,署名用証明書を証明書ストア登録しておくと,デジタル署名を検証する場合にも使用される。~ 証明書ストアに電子証明書を登録するには,証明書マネージャ(CertMgr.msc)を使用するか,certutilsコマンドで行う。~ 証明書マネージャ(CertMgr.msc)で登録する場合は以下のようにする。~ - Windows + Qキーを押し,''CertMgr.msc''と入力し見つかったらダブルクリックでCertMgr.mscを起動する。~ 「個人」を右クリックし,すべてのタスク>インポートを選択する。~ もしくは,''pfxファイル''をダブルクリックする。~ - 証明書の読み込みウィザードの指示に従って操作を実行する。次へをクリック。~ - 読み込むファイルを聞かれるので,登録したいpfxファイルを選択する。~ - パスワードを入力する。~ 「すべての拡張プロパティを含める」がオンになっていることを確認する。~ - 「証明書をすべて次のストアに配置する」オプションを選択し,次へをクリックする。~ - 「個人」を選択する。~ - 新しい秘密署名キーを読み込むためのダイアログが表示された場合,OKをクリックする。~ 同様にして,署名用証明書''cerファイル''を証明書ストアに登録する。~ - Windows + Qキーを押し,''CertMgr.msc''と入力し見つかったらダブルクリックでCertMgr.mscを起動する。~ 「信頼されたルート証明機関」を右クリックし,すべてのタスク>インポートを選択する。~ もしくは,''cerファイル''をダブルクリックする。~ - 証明書の読み込みウィザードの指示に従って操作を実行する。次へをクリック。~ - 読み込むファイルを聞かれるので,登録したいcerファイルを選択する。~ - 「信頼されたルート証明機関」を選択する。~ - OKをクリックする。~ これで作成した自己電子証明書を証明書ストアの「個人」へ,署名証明書を「信頼されたルート証明機関」に登録された。~ * 自己電子証明書で実行ファイルにデジタル署名する [#hf364b84] 実行ファイルに作成した自己電子証明書を使って,Windowsの実行ファイルにデジタル署名を追加してみる。~ ここでは,Microsoftのsigntoolコマンドを使用してみる。~ コマンドの使い方は以下のようになっている。~ > signtool -fd sha256 -f <name-of-pfx-file>.pfx -p <password-for-pfx> -t <timestamp-server> execute-command :-fdオプション |ファイル署名に使用するアルゴリズムを指定する。~ :-fオプション |pfxファイルを指定する。~ :-pオプション |pfxファイルのパスワードを指定する。~ :-tオプション |タイムスタンプサーバーのURLを指定する。~ 以下のようにしてさsample.exeにデジタル署名してみた。~ > signtool sign -fd sha256 -f OreOreCertificate.pfx -p xxxxxxxxxxx -t http://timestamp.digicert.com sample.exe * 自己電子証明書でPDFファイルにデジタル署名する [#n419b266] 証明書ストア(個人)に登録した自己電子証明書を使って,PDFファイルにデジタル署名を追加してみる。~ Adobe Acrobat Reader(無料版)を使って,PDFファイルにデジタル署名をする場合は以下のようにする。~ - 署名したいPDFファイルをAdcrobat Readerで開く。~ - すべてのツールから「証明書を使用」をクリックする。~ - デジタル署名をクリックし,署名をしたい場所をドラッグする。~ - 署名に使う証明書の選択画面が表示されるので,作成した自己電子証明書をマークをして続行をクリックする。~ - 署名のデザインを指定できるので好みのものを選択する。~ - 署名ボタンをクリックする。~ - 保存するPDFファイル名を指定すれば,署名したPDFファイルが作成される。~ これでPDFファイルにデジタル署名を行うことが出来た。署名のデザインは好みに設定できる。~ 他のアプリケーションでも同様にしてデジタル署名をすることが出来る。 %%Adobe Acrobat Reader(無料版)だとPDFファイルにデジタル署名する場合制限があるので,他のPDFビューワー等を使ったほうが良い。%%~ * 電子証明書をエクスポートして署名した文書と一緒に配布する [#l11089ab] 自己電子証明書を使ってデジタル署名したPDF文書ファイルを相手に渡す場合,受け取った人がそのデジタル署名を検証するために,自己署名証明書を同時に渡す必要がある。~ この自己署名証明書としては自己電子証明書を作成した時に作成された署名用証明書''OreOreCertificate.cer''をそのまま使用できる。~ また証明書ストアに登録してある秘密鍵付の自己電子証明書から,自己署名証明書を作成することも出来る。~ 証明書ストアからエクスポートして自己署名証明書を作成する場合は以下のようにする。~ - ''certmgr.msc''を起動して,証明書ストアの「個人」の該当する自己電子証明書を開く。~ - 詳細タブのファイルにコピーをクリックする。~ 証明書のエクスポートウィザードの開始が表示されるので,次へをクリックする。~ - 秘密鍵はエクスポートしないので,「いいえ」にマークして次へをクリックする。~ - DER...にマークして,次へをクリックする。~ - 保存するファイル名を入力して,次へをクリックする。~ - 完了で検証用の自己署名証明書が作成される。~ 作成したデジタル署名を検証するための自己署名証明書を,PDF文書ファイルと一緒に相手に渡す。 これらを受け取った側では,自己署名証明書を証明書ストアの''信頼済みのルート証明書''に登録することで,PDF文書ファイルのデジタル署名の検証が行えるようになる。~ 当たり前ではあるが,自己電子証明書(オレオレ電子証明書)を使ったデジタル署名なので,検証できたからといって信頼性が高いわけではないのだが・・・ お金をかけないで信頼性が高い公的に通用するデジタル署名をするには,[[マイナンバーカードの署名用電子証明書と秘密鍵を使ってデジタル署名をする>../マイナンバーカードを使ってデジタル署名]]のが良いと思う。~
« Prev
PC/デジタル署名とタイムスタンプ/オレオレ電子証明書の作成 のバックアップ一覧
PC/デジタル署名とタイムスタンプ/オレオレ電子証明書の作成 のバックアップソース(No. All)
1: 2024-03-06 (水) 14:48:45
yuji
現: 2024-03-20 (水) 14:13:40
yuji
Counter: 256, today: 1, yesterday: 1
Copyright©2008 Yuji Ueno All Rights Reserved.
ログイン
ユーザ名:
パスワード:
IDとパスワードを記憶
パスワード紛失
メインメニュー
ホーム
でぶlog
資料室
最新ページ一覧
全ページ一覧
ヘルプ
» 関連ページ
» Wikiソース
» 編集履歴
» バックアップ一覧
» 添付ファイル一覧
フォーラム
お問い合わせ