22

トークンを解析しようとすると、次のエラーが発生します。

Property name: 'certificateReference'
Error: 'ID1025: Cannot find a unique certificate that matches the criteria.
StoreName: 'My'
StoreLocation: 'LocalMachine'
X509FindType: 'FindByThumbprint'
FindValue: '‎41a8a59e537d4a00a8c4fa8dc2522388dbd13d27'

私のweb.configのセクションは次のとおりです。

<serviceCertificate>`
    <certificateReference x509FindType="FindByThumbprint" findValue="‎41A8A59E537D4A00A8C4FA8DC2522388DBD13D27" storeLocation="LocalMachine" storeName="My" />
</serviceCertificate>

IIS、MMC、および Internet Explorer に証明書が存在することを確認し、検索タイプをサブジェクトに変更しようとしましたが、役に立ちませんでした。また、拇印を大文字、小文字、スペースあり、スペースなしで試しました。証明書が LocalMachine\My に存在することも確認しました。結果は次のとおりです。

Matching certificate:
CN=kelly-pc

秘密鍵へのアクセス権を持つ追加のアカウントとグループには、次のものがあります。

NT AUTHORITY\SYSTEM
BUILTIN\Administrators
KELLY-PC\Kelly
BUILTIN\IIS_IUSRS
4

6 に答える 6

24

私はまったく同じ問題を抱えていました。Notepad ++(メモ帳ではない)でweb.configセクションをコピーすると、目に見えない文字が表示されました:

<serviceCertificate>
        <certificateReference  x509FindType="FindByThumbprint" findValue="?e36df2f3e351a25adf8ffb6ad3619f10238f0317" />
</serviceCertificate>

この文字を削除すると、機能するはずです。

Notepad++ がなければ、拇印値の前でバックスペースを押すだけです (" char.

于 2013-07-17T14:56:37.587 に答える
8

まず、私のアプリケーションはasp.net MVCであるため、Olegからの「issuedTokenAuthentication」のアドバイスはうまくいきませんでした。この要素は asp.net MVC アプリケーションではサポートされていないと思いますが、WCF サービス構成ではサポートされる可能性があります。

localhost でのこのエラーや ID1024 などの他のエラーと何時間も戦った後、%ALLUSERSPROFILE%\Microsoft\Crypto\RSA\MachineKeys 内のすべてのファイルを Everyone に読み取らせるなどのアドバイスに従って、実行したことを元に戻す必要がありました。このブログ (私は MachineKeys フォルダー全体の読み取りを許可しましたが、これは良い考えではありませんでした!)。これにより、秘密鍵へのすべての付与が MMC コンソール経由で機能しなくなりました。

私の解決策は、ここの指示に従って新しい自己署名証明書を作成することでした

次に、新しく作成した証明書を正しいストアに新たにインポートし、Web アプリケーションを実行するユーザーに秘密鍵の読み取り権限を与えました。私の問題は、以前使用していた自己署名された証明書にありました.何か問題があったに違いありません..

このセクションは、クライアント側で必ず必要でした:

<serviceCertificate>
   <certificateReference x509FindType="FindByThumbprint" findValue="‎41A8A59E537D4A00A8C4FA8DC2522388DBD13D27" storeLocation="LocalMachine" storeName="My" />
</serviceCertificate>

証明書を扱う場合、これは心に留めておくべき非常に良いアドバイスでもあります。

最初に証明書を開発用にパーソナル ストアにインポートし、次に展開用にマシン ストアにインポートすると、プライベート キーはパーソナル ストアの場所に残るため、アクセス許可が付与されていても、サービス アカウントはそれを使用できません。

最後に、FindPrivateKey.exe ツールは、実際の秘密鍵ファイルを見つけて問題を解決するのに非常に便利でした。ここからダウンロードでき、適切な手順はこちらから入手できます。

MMC コンソールから証明書を削除するときに、秘密鍵ファイルを手動で削除する必要があることに気付きました

C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys

localMachine ストアとから削除する場合

C:\Users[ユーザー名]\AppData\Roaming\Microsoft\Crypto\RSA\S-1-5-21-2106337540-114255811-1274951907-65121

CurrentUser ストアから削除する場合

于 2013-06-26T10:31:36.153 に答える
1

おそらく自己発行の証明書を使用しており、次の行も追加する必要があります

<issuedTokenAuthentication allowUntrustedRsaIssuers="true" />

と一緒<serviceCertificate>に使用する必要があります<certificateReference>

于 2010-07-14T12:08:37.277 に答える