WinUSBをインストールするカタログファイルへの署名について

初めて質問させていただきます。

署名用PC Windows Xp Professional SP3 32bit
ターゲットPC Windows 7 HomePremium 64bit

現在USB接続するデバイスのドライバとしてWinUSBを使用することを検討しておりますが
CA様のデジタル証明書で署名したときにうまくいきません。

テスト用の証明書では、自作したインストーラとカタログファイルを署名した後ターゲットPCで
 ・ドライバのプリインストール
 ・デバイスを接続したときにドライバがインストールされる
 ・デバイスと正しく通信ができる
ことを確認しました。

続いて本番で使用することを考えてGlobalSign社様よりMS AutherntiCode対応コードサイニング証明書を
購入しまして、インストーラとカタログファイルに署名を行い、ターゲットでインストールを行いました
がうまくいきません。
インストーラを起動しますと、DriverPackagePreinstall()APIがエラー0xE0000242を返します。
setupapi.dev.logファイルにてエラー内容を確認しますと
Verifying file against specific (valid) catalog failed! (0x800b0109)
Error 0x800b0109: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.
となっております。

GlobalSign社様に確認しまして、「Windows Vistaのカーネルモードのコード署名用Microsoftクロス証明書」を使用しまして
カーネル用に正しく署名されていることを確認していただきました。
これは「Signtool verify /kp /v filename.cat」コマンドの出力内容を確認していただきました。

長々と書かせていただきましたが確認したいことは
 ・WinUSBをインストールする際に、カタログファイルに署名するだけでよいのでしょうか?
  もしくは何らかの手続きが他に必要なのでしょうか?

 ・カタログファイルに署名するだけでよいのであれば、このエラーの発生原因は何でしょうか?
  また、どのように回避を行えばよいのでしょうか?

 ・現在は自作のインストーラでDriverPackagePreinstall()APIを使用してプリインストールしていますが
  DPInst.exeを使用するほうがよいのでしょうか?
  なお、DPInst.exeを使用しなかった理由は調査する手間を省きたかったためです。

どなたかお分かりになりましたら、ご教授いただけますようよろしくお願いします。

回り道をさせてしま

回り道をさせてしまったようで、大変申し訳ありません。

>Figure 10のダイアログが表示されます”と書かれています。

このダイアログでしたらば、SPC署名(Global Sign等のCAの署名)時には、「常に信頼する」にチェックをしない限りは出ます。

色々と調査しまして

色々と調査しまして、CAの証明書のみではWindowsセキュリティ画面を表示せずにドライバの
インストールを行うことはできないのかなと思います。
Code-Signing Best Practices 23ページを見ますと、”「信頼された発行元」に入っていない
証明書の場合はFigure 10のダイアログが表示されます”と書かれています。
自分の場合もこのダイアログが表示されますし、証明書は「個人」にインストールされていますので
おそらく表示される仕様なのだと結論しました。

そのようなことは無いはず・・という意見がありましたらまた教えてください。
それを元に調べてみたいと思います。

ご回答いただき、あ

ご回答いただき、ありがとうございます。

いろいろと案を出していただきまして、ありがとうございます。
現状では1つ1つ試していっておりますが、残念ながら解決に至っておりません。

>>1.WDK は最新版の7.1.0(7600.16385.1)を使用して、INF2CATのOSパラメータを正しく指定しているか。

WDKは最新のものを使用しております。7600.16385.1であることを確認しました。
INF2CATのパラメータに関しては、ただしくカタログファイルが作成されている
ことから間違いはないと思いますが以下のようにしております。
inf2cat /driver:"infファイルのあるフォルダ名" /os:7_x64

>>2.カタログファイル作成後に、INFファイルやwinusbcoinstaller2.dllを入れ替えてないか。
入れ替えておりません

>>3.別の環境で署名しても同じ現象が発生するか。
32ビット環境で署名を行っておりましたが、ターゲットパソコン(64bit Win7)で署名を行いましたが改善しませんでした。

>>4.別の環境にインストールしても同じ現象が発生するか。
1台しか64ビットOSのパソコンがないため現状は行えておりません。
後日テスト予定です。

>>5.自前のINFファイルではなく、他のWDK サンプルドライバをビルド後、署名してインストールしても同じ現象が発生するか。
WDKにはWinUSBのサンプルのinfファイルやカタログファイルが見当たりませんでした。
どこかにあるのでしょうか?
USB Completeの Jan Axelson氏のHPからC#用サンプルのinfファイルをDLし、これを元にカタログファイルを作成、署名しましたが改善しませんでした。

>>6.署名時に指定するTimeServerを変更しても同じか。(GlobalSign と VeriSignの2種類のTimeServerが利用できるはずです)
両方試してみましたが改善しませんでした。

ドライバでは署名した後マイクロソフトのテストにパスしなければインストール時にエラーになるという
記述を読んだ記憶があるのですが、WinUSBをインストールするカタログファイルもこのテストに
パスする必要があるのでしょうか?
WHQLの認定がいるのでしょうか?

何か情報がありましたら教えていただけますようお願いします。

私の過去の経験では

私の過去の経験では、SPC署名では前述のWindows Vista with SP1側の問題以外では、一回も問題が発生したことはなく、ほとんどアドバイスすることはできません。それだけSPC署名の機構と動作は安定していると、認識しています。

特に、署名後のカタログファイルが正しく署名されていることをGlobalSign社に確認して貰っているとのことであれば、なおさらです。
以下思いつくまま対策案を書いて見ます。

1.WDK は最新版の7.1.0(7600.16385.1)を使用して、INF2CATのOSパラメータを正しく指定しているか。
2.カタログファイル作成後に、INFファイルやwinusbcoinstaller2.dllを入れ替えてないか。
3.別の環境で署名しても同じ現象が発生するか。
4.別の環境にインストールしても同じ現象が発生するか。
5.自前のINFファイルではなく、他のWDK サンプルドライバをビルド後、署名してインストールしても同じ現象が発生するか。
6.署名時に指定するTimeServerを変更しても同じか。(GlobalSign と VeriSignの2種類のTimeServerが利用できるはずです)

いずれも今回の問題究明に役立つとはあまり思えませんが、他に確認するとしたらばこの程度しかないかと思います。

ご回答いただきあり

ご回答いただきありがとうございます。

>>今回のケースでは最新のWindows Updateを全て実行して、ルート証明書の更新をすることは試されましたか?

はい、Windows7のクリーンインストール後、Windows Updateを行っております。
また、署名したカタログファイルの証明書を表示して、GlobalSignのルート証明書まで
パスが通っていることを確認すると共に、ルート証明書の有効期限が切れていないことを
確認しました。
GlobalSign Root CA 有効期限2028/01/28

他に確認すべき事項がありましたら、教えていただけますようお願いします。

まずは、話を整理し

まずは、話を整理しましょう。

DPInstの件は、署名とは直接関係ないので後回しです。
というか、署名が正しく認識されれば解決すると思われます。

> Error 0x800b0109: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.

というエラー内容を見ると、インストールを試みた際に認識した署名と関係づけられる、ルート証明書が信用できないと言っているようです。
以前、Windows Vista with SP1 をクリーンインストールすると、GlobalSignのルート証明書が入っていないという問題を発見したことがあります。
その時は、Windows Updateを実行することで最新のルート証明書がインストールされて、無事に解決しました。
詳細に調べたことはないので、個別ケースについては良く知らないのですが、ルート証明書には有効期限がある場合もあります。
今回のケースでは最新のWindows Updateを全て実行して、ルート証明書の更新をすることは試されましたか?

> ・WinUSBをインストールする際に、カタログファイルに署名するだけでよいのでしょうか?
>  もしくは何らかの手続きが他に必要なのでしょうか?

カタログファイルのほかの署名対象は、INFファイルでインストールするもの全てです。
ただしwinusbcoinstaller2.dllはMicrosoftがすでに署名済ですので、これに再度署名してはいけません。
今回の場合はWinUSBだけと思われるので、おそらくカタログファイルだけが署名対象だと思います。

DPInstを試してみまし

DPInstを試してみました。
これでWinUSBのインストールを行いますとターゲットパソコン(Win7 64bit)で
・ドライバのプリインストールが行える
・デバイスを挿入すると、ドライバのインストールが行われる
・アプリケーションの追加と削除で削除できる
ことを確認しました。
しかし、プリインストール中にWindowsセキュリティ画面が表示されてしまいます。
これが表示されないようにするにはカタログファイルにどのような署名、もしくは
操作を行えばよいのでしょうか?
それともWinUSBをインストールする際に、この表示を抑制する手段はないのでしょうか?

どなたかお分かりになりましたら、ご教授いただけますようよろしくお願いします。