コード署名とテストのためのツール

MakeCert、Cert2SPC、および Signcode は、コードに署名したり、コードのテストをするためのツールです。これらのツールは、\Program Files\IEAK\Reskit\Tools フォルダに入っています。 Microsoft Internet Client SDK には、そのほかの追加リソースがあります。

MakeCert

MakeCert テスト プログラムは、テスト X.509 証明を作成するために使います。MakeCert は、次のことを行います:

  1. デジタル署名のためのパブリック キー、またはプライバシ キーを作成し、選択した名前と関連付けます。
  2. キーを選択した発行者の名前と関連付けます。
  3. X.509 証明を作成し、テスト ルート キーによって、または指定したキーによって署名されます。証明は、ファイル、またはシステム証明、あるいはその両方で出力されます。

MakeCert の構文:

MakeCert [基本オプション| 拡張オプション] 出力ファイル

MakeCert は、基本オプション拡張オプションを提供します。基本オプションは、証明を作成するために最もよく使われるオプションです。拡張オプションは、より柔軟性を与えます。MakeCert のオプションは、次の 3 つの機能的なグループに分けられます:

  1. SPC ファイル、プライベート キー、および証明の保存に適用するオプション
  2. SPC ファイルとプライベート キーのためのオプション
  3. 証明の保存のためのオプション

上記のグループ 2 と 3 でのオプションは、ic オプションを使うことによって両方指定できます。

6.4 MakeCert Internet Explorer 4.0 の例

次は、Internet Explorer 4.0 のオプションを使った MakeCert で書証明を作成する例です。

例 1

標準のテスト ツールによって、証明を作成します。証明をファイルに保存します。

MakeCert myNew.cer

例 2

証明を標準のテスト ルートによって公表できるようにします。証明の保存先に保存します。

MakeCert -ss myNewStore

例 3

証明を標準のテスト ルートによって公表できるようにします。.pvk ファイルを作成し、証明を保存先とファイルに出力します。

MakeCert -sv myNew.pvk -ss myNewStore myNew.cer

例 4

証明を標準のテスト ルートによって公表できるようにします。キー コンテナを作成し、証明を保存先とファイルに出力します。

MakeCert -sk myNewKey -ss myNewStore myNew.cer

例 5

証明を標準のテスト ルートによって公表できるようにします。証明を保存先に保存します。そして、新しく作成された証明を使って、別の証明を作成します。その証明を別の保存先に保存します。

MakeCert -sk myNewKey -ss myNewStore MakeCert -is myNewStore -ss anotherStore

例 6

証明を標準のテスト ルートによって公表できるようにします。証明を my という保存先に保存します。そして、新しく作成された証明を使って、別の証明を作成します。my には、2 つ以上の証明があるため、最初に作成した証明を共通の名前を使って識別します。

MakeCert -sk myNewKey -n "CN=XXZZYY" -ss my MakeCert -is my -in "XXZZYY" -ss anotherStore

例 7

証明を標準のテスト ルートによって公表できるようにします。証明を my という保存先とファイルに保存します。そして、新しく作成された myNew 証明を使って、別の証明を作成します。my には、2 つ以上の証明があるため、最初に作成した証明のファイル名を使って識別します。

MakeCert -sk myNewKey -n "CN=XXZZYY" -ss my myNew.cer MakeCert -is my -ic myNew.cer -ss anotherStore

例 8

標準のテスト ルートを使って myNewRoot という名前の自分で署名した証明を作成します。そして、ファイルに署名するために証明の SignCode を使います。

MakeCert -sk myNewRootKey -r -ss myNewRoot SignCode -s myNewRoot myControl.exe

例 9

標準のテスト ルートを使って myNewRoot という名前の自分で署名した証明を作成します。システムの証明の保存先 camyNewRoot を保存します。Then make a certificate from myNewRoot から証明を作成し、証明を使って、コードに署名します。

SignCode が署名するために、保存先の証明を使った場合、署名の証明からルートにまで証明を製造します。これらすべての証明は mycaspc、または root のいずれかである必要があります。この場合、ca 証明の保存先に、myNewRoot が保存されます。

MakeCert -sk myNewRootKey -r -ss ca myNewRoot.cer MakeCert -is ca -ic myNewRoot.cer -ss myNewSign SignCode -s myNewSign myControl.exe

Cert2SPC

証明を作成したら、Cert2SPC を使って SPC (ソフトウェア公開証明) を作成できます。このプログラムは、署名データ オブジェクト PKCS #7 に複数の X.509 を入れます。ただし、このプログラムの目的はテストのためだけにしか使用できません。有効な SPC が CA から得られます。

Cert2SPC の構文:

Cert2SPC cert1.cer cert2.cer. . .certN.cer output.spc

説明:

例:

Cert2SPC MyCert.cer MyCert.spc

これは、X.509 証明 を含めます。PKCS #7 SPC に含まれる MyCert.cerMyCert.spc と呼びます。

SignCode

最後の手順は、プログラムを使って実際にファイルに署名します。このプログラムでは、次のことをします:

  1. ファイルの暗号のためのダイジェストを作成します。
  2. プライベート キーを使ってダイジェストへ署名します。
  3. 新しく署名されたデータ オブジェクト PKCS #7 に SPC から X.509 証明をコピーします。PKCS #7 オブジェクトには、通し番号が含まれます。そして、証明の発行者によって、署名、証明、および署名されたダイジェスト情報を作成されます。
  4. ファイルにオブジェクトを埋め込みます。
  5. ファイルに日付を追加します (オプション)。ファイルが署名されると、常に日付が追加されます。ただし、SignCode は、制限を受けている以前に署名されたファイルにも日付を追加することができます (次の例を参照してください)。

SignCode の構文:

SignCode [オプション] [ファイル名]

説明: