INF ファイルの署名が必要なだけでなく、.sys ファイルなどの埋め込み署名に使用するのと同じものではなく、WHQL証明書によって署名される必要があります。INF ファイルでコード署名証明書を使用しても、まったく機能しませんでした。(署名されていない場合と同じ問題。)
編集:
これがマイクロソフトがあなたに考えてほしいことです。彼らは、ドライバーの特定のクラスは WHQL で署名されている必要があり、署名されていないと機能せず、Authenticode署名は WHQL プロセスを持っていないユーザーに対してのみ機能すると述べています。
Authenticode でドライバー パッケージに署名できることがわかりましたが、カーネル コードと同じように注意して署名する必要があります。つまり、CAの正しいクロス証明書を取得する必要があります( Cross-Certificates for Kernel Mode Code Signingから、たくさんあります)。 (クラス 2、2 年間で 60 米ドルですが、タイムスタンプを付けることができません) このクロス証明書を提供します (CA の自己署名証明書または中間証明書とは異なります)。その MSDN ページでのみ使用できます) 、スイッチを介してSignTool/ac
に接続します。
次に、スイッチで SignTool verify を使用して、/kp
クロス署名が適切に行われたかどうかを確認します。スイッチを使用しない SignTool 検証では、.cat ファイルが WHQL 署名されている必要がありますが、/pa
以前は問題ないように見えたスイッチが緩すぎて、ドライバー以外の署名 (EXE ファイル、ClickOnceなど)にのみ適用されます。 .
独自のカーネル レベルの署名証明書を取得したくない場合 (率直に言って、VeriSign の非常に高価な GlobalSign や年間 200 ドルの証明書に限定される前よりも簡単になりました。多くの人が x64 システム用のカーネル レベルのエクスプロイトを作成しました)、自己署名ルート CAを作成し、ドライバー インストーラーにそれを LocalMachine の「信頼されたルート証明機関」ストアにインストールさせることができます (参照certmgr.exe
)、それによって署名された .cat ファイルをインストールします。もちろん、これはカーネル レベルのコード証明書ではないため、他の誰かからのカーネル レベルのコード証明書が既に埋め込まれている .sys ファイルのみを使用する必要があります (つまり、ドライバー パッケージ内の .inf ファイルのみを変更できます)。 . どうやら、自己署名証明書が .cat ファイルに署名できる抜け穴があるようです (独自の CA を作成し、それを使用して証明書に署名し、それを使用して .cat ファイルに署名した場合、このようには機能しません)。
作成するすべてのドライバー INF パッケージに対してこれを行うスイートについては、libwdi と、cat ファイルの自己署名証明書が Windows 8 でのインストールを許可する方法を参照してください。
EDIT2:
CERTUM の「オープン ソース」開発者証明書に関する記述は、Microsoft による相互認証を受けていないため削除されました (取得したものは、Microsoft が相互認証した Certum TRUSTED NETWORK のものではありません)。