WIF で WCF Web サービスを使用しています。詳細な仕様、私は WS2007FederationHttpBinding を使用しています。開発に使用される localhost マシンでは、すべてうまく機能します。
ただし、IIS に展開されたサーバーと他の PC から起動されたクライアントでリモート インストールを試行すると、チャネルの Open メソッドが次の例外で失敗します。
X.509 証明書 CN=MyOwnCertificate チェーンの構築に失敗しました。使用された証明書には、検証できない信頼チェーンがあります。証明書を置き換えるか、certificateValidationMode を変更してください。
(MyOwnCertificate は、makecert を使用した自己署名証明書です。証明書は信頼されたルート証明機関に挿入されています)。
そのため、テスト目的で、最初に次のコードでこの制約を削除しようとしました。
this.ClientCredentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.PeerOrChainTrust;
this.ClientCredentials.ServiceCertificate.Authentication.RevocationMode = X509RevocationMode.NoCheck;
これにより、最初の例外フォルトが実際に削除されます。ただし、InnerSecurityTokenProvider は独自の例外を返すようになりました。
「Le message n'a pas pu être traité car l'action 'http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT' n'est pas valide ou non reconnue. "}
(フランス語のメッセージで申し訳ありません)。
このようなリモート シナリオで自己署名証明書を機能させる方法はありますか? (内部使用のための証明書のみが必要なので、私はこれを好みます)
openssl (http://www.freebsdmadeeasy.com/tutorials/freebsd/create-a-ca-with-openssl.php) で生成された証明書で動作しますか?
あなたの助けは大歓迎です。ありがとう。
EDIT 06/01/2012 : また、提案されている署名付き証明書 (+ 失効リスト) でテストされ、ローカルでは機能しますが、リモートでは失敗します。証明書は、こちらで説明されているように定義されています。信頼されたルートの下に展開された CA 証明書があります。IP およびサーバー証明書は、MY (pfx を使用) および Trusted People (cer を使用) にデプロイされます。また、ネットワーク アカウントが LOCALMACHINE MY の下に展開された秘密鍵にアクセスできるように、IIS がセットアップされています。
EDIT 07/01/2012 : 証明書が公式の CA (つまり、verisign、thawte ...) によって発行された場合に機能します。