CAの証明書を使用したドライバの署名について

認証局(CA)が発行するデジタルIDを使用したドライバの署名は
Windows Server 2003以降のサポートとなっています。

そのためWindows XPでは署名されていないドライバとして
扱われ、ドライバのインストール時に警告ダイアログが
表示されてしまいます。

XPでこの警告ダイアログを表示させないためには、WHQLのロゴを
取得する必要があります。

このページがこのま

このページがこのまま残っていると誤解を生みますので、補足します。
補足の要点は次の通りです。

1.ここまでの記述は以前私が遭遇して検証した、Windows Vista with SP1 (x86)クリーン・インストール時の「GlobalSignによるSPC署名のドライバ」の問題点に関してのものです。
Windows XP等の他のOSに関しての挙動については、触れていません。

2.Windows XP SP1/SP1a以前と、Windows XP SP2以降/Windows Server 2003と、Windows Vista 以降ではSPC署名付ドライバのインストール対する挙動が異なります。
(Windows 2000 もまた異なりますが、ややこしくなるのでここでは触れません)

せっかくなので、Windows XP系ではどうなのかをWindows Vista以降と比較して書きます。

1.Windows XP SP1/SP1a以前
SPC署名を認識しません。

2.Windows XP SP2以降/ Windows Server 2003
セットアップ先のクラスによって挙動が異なります。

3.Windows Vista以降
セットアップ先のクラスに関わらず、SPC署名を認識します。

(Windows XP SP2以降/ Windows Server 2003 補足説明)
Windows Vistaより前のWindows XP SP2などのWindows Server 2003以降のOSでは、Authenticodeデジタル署名が使えますが、次の点に注意する必要があります。
- Authenticodeデジタル署名はとそれの確認を求めるメッセージは、ドライバがテストをパスしたことは示しません。
- セットアップ対象のデバイスのクラス(具体的にはデバイスマネージャのノード)が、Windowsロゴ対象のクラスであればWindowsロゴのデジタル署名がだけが、警告対象外となりSPC署名付ドライバは署名無しドライバと同等に扱われます。これがWindows XP SP2以降 / Windows Server 2003 のSPC署名付ドライバで注意すべき点です。
- 逆にWindowsロゴ対象外の独自クラスを作ってデバイスをその下にインストールする場合や、USBコントローラ等のクラスのデバイスのインストールの場合には、SPCによる署名が有効になり「赤い警告」は出ません。ただしDPInstall等のインストーラによるインストール動作では、Windowsロゴの署名とは異なり、確認無しで自動的に進行はしません。

(参考文献)
dpinstによるセットアップでWDFとWDMで挙動が違う
http://wdddc.net/node/67?page=1

Authenticode を使用して、Windows Server 2003 用のドライバ パッケージにデジタル署名する
http://www.microsoft.com/japan/whdc/driver/install/authenticode.mspx

だいぶわかって来ま

だいぶわかって来ました!

対応を促進するために、問合わせの内容を再度、確認、整理してまとめているうちに、Windows Update に先を越されてしまったようです。

# もしも先日私が某氏に伝えた一言だけで、この問題が対応されたのだとしたらば、それはすごいことですが...

検証したところ、現在では、最新のWindows Updateを適用することで、
Windows Vistaでも、x86でも、Windows XPでも、CA認証による、SPC(ソフトウェア・パブリッシャー証明書)が
有効になり、ドライバのインストール時に警告ダイアログが出なくなります。(確認ダイアログは出ます)

参考までに書きますと、今回動作を検証したのは、うちで取得したGlobalSignの証明書に関してだけです。

問題点は特定のOSインストール直後の「信頼されたルート証明機関」の証明書に、コード署名用証明書として、
特定機関(GlobalSign)の有効な証明書が事前インストールされていないという事が原因でした。
Windows XPにはGlobalSignのほか、他社CAのコード署名用証明書も最初は入ってないのかも知れません。
あるいはコード署名認証用の仕組みが、最近まで正しく動かなかった可能性もあります。

そしてこの問題点は(恐らく最近たぶん今年9月頃の)Windows Updateの「ルート証明書の更新プログラム」(など?)によって追加修復されるようになりました。

現時点で分かっていることを以下にまとめます。
Windows Vista x86 (SP無し) =VeriSign,CyberTrust,GlobalSignのコード署名用証明書が事前インストールされています
Windows Vista x64 (SP無し)=VeriSign,CyberTrust,GlobalSignのコード署名用証明書が事前インストールされています
Windows Vista x86 (SP1)=VeriSign,CyberTrustのコード署名用証明書が事前インストールされています(GlobalSignの証明書が抜けています)
Windows Vista x64 (SP1)=VeriSign,CyberTrust,GlobalSignのコード署名用証明書が事前インストールされています

なぜWindows Vista x86 (SP1)でだけ、GlobalSignの証明書が初期インストール時に抜けているのかは、わかりませんが、
Windows Vista x86 With SP1インストール直後に、GlobalSignによるSPC署名のドライバをインストールすると、警告ダイアログが出る訳です。
Windows Vista x86(SP無し)や、SP無しからのUpdateだと、この問題は起きません。勿論x64でも起きません。

Windows XPに関してはまだ良く調べていませんが、Windows Update適用により治った(?)訳ですから、Windows Vistaと似たようなことが起きていたと想像できます。Windows XPはご存じのように、インストール直後にSPC署名のドライバをインストールすると、警告ダイアログが出ます。それが今年9月頃(8月か7月かも?)のWindows Updateの「ルート証明書の更新プログラム」などを適用すると出なくなり、確認ダイアログに変わります。

あとは、どのUpdate Patchがこの問題に対応するかが分かれば、ピンポイントで証明書問題への対応ができると思うのですが、完全に判明するまでは、なかなか厄介です。

Windows XPでこの警告ダイアログを表示させないようにするためだけに、ロゴ取得の必要なくなりましたが、それでもWindows Update適用が必須というの点は、まだまだハードルですね。

hidaka

そのはずなのですが

そのはずなのですが、なぜかWindows Vista SP1 32bit版でも警告ダイアログが
表示されてしまいますので、問合わせ中です。

hidaka