6

信頼できる CA によって発行された証明書を使用して EXE プログラムに署名しています。Windows SDK v6.0a の signtool.exe を使用しています。

証明書はコンピュータ ストアにあり、「Personals」フォルダにあります。

私のコマンドラインは次のとおりです。

sign /sm /n "My company" /d MyProductName /du http://my.url.com "C:\Setup\setup.exe"

コマンドラインでこのコマンドを実行すると、正常に動作します。このコマンドをバッチ プロセスで実行すると (Web サービスによって呼び出されるため、コマンドの実行時にログインしているユーザーは存在しません)、次のエラーが発生します。

エラーの数: 1 SignTool エラー: ISignedCode::Sign がエラーを返しました: 0x80092006 ストアまたはオブジェクトのプロバイダーが指定されていません。

誰でもこれについて助けることができますか?

4

5 に答える 5

2

問題は、サービス プロセスが、アカウントに保存されている秘密鍵にアクセスできないことです。

Web サービスを実行しているアカウントにログオンし、秘密キーをキー コンテナーにインポートします。たとえば、.NETの厳密な名前ツール (sn.exe)を使用してこれを行うことができます。

sn -i MyCertificate.pfx MyCodeSigningKey

ここで、ビルド スクリプトを変更して、このキー コンテナーを使用します。

signtool sign /sm /a /v /csp "Microsoft Strong Cryptographic Provider" /kc MyCodeSigningKey <other parameters...>

/kcキー コンテナーを指定します。/kcスイッチを介して「CSP」(Cryptographic Service Provider) を指定する必要があります/csp。"Microsoft Strong Cryptographic Provider" は、 で使用される既定のプロバイダーですsn

于 2010-01-27T19:37:24.667 に答える
2

誰かの時間を節約するために、私はこの問題を抱えていました。私の証明書が何らかの形で破損していることが判明しました。証明書ストアから削除して再度インポートすると、問題はなくなりました。PFX ファイル全体を作成するか、破損していないことがわかっている場所からコピーすることをお勧めします。

于 2012-04-24T17:18:34.033 に答える
1

私は[たった今、たった一度]同じ状態を経験しました(異なるMSIファイルを除いて同じパラメーターでの呼び出しが成功した直後)。ビルドスクリプトの次の実行で再実行が成功しました。また、あなたのように使用します

/ sm / d / du
使用しない
/ n
さらに使用する
/ t

于 2009-07-23T08:02:23.343 に答える
0

私もこの問題を抱えていました。調べる時間がなかったので、何が原因なのかまだよくわかりません。見つけたのは、秘密鍵がなくなっていた!?

私は coder_2007 が示唆することを行い、1 つの完全な自動ビルドでは機能しましたが、次のビルドでは同じエラーが発生しました。そのため、ビルド サーバーの何かが、完全なビルド (いくつかの署名付きアプリケーションを含む) の後に秘密鍵を壊しました。

最終的に行ったのは、PFX をインポートした直後に%allusersprofile%\Microsoft\Crypto\RSA\MachineKeys、最新のファイル (インポートの時刻と一致するファイル) に移動してライト プロテクトすることでした。

于 2013-02-22T09:53:52.430 に答える