0

「Transport with Message Credentials」セキュリティ設定を使用して WSHTTPBinding で構成された IIS6 で実行されている WCF サービスがあります (トランスポート クライアントの資格情報が「なし」に設定され、メッセージが「証明書」に設定されています。これは、 VS 2010 でサービスを使用して自動生成されたコードを使用して作成された .NET クライアント。

私の開発環境では、サービス証明書と IIS SSL 証明書の両方として機能する証明書を作成しました。怠け者だったので、クライアント アプリケーションで使用するために証明書をエクスポートしました。その構成ではすべてがうまく機能しますが、それはターゲット環境ではありません。アイデアは、ユーザーがスマート カードを使用してこのサービスにアクセスできるようにすることです。サーバーは同じドメイン上になく、LDAP は今のところ許可されていません。

問題は、テスト ラボでこれを取得し、SSL 証明書がユーザーの証明書と同じ CA によって発行された環境をセットアップし、カスタムの x509 証明書バリデーターとサービス資格情報を作成しましたが、最初の呼び出しの後に私のバリデーターに、ハンドオフの間に何かが発生し、サービストレースログに「メッセージセキュリティの検証エラー」というエラーが発生し、「署名を検証できません」という内部例外が発生します。これはカスタム バリデータを介して送信され、ログに記録されたメッセージを取得したので、SOAP 側ではすべて問題ないように見え、反対側で証明書を取得しています。使用しようとしているすべての証明書が「信頼されたユーザー」ストアにあることを確認し、証明書をエクスポートしてローカルコンピューターの「個人用」に配置しようとしました

web.config ファイルでのサービス証明書とクライアント証明書の使用法がよくわからない気がします。誰かがここで私を助けてくれますか?

4

1 に答える 1

0

わかりましたので、同僚の助けを借りて自分の質問に答えることができました。私たちが一緒に座って、私がたくさんの質問をし始め、ランダムなグーグル検索を行った後、私は驚いた構成の何かを変更することにしました.

質問を一番上で締めくくるために、メッセージ資格情報を「証明書」に設定し、暗号化アルゴリズムスイートを「TripleDesSha256Rsa15」に設定しました。スマート カードまたはカード自体の証明書は、Sha1 のみをサポートすることが判明しました (これは他のすべてのオプションではありませんでした)。設定を「Basic256」に変更すると、すべてが機能し始めました。最終的に「TripleDesRsa15」に設定することができ、引き続き機能しました。

基本的に、WCF は秘密キーなしで証明書を送信します。これは、その暗号化アルゴリズムではアクセスできないためです。WCFは、証明書にアクセスしようとしたときに例外をスローしません。サーバー側でのみ、「署名を検証できませんでした」という例外をスローします。追跡が少し簡単だったので、「署名がありませんでした」と表示されたらいいのにと思います。誰かがこれを役に立つと思うかどうかはわかりませんが、WCF でスマート カードを使用する「適切な」方法への参照を見つけることができれば、ref を付けて投稿してください。

全体として、使用しようとしている暗号化アルゴリズムを確認し、使用する予定のスマート カード/証明書で動作することを確認してください。

于 2012-06-19T00:44:50.723 に答える