Force HttpWebRequest zum Senden des Client-Zertifikats

Ich habe ein p12 Zertifikat, das ich so lade:

X509Certificate2 certificate = new X509Certificate2(certName, password,
        X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet |
        X509KeyStorageFlags.Exportable);

It ist richtig geladen, in der Tat, wenn ichcertificate.PrivateKey.ToXmlString(true); Es wird eine vollständige XML ohne Fehler zurückgegeben. Aber wenn ich es mache

try
{
    X509Chain chain = new X509Chain();
    var chainBuilt = chain.Build(certificate);
    Console.WriteLine("Chain building status: "+ chainBuilt);

    if (chainBuilt == false)
        foreach (X509ChainStatus chainStatus in chain.ChainStatus)
            Console.WriteLine("Chain error: "+ chainStatus.Status);
}
catch (Exception ex)
{
    Console.WriteLine(ex);
}

it schreibt:

Chain building status: False
Chain error: RevocationStatusUnknown 
Chain error: OfflineRevocation 

so wenn ich tue:

        ServicePointManager.CheckCertificateRevocationList = false;
    ServicePointManager.ServerCertificateValidationCallback = (a, b, c, d) => true;
    ServicePointManager.Expect100Continue = true;
    Console.WriteLine("connessione a:" + host);
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(host);
    req.PreAuthenticate = true;
    req.AllowAutoRedirect = true;
    req.ClientCertificates.Add(certificate);
    req.Method = "POST";
    req.ContentType = "application/x-www-form-urlencoded";
    string postData = "login-form-type=cert";
    byte[] postBytes = Encoding.UTF8.GetBytes(postData);
    req.ContentLength = postBytes.Length;
    Stream postStream = req.GetRequestStream();
    postStream.Write(postBytes, 0, postBytes.Length);
    postStream.Flush();
    postStream.Close();

    WebResponse resp = req.GetResponse();

der Server meldet, dass das Zertifikat nicht gesendet / gültig ist.

Meine Frage ist

Wie kann ich das Zertifikat auch mit falschem Kettenaufbau senden? Gibt es eine andere Klasse, die ein Zertifikat bereitstellt, das die Zertifikatsprüfung vor dem Senden nicht überprüft?

Danke vielmals. Antonino

Antworten auf die Frage(6)

Ihre Antwort auf die Frage