トップ回答者
infファイルのデジタル署名

質問
-
お世話になります。
過去の質問にあった「Windows8 x64環境での仮想COMポート(CDC)ドライバのインストールについて」と同じ質問になってしまうかもしれませんが、当方はドライバ周りに疎いハードウェア設計者でして、質問させてください。
USB製品を考えていまして、CDCとしてPCに認識させ、usbser.sysを使ってコンソールアプリで動作させようと考えているのですが、windows8以降(?)infファイルにもデジタル署名が必要と知りました。というわけで、いろいろ検索してみたのですが、infファイルに署名をしている例や方法を見つけることができませんでした。
そこで、下記教えていただけますでしょうか。
・infファイルへのデジタル署名もCA機関(コモドジャパン等?)から、コード証明書を購入する必要があるのでしょうか?
(ドライバ本体やアプリ自体ではないため、年間数万円の出費に躊躇しています。)
・もしくはsignTool.exeで自己証明で良いのでしょうか?その場合は、visual studioを購入する必要がありますか?
(こちらにしても、そのためだけに購入するのか、、と躊躇してしまっています。)
・その他にinfファイルに対してデジタル署名を行う方法はありますでしょうか。
もしかすると、ちんぷんかんぷんなことを書いてしまっているかもしれませんが、よろしくお願いいたします。
回答
-
・infファイルへのデジタル署名もCA機関(コモドジャパン等?)から、コード証明書を購入する必要があるのでしょうか?
・もしくはsignTool.exeで自己証明で良いのでしょうか?一般に配布する場合で、64bitOSを対象にするのであればコード証明書は購入する必要があります。
・visual studioを購入する必要がありますか?
VisualStudioを購入する必要はありません。
ただしWindows8/8.1を対象にできるinf2cat.exeがWDK8以降に入っているため、VisualStudioのインストール済み環境にWDKをインストールしてinf2catを入手する必要があります。
この場合でも無料のVisualStudio 2013 Express for DesktopであればWDK8.1をインストールできます。inf2catはc:\program files(x86)\Windows kits\8.1\bin\x86にあります。VisualStuioやWDKの他ファイルは使いません。
(最低inf2cat.exe,inf2cat.manifestとMicrosoft.*.dllがあればいい)
・その他にinfファイルに対してデジタル署名を行う方法はありますでしょうか。
INFファイルに直接は署名しません。INFファイルからCATファイルを生成し、そのCATファイルに署名をします。
WDKに入っているinf2cat.exeを使用して、inf2cat /driver:"INFファイルの置いてあるフォルダへのパス" /OS:X8_64,X8_86,6_3_X86,6_3_X64
のようにコマンドラインで実行するとそのフォルダにCATファイルが生成されます。
そしてsigntool.exを使用してsigntool sign /a /ac "クロス証明書へのパス" /t タイムスタンプサーバのURL "CATファイルへのパス"
のようにして署名します。(/aオプションのところは署名ファイルをPFXで持っている場合などに応じて変えます)
購入した証明書発行機関に一致するクロス証明書はカーネル モードのコード署名用クロス証明書から入手します。
詳しくは、ドライバーへの署名やデバイス ドライバー パッケージに署名する手順を読んでください。
この一覧にない発行機関の証明書は署名に使えません。個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
すべての返信
-
・infファイルへのデジタル署名もCA機関(コモドジャパン等?)から、コード証明書を購入する必要があるのでしょうか?
・もしくはsignTool.exeで自己証明で良いのでしょうか?一般に配布する場合で、64bitOSを対象にするのであればコード証明書は購入する必要があります。
・visual studioを購入する必要がありますか?
VisualStudioを購入する必要はありません。
ただしWindows8/8.1を対象にできるinf2cat.exeがWDK8以降に入っているため、VisualStudioのインストール済み環境にWDKをインストールしてinf2catを入手する必要があります。
この場合でも無料のVisualStudio 2013 Express for DesktopであればWDK8.1をインストールできます。inf2catはc:\program files(x86)\Windows kits\8.1\bin\x86にあります。VisualStuioやWDKの他ファイルは使いません。
(最低inf2cat.exe,inf2cat.manifestとMicrosoft.*.dllがあればいい)
・その他にinfファイルに対してデジタル署名を行う方法はありますでしょうか。
INFファイルに直接は署名しません。INFファイルからCATファイルを生成し、そのCATファイルに署名をします。
WDKに入っているinf2cat.exeを使用して、inf2cat /driver:"INFファイルの置いてあるフォルダへのパス" /OS:X8_64,X8_86,6_3_X86,6_3_X64
のようにコマンドラインで実行するとそのフォルダにCATファイルが生成されます。
そしてsigntool.exを使用してsigntool sign /a /ac "クロス証明書へのパス" /t タイムスタンプサーバのURL "CATファイルへのパス"
のようにして署名します。(/aオプションのところは署名ファイルをPFXで持っている場合などに応じて変えます)
購入した証明書発行機関に一致するクロス証明書はカーネル モードのコード署名用クロス証明書から入手します。
詳しくは、ドライバーへの署名やデバイス ドライバー パッケージに署名する手順を読んでください。
この一覧にない発行機関の証明書は署名に使えません。個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
-
フォーラム オペレーターの星 睦美です。
gekka さん、返信ありがとうございます。
shiitake105 さん、gekka さんからの回答が役立ったのではないかと思います。
回答の内容は今後もフォーラムで参考になる情報だと思いますので今回は私のほうで[回答としてマーク] させていただきました。
次回フォーラムで役立つ回答がありましたら、投稿者から[回答としてマーク] いただければ回答者の励みになります。
それではこれからもMSDN フォーラムをよろしくお願いします。フォーラム オペレーター 星 睦美 - MSDN Community Support