質問

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

アイデアはありますか?

注:IISプロセスに関連する〜/ cryptoディレクトリへのアクセス権を付与しました。

これはC#および.NET 3.5です

役に立ちましたか?

解決

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

なりすましは魔法の弾丸の修正ではなく、このシナリオでは問題から生じる問題があることを知っているので、私はこの質問を見続けます。

他のヒント

マシン上で動作しなかった明確な理由があります。 Visual Studio内で実行すると、証明書のインストールに使用された資格情報で実行されます。したがって、マシン上の秘密鍵ストアにアクセスする権限が自動的に付与されます。 ただし、cassiniの外部(IDE内)で実行している場合、IISプロセスには秘密キーストアへのアクセスに対する許可がありませんでした。

一時的な解決策:アプリドメインをローカルシステムとして実行します。セキュリティ上は悪いが、より恒久的な解決策を考え出すまで、アプリケーションは(バンドエイドとはいえ)稼働します。

プログラムでこのステッカーをたたいて、1日呼び出すことができます:

alt text

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top