21

私の会社は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つのファイルを配置します。

  1. pololu_usb_to_serial.inf、署名したいINFファイル。長いですがシンプルです。ここで読むことができます。このINFファイルはスタンドアロンドライバーです。ドライバパッケージに他のファイルは必要ありません。このファイルは、基本的に当社が何年にもわたって正常に配布(署名なし)したバージョンと同じですが、Inf2Catがそれを受け入れるためにいくつかの変更を加える必要がありました。
  2. mscvr-cross-gdroot-g2.crtGoDaddy証明書リポジトリからダウンロードしました。これは、「Go Daddyルート認証局-G2」がMicrosoftによって信頼されていることを証明する相互証明書だと思いますが、これが使用するのに適切な証明書であるかどうかは完全にはわかりません。
  3. 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

signtool2番目のコマンドは、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

4

4 に答える 4

9

2012年9月27日の時点で、GoDaddyドライバー署名証明書はWindowsVistaまたはWindows7では機能しません。Windows8でのみ機能します。GoDaddy証明書はSHA256でのみ使用できます。

最終的にGlobalSign(MS Authenticode)から取得しました。

http://msdn.microsoft.com/en-us/library/windows/hardware/hh967734%28v=vs.85%29.aspxから:

2つの署名を使用してドライバーパッケージに署名する

場合によっては、2つの異なる署名を使用してドライバーパッケージに署名することをお勧めします。たとえば、ドライバーをWindows7およびWindows8で実行したいとします。Windows8はSHA256ハッシュアルゴリズムで作成された署名をサポートしていますが、Windows7はサポートしていません。Windows 7の場合、SHA1ハッシュアルゴリズムで作成された署名が必要です。

2012-09-28更新:GlobalSignが機能しました。Firefox 15にGlobalSignが提供するリンクをダウンロードさせました(ピックアップパスワードで保護されています)。Firefoxが署名付き証明書を保持し、他の3つのGlobalSign証明書をダウンロードすることになりました。署名された証明書はFirefoxから.p12ファイルにエクスポートされました。次に、4つのファイルすべてをダブルクリックして、自動デフォルトを使用してMS証明書ストアにインポートしました。ドライバーとパッケージは、ドライバー署名エラーなしでWindows 7Ultimatex64で署名およびテストされました。ドライバーはBSoDしましたが、それは別の問題です。;)

GoDaddyは、購入から30日以内に取り消す場合にのみ、ウェブサイトのクレジットから15ドルを差し引いた額のみを提供します。

2016-01-13更新: https : //technet.microsoft.com/en-us/library/security/3033929 Microsoft Security Advisory 3033929Windows7およびWindowsServer2008 R2のSHA-2コード署名サポートの可用性公開日:3月10日、2015 ...基本的に、Microsoftが提供するリンクにセキュリティ更新プログラムをインストールする必要があります。これは通常、WindowsUpdateによって自動的に実行されます。

現在、GlobalSignのEVコード署名証明書を使用しています。警告:SafeSignはWindowsサービス(例:buildbotスレーブ)では機能しません。

于 2012-09-28T20:10:23.890 に答える
4

評判が悪いため、rcpaoの回答に賛成票を投じることはできませんが、同意して投稿したいと思いました。私は最近、GoDaddyからのドライバー署名証明書を使用してWindows7ドライバーパッケージに署名しようとする同様のプロセスを実行しました。つまり、Win7 x64はドライバーを使用しません。これは、GoDaddy証明書で使用されているSHA-2ハッシュが原因です。

Windows 7はSHA-2署名と互換性があると述べている記事がありますが、それはドライバーの署名には当てはまらないと思います。確かに、問題を不明確にするいくつかのあいまいなテキストが利用可能です。

私の会社は、ドライバーのカーネルモード署名を含むDigiCertコード署名証明書を購入することになりました。期待どおりに機能し、コストはGoDaddyと同等でした。

于 2012-10-25T21:46:48.653 に答える
1

私自身の質問に答える:

いつか.sysファイルとGoDaddyのSHA-2を含むドライバーパッケージに署名する可能性が欲しかったので、Go Daddyからコード署名証明書を取得してSHA-2(他のオプションはSHA-1)にキーイングすることになりました。オプションを使用すると、それを行うことができます。次に、その証明書とGo Daddy G1からG2への相互証明書(gdroot-g2_cross.crt)を使用して、.catファイルに署名するので、信頼の鎖は次のようになります。

  1. Go Daddyクラス2認証局(27 96 ba e6 3f 18 01 e2 77 26 1b a0 d7 77 70 02 8f 20 ee e4)(ユーザーのコンピューター上の信頼されたルートCAになります)
  2. Go Daddyルート認証局-G2(84 1d 4a 9f c9 d3 b2 f0 ca 5f ab 95 52 5a b2 06 6a cf 83 22)(信頼できるルートCAであると想定されますが、Windows Updateが確実に機能するかどうかに依存します)
  3. Go Daddy Secure Certificate Authority-G2(27 ac 93 69 fa f2 52 07 bb 26 27 ce fa cc be 4e f9 c3 19 b8)
  4. 当社

これは私たちのニーズにうまく機能してますが、残念ながら、信頼の鎖はMicrosoftコード検証ルートに根ざしていないため、この計画ではKernel-Mode.sysファイルを含むドライバーパッケージに署名することはできません。kmsigning.docを読んだところによると、カーネルモードのドライバーファイルがある場合に.catファイルに署名する正しい方法は、Microsoft to Go Daddy G2クロス証明書(mscvr-cross-gdroot-g2.crt)を使用することです。私は実際にはまだそれを機能させることができていませんが、それは別の議論になるでしょう。

SHA 2

私はrcpaoとkrisに敬意を表して反対しなければなりません。私の知る限り、少なくともドライバーパッケージのインストールに関しては、WindowsVistaまたはWindows7のSHA256に問題があります。.sysファイルをカーネルにロードする場合、別の話があるかもしれません。特に、.sysの署名に問題があるため、それを調べる必要があります。

DefaultInstall

INFDefaultInstallセクションのMSDNドキュメントは間違っています。DefaultInstallとドライバーの署名の間に非互換性はないようで、そうあるべき理由がわかりました。

于 2012-11-29T01:02:04.290 に答える
1

ドライバーをMicrosoftによって認定および署名する必要があるようです。これは、ハードウェア認定キット(HCK)を使用して実現できます。ただし、Windows 10以降では、Hardware Lab Kit(HLK)を使用しています。これは、私がカーネルモードドライバーに署名した方法です。これは、テストに合格し、Microsoftに.sysファイルと.catファイルを認証して署名させた後に行われます。

于 2016-04-22T14:26:41.270 に答える