私の会社はGoDaddyからドライバー署名証明書を購入しました。これを使用して、Microsoftのusbser.sysを使用する一部のUSBデバイスのドライバーである単純なINFファイルに署名しました。署名したWindows764ビットコンピューターではすべてが機能しているようです。INFファイルを右クリックして[インストール]を選択すると、2番目に表示される警告は、正しい発行元名を示すこの適切な警告です。
ただし、別のコンピューター(Windows Vista 64ビット)に移動し、INFファイルを右クリックして[インストール]を選択すると、代わりに次のエラーメッセージが表示されます。
これにより、ドライバーが適切に署名されていないと思います。コンピューターで見栄えがする唯一の理由は、GoDaddyのインストールプロセス中にインストールしたルート/中間/クロス証明書が原因です。コンピューターに証明書を手動でインストールしなくても、ユーザーが私たちが確認済みの発行元であることを確認できるようにしたいと思います。
同じディレクトリにあるINFファイルと.catファイル。
なぜこれが起こっているのか、どうすれば修正できるのか誰かが知っていますか?
主な問題は、実行時にこのエラーが発生することであると思われますsigntool verify /v pololu.cat
(詳細は以下を参照)。理由はわかりません。
SignToolエラー:証明書チェーンは処理されましたが、信頼プロバイダーによって信頼されていないルート証明書で終了しました。
私の手順の詳細
Driver Signing Certificateは、数週間前に発売されたGoDaddyの新製品です。コード署名証明書との違いはよくわかりませんが、同じ価格です。Go DaddyのWebサイトの指示に従って証明書をダウンロードしてインストールしましたが、指示は実際には完全には一致していません。手順1でMicrosoftCrossCertificateをインストールした後、次のような赤い警告メッセージが表示されました。
証明書をインストールする前に、Windows Updateを使用してルート証明書を更新するか、リポジトリからルート証明書を手動でダウンロードしてインストールする必要があります。
どうしたらいいのかわからない。リポジトリからいくつかのGoDaddyルート証明書をインストールしましたが、目立った違いはありませんでした。
最新バージョン(8.0)のWindows Driver Kit(WDK)をインストールしてから、最新バージョン(8.0)のWindows Software Development Kit(SDK)forWindows8をインストールしました。これにより、inf2cat
およびsigntool
ユーティリティにアクセスできます。どちらのキットも先月リリースされたので、私たちが踏み込んでいるいくつかの新しいバグがある可能性があります。
新しいディレクトリに、次の3つのファイルを配置します。
pololu_usb_to_serial.inf
、署名したいINFファイル。長いですがシンプルです。ここで読むことができます。このINFファイルはスタンドアロンドライバーです。ドライバパッケージに他のファイルは必要ありません。このファイルは、基本的に当社が何年にもわたって正常に配布(署名なし)したバージョンと同じですが、Inf2Catがそれを受け入れるためにいくつかの変更を加える必要がありました。mscvr-cross-gdroot-g2.crt
、GoDaddy証明書リポジトリからダウンロードしました。これは、「Go Daddyルート認証局-G2」がMicrosoftによって信頼されていることを証明する相互証明書だと思いますが、これが使用するのに適切な証明書であるかどうかは完全にはわかりません。sign_it.bat
、署名を行うために実行するバッチファイル。
バッチファイルには次のものが含まれています。
"C:\Program Files (x86)\Windows Kits\8.0\bin\x86\inf2cat" /v /driver:%~dp0 /os:XP_X86,Vista_X86,Vista_X64,7_X86,7_X64,8_X86,8_X64
"C:\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool" sign /v /ac "mscvr-cross-gdroot-g2.crt" /n "Pololu Corporation" /t http://tsa.starfieldtech.com pololu.cat
最初のコマンドは、WindowsDriverKitから呼び出しますinf2cat
。/v
オプションはそれを冗長にします。この/driver:%~dp0
オプションは、バッチファイルを含むディレクトリを指します。a.
は何らかの理由で機能せず、これはフルパスをハードコーディングするよりも優れています。この/os
オプションは、このドライバーパッケージでサポートしたいすべてのオペレーティングシステムを指定します。このコマンドはを作成しますpololu.cat
。
signtool
2番目のコマンドは、Windows Software Development Kitから呼び出して、カタログファイルに署名します。/v
オプションはそれを冗長にします。この/ac
オプションは、どの相互証明書を使用するかを指定します(上記の#2を参照)。この/n
オプションは、使用する証明書の名前を指定します(その証明書は、に従ってコンピューターにインストールされますcertmgr.msc
)。この/t
オプションは、GoDaddyのタイムスタンプサーバーのURLを指定します。
バッチファイルを実行したときのコマンドプロンプトの出力は次のとおりです。
C:\Users\david.POLOLU\Desktop\sign_it>"C:\Program Files (x86)\Windows Kits\8.0\b
in\x86\inf2cat" /v /driver:C:\Users\david.POLOLU\Desktop\sign_it\ /os:XP_X86,Vis
ta_X86,Vista_X64,7_X86,7_X64,8_X86,8_X64
Processing directory (C:\Users\david.POLOLU\Desktop\sign_it\) file (mscvr-cross-
gdroot-g2.crt)
Processing directory (C:\Users\david.POLOLU\Desktop\sign_it\) file (pololu_usb_t
o_serial.inf)
Processing directory (C:\Users\david.POLOLU\Desktop\sign_it\) file (sign_it.bat)
Parsing INF: C:\Users\david.POLOLU\Desktop\sign_it\pololu_usb_to_serial.inf
Finished parsing INFs
Processing INF: C:\Users\david.POLOLU\Desktop\sign_it\pololu_usb_to_serial.inf
Finished processing INFs
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Signability test complete.
Errors:
None
Warnings:
None
Catalog generation complete.
C:\Users\david.POLOLU\Desktop\sign_it\pololu.cat
C:\Users\david.POLOLU\Desktop\sign_it>"C:\Program Files (x86)\Windows Kits\8.0\b
in\x86\signtool" sign /v /ac "mscvr-cross-gdroot-g2.crt" /n "Pololu Corporation"
/t http://tsa.starfieldtech.com pololu.cat
The following certificate was selected:
Issued to: Pololu Corporation
Issued by: Go Daddy Secure Certificate Authority - G2
Expires: Sat Aug 31 11:35:25 2013
SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0
Cross certificate chain (using machine store):
Issued to: Microsoft Code Verification Root
Issued by: Microsoft Code Verification Root
Expires: Sat Nov 01 06:54:03 2025
SHA1 hash: 8FBE4D070EF8AB1BCCAF2A9D5CCAE7282A2C66B3
Issued to: Go Daddy Root Certificate Authority - G2
Issued by: Microsoft Code Verification Root
Expires: Thu Apr 15 13:07:40 2021
SHA1 hash: 842C5CB34B73BBC5ED8564BDEDA786967D7B42EF
Issued to: Go Daddy Secure Certificate Authority - G2
Issued by: Go Daddy Root Certificate Authority - G2
Expires: Sat May 03 00:00:00 2031
SHA1 hash: 27AC9369FAF25207BB2627CEFACCBE4EF9C319B8
Issued to: Pololu Corporation
Issued by: Go Daddy Secure Certificate Authority - G2
Expires: Sat Aug 31 11:35:25 2013
SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0
Done Adding Additional Store
Successfully signed: pololu.cat
Number of files successfully Signed: 1
Number of warnings: 0
Number of errors: 0
私が言ったように、私は.catファイルと.infファイルを同じディレクトリに一緒に保持していますが、それらに署名した場合、それらはコンピュータ上でのみ正しく機能します。
Signtoolによる検証
Microsoftのsigntool
ユーティリティには、署名が正しいかどうかを確認できる「確認」機能もあります。検証時に使用できる3つの異なるポリシーがあり、それぞれが異なる結果をもたらします。
- Windowsドライバー検証ポリシーでは、署名チェーンはMicrosoftにさかのぼることはなく、ルートが信頼されていないことに関するエラーメッセージが出力されます。それは私には問題のようです。
- デフォルトの認証コード検証ポリシー(
/pa
)には、署名チェーンはMicrosoftにさかのぼらないと書かれていますが、エラーは発生しません。 - カーネルモードドライバー署名ポリシー(カーネルモードドライバーに署名し
/kp
ていないため、おそらく適用されません)は、署名チェーンがMicrosoftにトレースバックし、エラーが発生しないことを示しています。
WindowsがINFファイルに使用するポリシーを知っている人はいますか?それは少なくとも私が問題を絞り込むのに役立ちます。
これは、以下からの完全で詳細な出力ですsigntool verify
。
C:\Users\david.POLOLU\Desktop\sign_it>"C:\Program Files (x86)\Windows Kits\8.0\b
in\x86\signtool" verify /v pololu.cat
Verifying: pololu.cat
Signature Index: 0 (Primary Signature)
Hash of file (sha1): 09A611ECC83E61646DB967D4C23EED725B903C1B
Signing Certificate Chain:
Issued to: Go Daddy Root Certificate Authority - G2
Issued by: Go Daddy Root Certificate Authority - G2
Expires: Thu Dec 31 16:59:59 2037
SHA1 hash: 47BEABC922EAE80E78783462A79F45C254FDE68B
Issued to: Go Daddy Secure Certificate Authority - G2
Issued by: Go Daddy Root Certificate Authority - G2
Expires: Sat May 03 00:00:00 2031
SHA1 hash: 27AC9369FAF25207BB2627CEFACCBE4EF9C319B8
Issued to: Pololu Corporation
Issued by: Go Daddy Secure Certificate Authority - G2
Expires: Sat Aug 31 11:35:25 2013
SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0
The signature is timestamped: Wed Sep 05 16:22:34 2012
Timestamp Verified by:
Issued to: Starfield Services Root Certificate Authority
Issued by: Starfield Services Root Certificate Authority
Expires: Mon Dec 31 16:59:59 2029
SHA1 hash: 5D003860F002ED829DEAA41868F788186D62127F
Issued to: Starfield Services Timestamp Authority
Issued by: Starfield Services Root Certificate Authority
Expires: Wed Apr 26 00:00:00 2017
SHA1 hash: AEAC793CDD107ACFB314A2FE384A8F16840B7C26
SignTool Error: A certificate chain processed, but terminated in a root
certificate which is not trusted by the trust provider.
Number of files successfully Verified: 0
Number of warnings: 0
Number of errors: 1
C:\Users\david.POLOLU\Desktop\sign_it>"C:\Program Files (x86)\Windows Kits\8.0\b
in\x86\signtool" verify /v /pa pololu.cat
Verifying: pololu.cat
Signature Index: 0 (Primary Signature)
Hash of file (sha1): 09A611ECC83E61646DB967D4C23EED725B903C1B
Signing Certificate Chain:
Issued to: Go Daddy Root Certificate Authority - G2
Issued by: Go Daddy Root Certificate Authority - G2
Expires: Thu Dec 31 16:59:59 2037
SHA1 hash: 47BEABC922EAE80E78783462A79F45C254FDE68B
Issued to: Go Daddy Secure Certificate Authority - G2
Issued by: Go Daddy Root Certificate Authority - G2
Expires: Sat May 03 00:00:00 2031
SHA1 hash: 27AC9369FAF25207BB2627CEFACCBE4EF9C319B8
Issued to: Pololu Corporation
Issued by: Go Daddy Secure Certificate Authority - G2
Expires: Sat Aug 31 11:35:25 2013
SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0
The signature is timestamped: Wed Sep 05 16:22:34 2012
Timestamp Verified by:
Issued to: Starfield Services Root Certificate Authority
Issued by: Starfield Services Root Certificate Authority
Expires: Mon Dec 31 16:59:59 2029
SHA1 hash: 5D003860F002ED829DEAA41868F788186D62127F
Issued to: Starfield Services Timestamp Authority
Issued by: Starfield Services Root Certificate Authority
Expires: Wed Apr 26 00:00:00 2017
SHA1 hash: AEAC793CDD107ACFB314A2FE384A8F16840B7C26
Successfully verified: pololu.cat
Number of files successfully Verified: 1
Number of warnings: 0
Number of errors: 0
C:\Users\david.POLOLU\Desktop\sign_it>"C:\Program Files (x86)\Windows Kits\8.0\b
in\x86\signtool" verify /v /kp pololu.cat
Verifying: pololu.cat
Signature Index: 0 (Primary Signature)
Hash of file (sha1): 09A611ECC83E61646DB967D4C23EED725B903C1B
Signing Certificate Chain:
Issued to: Go Daddy Root Certificate Authority - G2
Issued by: Go Daddy Root Certificate Authority - G2
Expires: Thu Dec 31 16:59:59 2037
SHA1 hash: 47BEABC922EAE80E78783462A79F45C254FDE68B
Issued to: Go Daddy Secure Certificate Authority - G2
Issued by: Go Daddy Root Certificate Authority - G2
Expires: Sat May 03 00:00:00 2031
SHA1 hash: 27AC9369FAF25207BB2627CEFACCBE4EF9C319B8
Issued to: Pololu Corporation
Issued by: Go Daddy Secure Certificate Authority - G2
Expires: Sat Aug 31 11:35:25 2013
SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0
The signature is timestamped: Wed Sep 05 16:22:34 2012
Timestamp Verified by:
Issued to: Starfield Services Root Certificate Authority
Issued by: Starfield Services Root Certificate Authority
Expires: Mon Dec 31 16:59:59 2029
SHA1 hash: 5D003860F002ED829DEAA41868F788186D62127F
Issued to: Starfield Services Timestamp Authority
Issued by: Starfield Services Root Certificate Authority
Expires: Wed Apr 26 00:00:00 2017
SHA1 hash: AEAC793CDD107ACFB314A2FE384A8F16840B7C26
Cross Certificate Chain:
Issued to: Microsoft Code Verification Root
Issued by: Microsoft Code Verification Root
Expires: Sat Nov 01 06:54:03 2025
SHA1 hash: 8FBE4D070EF8AB1BCCAF2A9D5CCAE7282A2C66B3
Issued to: Go Daddy Root Certificate Authority - G2
Issued by: Microsoft Code Verification Root
Expires: Thu Apr 15 13:07:40 2021
SHA1 hash: 842C5CB34B73BBC5ED8564BDEDA786967D7B42EF
Issued to: Go Daddy Secure Certificate Authority - G2
Issued by: Go Daddy Root Certificate Authority - G2
Expires: Sat May 03 00:00:00 2031
SHA1 hash: 27AC9369FAF25207BB2627CEFACCBE4EF9C319B8
Issued to: Pololu Corporation
Issued by: Go Daddy Secure Certificate Authority - G2
Expires: Sat Aug 31 11:35:25 2013
SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0
Successfully verified: pololu.cat
Number of files successfully Verified: 1
Number of warnings: 0
Number of errors: 0
ドライバーに署名したコンピューター(動作している場所)と他のコンピューター(動作していない場所)で実行した場合、出力は同じように見えました。
StackOverflowに関する同様の質問
64ビットWindows用のThawteドライバー署名-この男の問題の解決策は、CatalogFileディレクティブをINFファイルに追加することでしたが、私はすでにそれを持っています。(CatalogFile=pololu.cat
)。
編集#1:実行可能ファイルへの署名は機能します
実行可能ファイル(NSISインストーラー)に署名するために同じオプションでsigntoolを使用しましたが、両方のコンピューターで最初の試行で正しく機能しました。ですから、INFドライバファイルの署名ポリシーには何か違いがあると思います。それが私を困惑させているのです。
編集#2:GoDaddyの証明書に関する警告
をダブルクリックするmscvr-cross-gdroot-g2.crt
と、[全般]タブに「Windowsにはこの証明書を確認するための十分な情報がありません」と表示されます。[証明書のパス]タブの[証明書のステータス:]に、「この証明書の発行者が見つかりませんでした」と表示されます。gd_ms_drv_sign_bundle.p7b
(GoDaddyの証明書バンドル)をダブルクリックして最初の証明書を開くと、同じ警告が表示されます。
これらの証明書の両方の発行者は、Microsoftコード検証ルートであると想定されています。その警告メッセージについて心配する必要がありますか?
編集#3:GoDaddyの証明書の削除
GoDaddyの高度なサポートチームのLindsayが私に戻ってきました。彼女はglobalsignからこのページにリンクし、ドライバーに署名するコンピューター上のCAからルート証明書と中間証明書をアンインストールする方法を説明しています。Lindsayによると、この手順を実行しない場合、署名ツールはそれらの証明書が他のコンピューターに存在すると想定するため、署名に含まれません。
どの証明書が署名に「インポート」されているかを確認する方法を知っている人はいますか?LindsayとGlobalSignが正しいかどうかを確認するためにどのツールを使用できますか?
ちなみに、Windows XPコンピュータはありますが、MicrosoftはまもなくそのOSのサポートを停止します。GlobalSignが言っていることにもかかわらず、これをWindows7で機能させる方法が必要です。
Lindsayのアドバイスに基づいて、Microsoftの指示に従って、自動ルート認証局の更新をオフにし、のUIを使用して、certmgr.msc
「信頼されたルート証明機関」と「中間証明機関」からすべてのGoDaddy証明書を削除しました。次に、infファイルに再署名しました。
残念ながら、それはうまくいきませんでした!署名後、すべてのGoDaddy証明書がまだ削除されていることを再確認しました。
signtool verify
の出力、または検証を行うときに確認する必要のあるドライバー署名ポリシーに関する入力について、GoDaddyからフィードバックを受け取っていません。私は、彼らが検証出力を見て、私が間違っていることを教えてくれるか、正しい出力がどのようになるかを教えてくれることを望んでいました。
完全を期すために、signtool verify
これらの証明書を削除してドライバーに再署名した後の3つの出力を次に示します。
C:\Users\david.POLOLU\Desktop\sign_inf>"C:\Program Files (x86)\Windows Kits\8.0\
bin\x86\signtool.exe" verify /v pololu.cat
Verifying: pololu.cat
Signature Index: 0 (Primary Signature)
Hash of file (sha1): 5AE4F370471009C8B0ED936C9AE19ED14ABD67D7
Signing Certificate Chain:
Issued to: Go Daddy Root Certificate Authority - G2
Issued by: Microsoft Code Verification Root
Expires: Thu Apr 15 13:07:40 2021
SHA1 hash: 842C5CB34B73BBC5ED8564BDEDA786967D7B42EF
Issued to: Go Daddy Secure Certificate Authority - G2
Issued by: Go Daddy Root Certificate Authority - G2
Expires: Sat May 03 00:00:00 2031
SHA1 hash: 27AC9369FAF25207BB2627CEFACCBE4EF9C319B8
Issued to: Pololu Corporation
Issued by: Go Daddy Secure Certificate Authority - G2
Expires: Sat Aug 31 11:35:25 2013
SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0
The signature is timestamped: Wed Sep 12 14:52:19 2012
Timestamp Verified by:
Issued to: Starfield Services Root Certificate Authority
Issued by: Starfield Services Root Certificate Authority
Expires: Mon Dec 31 16:59:59 2029
SHA1 hash: 5D003860F002ED829DEAA41868F788186D62127F
Issued to: Starfield Services Timestamp Authority
Issued by: Starfield Services Root Certificate Authority
Expires: Wed Apr 26 00:00:00 2017
SHA1 hash: AEAC793CDD107ACFB314A2FE384A8F16840B7C26
SignTool Error: A certificate chain processed, but terminated in a root
certificate which is not trusted by the trust provider.
Number of files successfully Verified: 0
Number of warnings: 0
Number of errors: 1
C:\Users\david.POLOLU\Desktop\sign_inf>"C:\Program Files (x86)\Windows Kits\8.0\
bin\x86\signtool.exe" verify /v /pa pololu.cat
Verifying: pololu.cat
Signature Index: 0 (Primary Signature)
Hash of file (sha1): 5AE4F370471009C8B0ED936C9AE19ED14ABD67D7
Signing Certificate Chain:
Issued to: Go Daddy Root Certificate Authority - G2
Issued by: Microsoft Code Verification Root
Expires: Thu Apr 15 13:07:40 2021
SHA1 hash: 842C5CB34B73BBC5ED8564BDEDA786967D7B42EF
Issued to: Go Daddy Secure Certificate Authority - G2
Issued by: Go Daddy Root Certificate Authority - G2
Expires: Sat May 03 00:00:00 2031
SHA1 hash: 27AC9369FAF25207BB2627CEFACCBE4EF9C319B8
Issued to: Pololu Corporation
Issued by: Go Daddy Secure Certificate Authority - G2
Expires: Sat Aug 31 11:35:25 2013
SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0
The signature is timestamped: Wed Sep 12 14:52:19 2012
Timestamp Verified by:
Issued to: Starfield Services Root Certificate Authority
Issued by: Starfield Services Root Certificate Authority
Expires: Mon Dec 31 16:59:59 2029
SHA1 hash: 5D003860F002ED829DEAA41868F788186D62127F
Issued to: Starfield Services Timestamp Authority
Issued by: Starfield Services Root Certificate Authority
Expires: Wed Apr 26 00:00:00 2017
SHA1 hash: AEAC793CDD107ACFB314A2FE384A8F16840B7C26
SignTool Error: WinVerifyTrust returned error: 0x800B010A
A certificate chain could not be built to a trusted root authority.
Number of files successfully Verified: 0
Number of warnings: 0
Number of errors: 1
C:\Users\david.POLOLU\Desktop\sign_inf>"C:\Program Files (x86)\Windows Kits\8.0\
bin\x86\signtool.exe" verify /v /kp pololu.cat
Verifying: pololu.cat
Signature Index: 0 (Primary Signature)
Hash of file (sha1): 5AE4F370471009C8B0ED936C9AE19ED14ABD67D7
Signing Certificate Chain:
Issued to: Go Daddy Root Certificate Authority - G2
Issued by: Microsoft Code Verification Root
Expires: Thu Apr 15 13:07:40 2021
SHA1 hash: 842C5CB34B73BBC5ED8564BDEDA786967D7B42EF
Issued to: Go Daddy Secure Certificate Authority - G2
Issued by: Go Daddy Root Certificate Authority - G2
Expires: Sat May 03 00:00:00 2031
SHA1 hash: 27AC9369FAF25207BB2627CEFACCBE4EF9C319B8
Issued to: Pololu Corporation
Issued by: Go Daddy Secure Certificate Authority - G2
Expires: Sat Aug 31 11:35:25 2013
SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0
The signature is timestamped: Wed Sep 12 14:52:19 2012
Timestamp Verified by:
Issued to: Starfield Services Root Certificate Authority
Issued by: Starfield Services Root Certificate Authority
Expires: Mon Dec 31 16:59:59 2029
SHA1 hash: 5D003860F002ED829DEAA41868F788186D62127F
Issued to: Starfield Services Timestamp Authority
Issued by: Starfield Services Root Certificate Authority
Expires: Wed Apr 26 00:00:00 2017
SHA1 hash: AEAC793CDD107ACFB314A2FE384A8F16840B7C26
SignTool Error: WinVerifyTrust returned error: 0x800B010A
A certificate chain could not be built to a trusted root authority.
Number of files successfully Verified: 0
Number of warnings: 0
Number of errors: 1
編集#4:DefaultInstallセクションはノーノーです
MicrosoftのDefaultInstallセクションのドキュメントで、私はこれを発見しました。
注ドライバーパッケージをデジタル署名する場合は、ドライバー パッケージのINFファイルに INFDefaultInstallセクションを含めないでください。
なぜそれが本当なのか誰かが知っていますか?説明が見つかりませんでした。
とにかく、INFファイルのDefaultInstallセクションを取り出したので、これからは、SetupCopyOemInfを呼び出す小さなDLLを実行してテストする必要があります。
まだ運がない。WindowsVistaコンピューターで未確認の発行元の警告が表示され続けます。
編集#5:JLinkドライバーは正しく署名されています
私はC:\ Windows \ System32 \ DriverStore \ FileRepositoryをざっと見て、適切に署名されたドライバーパッケージを見つけようとしていました。私が最初に見つけた興味深いものは、JLinkCDC.cat/JLinkCDC.infです。InfファイルのバージョンはですDriverVer=01/25/2012,6.0.2600.4
。Windows Vistaマシンで、(DLLを使用して)infファイルでSetupCopyOemInfを呼び出すと、発行元が誰であるか(Segger GMBHなど)を通知する適切なメッセージが表示されます。したがって、私のようなドライバーパッケージに適切に署名することは可能ですが、どういうわけかGoDaddyまたは私は何か間違ったことをしています。
JLinkCDC.infドライバーは、1つのファイルであり、usbser.sysを使用するため、私のドライバーと非常によく似ています。署名の信頼チェーンは、VeriSign Class 3 Public Primary CertificateAuthority-G5に戻ります。
基本的に、このJLinkCDCドライバーは私のものと似ており、動作するので、違いが何であるかを注意深く調べる予定です。
JLinkCDC.catのsigntoolverifyの出力は、GoDaddyではなくVerisignにトレースバックすることを除いて、私のものと非常によく似ています。
編集#6:マイナーな変更
ドライバーをJLinkCDC.infに近づけるDriverPackageType=PlugAndPlay
ために、INFファイルに追加し、ファイル名を短くしました。ファイルの名前はpolser.catおよびpolser.infになりました。まだ運がない!
編集#7:いくつかの成功!
私は次のことが真実だと思います。私が間違っている場合は私を訂正してください:
- ドライバーパッケージ(.catファイル)の場合、の正しいオプションは
signtool verify
です/pa
。これはKMCS_Walkthrough.docから推測します。 - ドライバーパッケージの場合、Windowsは、信頼の鎖がcertmgr.mscの[信頼されたルート証明機関]フォルダー内の証明書に戻った場合にのみ、発行元が検証されたと見なします。
- ドライバーパッケージの場合、相互証明書を使用して署名できます(gdroot-g2.crtからMicrosoftコード検証ルートへの信頼の鎖を拡張します)が、Windowsはそれを無視しているようです。これは、Microsoftコード検証ルートが「信頼されたルート証明機関」ではないためです。
- 現在のユーザーの証明書ストアとローカルマシンの証明書があります。どちらも重要なので、MMC証明書スナップインを使用して両方を表示する必要があります。Certmgr.mscは、現在のユーザーのもののみを表示します。
- Windowsは、必要に応じて「Go Daddyルート証明機関-G2」(gdroot-g2.crt)を「信頼されたルート証明機関」フォルダーに シームレスに追加し、Windows Updateからダウンロードする必要がありますが、そうではありません。詳細はこちら。
テストマシンのWindowsイベントビューアを使用して、何が起きているかを確認しました。Windowsは「GoDaddyRootCertificate Authority-G2」を自動的にフェッチするように見えますが、望ましくない未確認の発行者警告ダイアログが表示された後でのみです。ユーザーがそのダイアログを閉じるとすぐに、証明書がWindows Updateからフェッチされるため、次回のインストールは成功するはずです。興味深いことに、スターフィールド証明書(私のタイムスタンプの信頼の鎖のルート)をタイムリーに自動的にダウンロードします。
ドライバーをインストールする前に、gdroot-g2.crtをダブルクリックしてインポートすることにより、Windows7およびWindowsVistaコンピューターで機能するように署名を取得しました。このプロセスを自動化してインストーラーに追加できるかどうかを確認します。
「VeriSignClass3Public Primary Certification Authority-G5」に根ざした、VeriSign証明書で署名された別の会社(JLinkCDC.cat)のドライバーパッケージを見つけました。その証明書は私が調べたすべてのコンピューターにあるので、Go Daddyの代わりにVeriSignを使用すれば、WindowsUpdateでこの問題を回避できると思います。
VeriSign証明書がSHA1を使用しているのに対し、GoDaddy証明書は署名アルゴリズムと署名ハッシュアルゴリズムにSHA256を使用していることに気付きました。それが重要かどうかわからない。
編集#8:マイクロソフトに助けを求めた
MSDNフォーラムでのディスカッションと私の結論を参照してください:http ://social.msdn.microsoft.com/Forums/en-US/wdk/thread/1fede768-7925-4f30-8eef-ce5bd08b0b60