Frage

Ich habe für den Zugriff auf einen einfachen XML-basierten Web-Service ein PKCS # 12-Zertifikat ausgestellt verwendet werden sollte. Wenn ich die PKCS # 12-Datei in dem Windows (Vista) laden, kann ich den Dienst mit meinem Browser zugreifen.

Der Versuch, den Service durch eine Anwendung zuzugreifen, ohne die PKCS # 12 in die OS-Zertifikat Laden Sammlungen, habe ich den folgenden Code geschrieben:

// 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);

}

Leider dieser Code nicht und ich bekomme eine System.Net.WebException: Die Anforderung wurde abgebrochen: Es konnte keine sichere SSL / TLS-Kanal erstellen. Ich habe bemerkt, dass, wenn ich die # 12-Datei in Windows-PKCS tun laden, der Code plötzlich funktioniert.

Was muss ich tun, um mit der Datei zu machen allein zu tun und vermeiden Sie den Windows-Zertifikatspeicher verwenden?

Danke, Boaz

Weitere Informationen: Nur angewandt SP1 auf meine Visual Studio und jetzt bekomme ich eine andere Ausnahme: „Ein Aufruf von SSPI fehlgeschlagen, siehe Innere Ausnahme“ mit einer inneren Exception -> „Die empfangene Nachricht war unerwartet oder falsch formatierte.“

War es hilfreich?

Lösung

Sie haben Ihr Zertifikat im Zertifikatspeicher installiert haben. Der einfachste Weg ist IE zu verwenden und das Zertifikat importiert werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top