1. ホーム
  2. .net

[解決済み] CryptographicException「キーセットが存在しない」、ただしWCF経由に限る

2022-03-03 12:36:49

質問内容

X.509認証を使用してセキュリティ保護されたサードパーティのWebサービスを呼び出すコードがあります。

このコードを直接(ユニットテストを使って)呼び出すと、何の問題もなく動作します。

デプロイされると、このコードはWCFサービス経由で呼び出されます。私はWCFサービスを呼び出す2番目のユニットテストを追加しましたが、これは CryptographicException メッセージ "Keyset does not exist" サードパーティのウェブサービスのメソッドを呼び出したとき。

これは、私のWCFサービスが、私とは異なるユーザーを使用してサードパーティーのWebサービスを呼び出そうとするためだと推測しています。

この問題について、どなたか補足説明をしていただけませんか?

解決方法を教えてください。

それはおそらく、証明書のパーミッションの問題でしょう。

ユニットテストを実行する場合、自分のユーザーコンテキストの下でそれらを実行することになりますが、(どのストアで クライアント 証明書の秘密鍵にアクセスすることができます。

しかし、WCFサービスがIISの下でホストされている場合、またはWindowsサービスとして、それはサービスアカウント(ネットワークサービス、ローカルサービスまたは他の制限されたアカウント)で実行されている可能性が高いです。

秘密鍵に適切な権限を設定し、そのサービスアカウントにアクセスできるようにする必要があります。MSDNでは 詳細はこちら