SSLならコモドのEV・企業・ドメイン認証

SSLならコモドのEV・企業・ドメイン認証

サポート


こちらからサポート記事を検索いただけます

検索キーワード:

署名方法について (コード証明書関連)

コモドのコード証明書は一つで様々なOSのアプリに対応

ソフトウェア・アプリ制作者様は自身のプログラムに署名を行う事によりプロフェッショナルな制作物として利用ユーザーに提供をすることが出来ます。


コモドのコード証明書を購入することでウインドウズ形式の実行ファイル(.exe、.cab、.dll、.ocxなど)Silverlight やPowerShell、Java形式のアプレット(.jar ファイル)アンドロイドアプリ形式の(.apk ファイル) そしてマッキントッシュ形式(.app ファイル)Adobe AIRにも署名することができます。

自身のプログラムコードに署名をすることにより、ユーザに配布ソフトウェアの確実性を目に見える形で提供・保証することができ、プログラムファイルの完全性を提供することができます。

本説明ページでは購入・インストール方法ではなくそれぞれ(windows java Mac)上での署名実行方法をご説明させていただきます。

コード証明書をご取得後に2つのファイルがお手元にあるものとします。秘密鍵 (.pvk) 及び PKCS #7形式の証明書ファイル(.spc)です。これらを PKCS #12形式 (.pfx) のファイルとしてバックアップします。弊社コード証明書を取得した時点で秘密鍵 .pvk 及び証明書 .spc ファイルはブラウザ経由でお客様のPCに自動生成されています。

必要なツール等

.pvk およびand .spc ファイルをつかい .jars や .exes , .appsに署名するツールやその手法は様々ございます。今回は下記の表にて今回使用するツールをリストアップいたします。 詳細につきましては下段のリファレンスより適宣ご入手ください。

ツール名 説明 ツールの提供元 所在
pvk2pfx 秘密鍵.pvk と 証明書.spc から .pfxファイルを生成。 Microsoft SDK Windows\vx.x\Bin
signtool 実行ファイル .exe等を署名するツール Microsoft SDK Windows\vx.x\Bin
keytool Java キーストアの作成・管理ツール Oracle Java SDK /bin
pkcs12import .pfx をJava キーストアにインポートするツール Java Web Services Developer Pack Sun/jwskp-2.0/xws-security/bin
jarsigner .jar .apk ファイルの署名ツール Oracle Java SDK /bin
Keychain Access Mac上でのキーチェーンを管理するアプリツール Mac OS/X /Applications/Utilities
codesign Mac上での.app ファイルを署名するツール Mac OS/X

/usr/bin/codesign

 

PVK と SPC より PFXを作成

利用可能な署名ツールは数多く存在します(文末参照)がそれらに共通して必要な形式は.pfx(PKCS #12形式)のファイルを必要とします。 まず最初にお手元の.pvkと.spcファイルから.pfxファイルを作成してください。 マイクロソフトSDK(開発キット)では、この変換機能を有するpvk2pfxツールが同梱されています。(マイクロソフト公式ドキュメント参照)

pvk2pfx /pvk pvkファイル名.pvk [/pi pvkパスワード] /spc spcファイル名.ext [/pfx pfxファイル名.pfx [/po pfxパスワード] [/f]]

実行例:

pvk2pfx -pvk mypvkファイル.pvk -pi mypvkパスワード -spc myspcファイル.spc -pfx mypfxファイル.pfx -po mypfxパスワード -f

このコマンドは.pvkファイルと.spcファイルで、パスワード付きの.pfxを作成します。(注:.pfxパスワードは任意で.pvkパスワードと同一に設定することができます)。


ファイルの署名は (windows上のみで実行可能です)

.pfxファイルがあればすぐにでもWindowsプログラムコード(例 .exeファイル)に署名することができます。(いくつかはGUIでの操作が可能ですが)基本的操作方法はマイクロソフトSDKからsigntool.exe を使用します。たとえば次のように実行します。:

signtool [コマンド] [オプション] [ファイル名 | ...]

実行例:

signtool sign /f mypfxファイル.pfx /p mypfxパスワード /d "My Description" /t http://timestamp.comodoca.com/authenticode myWindowsファイル.exe

このコマンドでは、コモドにより提供されるタイムスタンプサーバを指定し 「myWindowsファイル.exe 」とタイムスタンプに署名を実行します。


<target name="signMyExe" description="Signs my exe"> <exec dir="." executable="${microsoftSDK}/signtool.exe" failonerror="true"> <arg value="sign" /> <arg value="/f" /> <arg value="mypfsファイル.pfx" /> <arg value="/p" /> <arg value="mypfxパスワード" /> <arg value="/d" /> <arg value=""My Description"" /> <arg value="/t"/> <arg value="http://timestamp.comodoca.com/authenticode" /> <arg value="myWindowsファイル.exe" /> </exec> </target>

プロパティ ${microsoftSDK} は次のように定義します。

<property name="microsoftSDK" location="C:/Program Files/Microsoft SDKs/Windows/v7.1/Bin" />

ビルドファイルおよび.pfx と .exe は同一のパスに存在している事をご確認ください。

Java キーストアKeystore

Java形式の .jarファイルに署名するには、少しの事前準備が必要です。Java形式の.jarファイルは、keystoreに含まれるキーを使って署名されます。Java キーストアは一組のキーを含むファイルのため、証明書を既存のkeystoreにインポートするもしくは、新しくkeystoreを作成する等が必要となります。 ここでは新たに.jarファイルに署名することを想定し新しくkeystoreを作成する手順をご説明いたします。 Java SDK(開発キット)では、keystoresを管理する機能を提供する「keytool.exe」と呼ばれているユーティリティを提供します。 残念ながら、作成時には空のキーストアを作成することはできません。 初回作成時にはキーを提供する必要がありますのではじめてキーストアを作成する場合には一時的に自己認証鍵で実行してください。後で一時利用の鍵を削除することで、下記の手順でkeystoreを作成してください。:

keytool.exe -genkey -alias temp -keyalg RSA -keysize 2048 -dname "CN=et,OU=ET,O=ET,L=Vancouver,S=BC,C=CA" -keypass temporary -keystore mykeystore.keystore -storepass  mykeystoreパスワード

このコマンドは仮領域(temp)で秘密鍵と仮のパスワード「mykeystoreパスワード」をつかい 「mykeystore.keystore」という名前でキーストアを作成します。

次のコマンドで、仮領域(temp)の秘密鍵はキーストアから削除され、お手元の証明書キーを使用するためにkeystoreを空にしておきます。

keytool.exe -delete -alias temp -keystore mykeystore.keystore -storepass mykeystoreパスワード



Java キーストアに証明書を追加する方法

空のJava keystoreができましたら次に、コード証明書をそれにインポートしてください。pkcs12importを使用して実行できます。このコマンドユーティリティはJava Web Services Developer Packの一部として提供されています。
コマンドは以下のように実行してください:

pkcs12import -file mypfxファイル.pfx -pass mypfxパスワード -keystore mykeystore.keystore  -storepass mykeystoreパスワード -keypass mypfxパスワード -alias mykeyalias

このコマンドはmypfxファイル.pfxをキーストアにインポートしパスワード「mypfxパスワード」で安全に保護しています。(本手順の場合、分かりやすくに、 .pfxの元々と同じパスワードを使用していますが適宣ご希望のパスワードをご指定ください。).

.jar ファイルへの署名方法

証明書はkeystoreインポートされた段階で、遂に.jarファイルに署名を実行します。 Java SDKにはjarsignerが含まれてますので、これを実行します:

jarsigner -keystore mykeystore.keystore -storepass mykeystoreパスワード -keypass mypfxパスワード myJar.jar mykeyalias

このコマンドを実行することで jar ファイル「myJar.jar」を 秘密鍵エイリアスmykeyaliasとキーストア( mykeystore.keystore )内に含まれるパスワード( mypfxパスワード )で署名します。

次のようにant ビルドスクリプトから実行することができます。:

<target name="signMyJar" description="Signs the jar file"> <signjar jar="myJar.jar" alias="mykeyalias" keypass="mypfxパスワード" keystore="mykeystore.keystore" storepass="mykeystoreパスワード" verbose="false"> </signjar> </target>

この段階で Mac OS/X 開発ツールからcodesign コマンドを使いお手元の.app ファイルを署名することができます。


アンドロイドアプリ(.apk) ファイルへの署名方法

上述同様にkeytoolで証明書(mykeystore.keystore)を使用しアンドロイド用アプリapkファイルに署名するにはjarsignerを使用します。

jarsigner -verbose -keystore [証明書ファイル] [署名するandroidアプリパッケージ] [秘密鍵エイリアス]

実行例、d:\tmpディレクトリにあるmykeystore.keystoreファイル証明書を使用してd:\tmpディレクトリにあるアプリtestapp.apkに署名をつけています。(秘密鍵エイリアスmykeyalias)

jarsigner -verbose -keystore d:\tm\mykeystore.keystore d:\tm\testapp.apk mykeyalias コマンドを実行すると証明書を作成した時に設定したキーストアパスワードを要求されるので入力します。

jarsignerコマンドでアプリ(.apkファイル)についている署名の検証ができます。

jarsigner -verify -verbose -certs testapp.apk

Mac .app bundles (Mac OS/X のみ対応)での署名方法

Macシステム上でプログラムに署名するには、お手元のコード証明書をMac keychainにインポートする必要がございます。MacのキーチェーンはJava keystoreでの作業と同様です。; さまざまな証明書、パスワード、他の情報のを保護するリポジトリです。 マック上でコード証明書をキーチェーンにインポートする最も簡単な方法は.pfxファイルをダブルクリックするだけで自動的にユーザの既定キーチェーンにインポートされます (注意:インポート時には.pfxファイルのパスワードが聞かれますそれを入力すると Keychain アクセスアプリケーションにインポートできます。)

この段階で Mac OS/X 開発ツールからcodesign コマンドを使いお手元の.app ファイルを署名することができます。 このコマンドの一般的な実行例は以下の通りです。

codesign -s identity [-f] [パス ...]

identityはKeychain Access アプリ上のコード証明書に記載の名前(一般名)

実行例:

codesign -s "My Name" -f myApp.app

既定のキーチェーンで指定された名前My Nameにてコード証明書を使いアプリケーションバンドル内の myApp.app を署名することができます。

次のようにant ビルドスクリプトから実行することができます。:

<target name="signMyApp" description="sign my app"> <exec dir="." executable="/usr/bin/codesign"> <arg line="-s "My Name" -f myApp.app" /> </exec> </target>

 

フロー図

以下は.exe, .jar and .appを署名するための動作をまとめたフロー図

Code Signing Process Flowchart

 

リファレンス

Microsoft Windows SDK: (Microsoft Windows 開発ツール)
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=6b6c21d2-2006-4afa-9702-529fa782d63b&displaylang=en

Oracle Java SDK: (Java 開発ツール)
http://www.oracle.com/technetwork/java/javase/downloads/index.html

Java Web Services Developer Pack: (Java web services 開発ツール)
http://www.oracle.com/technetwork/java/index-jsp-136025.html

Apache Ant: (ソフトウェアビルドツール)
http://ant.apache.org/

SignGUI: (Microsofts 署名ツールをGUI操作するフロントエンド)
http://www.briggsoft.com/signgui.htm

TechPro CodeSign: (Microsoftコマンドライン署名ツール用のGUIシェル )
http://www.tech-pro.net/codesign.html

Portecle: (Java キーストアを作成・管理・テストするためのGUIアプリ )
http://portecle.sourceforge.net/

サポートトップへ

インストール関連

署名方法について

トラブルシューティング

その他