2

使用するサード パーティ アプリケーションがクライアント証明書を渡すことを要求することで保護されている Web サービスがあります。本番環境の提供 Web サービスとクライアントにも証明書をインストールしました。このプロセスは現在、同様のセットアップを使用する他のクライアントで正常に機能しています。現在のバージョンは .NET 3.5 で記述されており、私の開発マシンでは cassini (およびスタンドアロンで実行) で完全に動作しますが、同じコードと証明書のセットアップを使用した運用マシンでは動作しません。プロバイダーの Web サービスがクライアントにインストールされた証明書をブラウザー経由で受け入れることを確認しましたが、証明書をプログラムで Web サービス呼び出しに追加すると、403 が表示され、アクセスが拒否されます。保護された Web サービスにリクエストを送信する前に、呼び出しに追加された証明書のフィンガープリントを出力します。そして、それは実際に添付された正しい証明書です。私の考えでは、どこかで、証明書の秘密鍵部分にアクセスできません。

何か案は?

注: 関連する ~/crypto ディレクトリへの IIS プロセス アクセスを許可しました。

これは C# と .NET 3.5 です。

4

3 に答える 3

2

数週間前にこの種の問題がありました。私の場合の解決策は、偽装を使用して、証明書ストアへの適切なアクセスを取得することでした。デフォルトでは、IIS ワーカー スレッドはシステム ユーザーとして実行されていたため、適切なストアにアクセスできませんでした。証明書を特定のユーザー ストアに追加し、そのユーザーを偽装することですべての問題が解決しました。

ただし、なりすましは魔法の弾丸の修正ではなく、このシナリオではそれによって問題が発生することを認識しているため、この質問を引き続き監視します。

于 2008-10-27T14:06:43.923 に答える
0

それが私のマシンで機能しなかった明確な理由があります。Visual Studio内で実行する場合、証明書のインストールに使用されたクレデンシャルを使用して実行されます。したがって、マシン上の秘密鍵ストアにアクセスするためのアクセス許可が自動的に付与されます。 ただし、カッシーニの外部(IDE内)で実行する場合、IISプロセスには秘密鍵ストアにアクセスするためのアクセス許可がありませんでした。

一時的な解決策:app-domainをローカルシステムとして実行します。セキュリティには悪いですが、より永続的な解決策を見つけることができるまで、アプリケーションは(バンド支援ではありますが)稼働します。

于 2008-10-29T00:28:20.953 に答える
-1

このステッカーをプログラムに貼るだけで、1 日で終わることができます。

代替テキスト

于 2008-10-27T14:43:59.557 に答える