質問

私は、単純なXMLベースのWebサービスにアクセスするために使用するPKCS#12証明書が発行されています。私は、Windows(Vistaの場合)にPKCS#12ファイルをロードすると、私は自分のブラウザを使用してサービスにアクセスすることができます。

OS証明書のコレクションにPKCS#12をロードせずに、私は次のコードを書かれている、アプリケーションを介してサービスにアクセスしようとすると、

// The certificate i'm using can not be authenticated as it is a development one. 
// For now, just ignore it.
static bool myRemoteCertificateValidationCallback(
         Object sender,
         X509Certificate certificate,
         X509Chain chain,
         SslPolicyErrors sslPolicyErrors
)
{ return true; }

static void Main(string[] args)
{
    ServicePointManager.ServerCertificateValidationCallback = myRemoteCertificateValidationCallback;
    X509Certificate Cert = new X509Certificate(@"certificatefile.p12","medialab");
    HttpWebRequest Req = (HttpWebRequest)WebRequest.Create("https://ServiceURL");
    Req.ClientCertificates.Add(Cert);

    Stream S = Req.GetResponse().GetResponseStream();
    TextReader TR = new StreamReader(S);
    string Ret = TR.ReadToEnd();
    Console.Write(Ret);

}

は、悲しいことに、このコードは失敗し、私はSystem.Net.WebExceptionを取得:要求は中止されました:SSL / TLSのセキュリティで保護されたチャネルを作成できませんでした。私はWindowsにPKCS#12ファイルをロード行うとき、コードが突然働くことに気付きました。

私は一人でファイルを実行し、Windowsの証明書ストアを使用しないようにするために行うには何が必要ですか?

おかげで、 ボアズ

詳細情報:ちょうど私のVisual StudioにSP1を適用して、今、私は別の例外を取得:「SSPIへの呼び出しが失敗し、内部例外を参照してください」内部例外で - >「のメッセージが受信予期しない、または不正な形式でした。」

役に立ちましたか?

解決

あなたはあなたの証明書が証明書ストアにインストールされている必要があります。最も簡単な方法は、IEを使用して、証明書をインポートすることです。

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