Ich habe ein PKCS # 12-Zertifikat ausgestellt, das für den Zugriff auf einen einfachen XML-basierten Webdienst verwendet werden soll. Wenn ich die PKCS # 12-Datei in Windows (Vista) lade, kann ich mit meinem Browser auf den Dienst zugreifen.Wie verwendet man eine PKCS # 12 Zertifikatsdatei in einer .NET WebRequest?
Der Versuch, den Service durch eine Anwendung zuzugreifen, ohne die PKCS Sammlungen # 12 in die OS-Zertifikat zu laden, 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 Anfrage wurde abgebrochen: Sicherer SSL/TLS-Kanal konnte nicht erstellt werden. Ich habe festgestellt, dass der Code plötzlich funktioniert, wenn ich die PKCS # 12-Datei in Windows lade.
Was muss ich tun, um mit der Datei alleine fertig zu werden und den Windows-Zertifikatspeicher zu vermeiden?
Danke, Boaz
Weitere Informationen: Nur SP1 auf meine Visual Studio angelegt und ich jetzt eine andere Ausnahme: "Ein Aufruf an SSPI failed finden Innere Ausnahme" mit einer inneren Ausnahme -> „The Die Nachricht wurde unerwartet oder falsch formatiert. "