相关疑难解决方法(0)

强制HttpWebRequest发送客户端证书

我有一个p12证书,我以这种方式加载它:

X509Certificate2 certificate = new X509Certificate2(certName, password,
        X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet |
        X509KeyStorageFlags.Exportable);
Run Code Online (Sandbox Code Playgroud)

它是正确加载的,实际上如果我这样做certificate.PrivateKey.ToXmlString(true);会返回一个完整的xml而不会出错.但如果我这样做:

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);
}
Run Code Online (Sandbox Code Playgroud)

它写道:

Chain building status: False
Chain error: RevocationStatusUnknown 
Chain error: OfflineRevocation 
Run Code Online (Sandbox Code Playgroud)

所以当我这样做时:

        ServicePointManager.CheckCertificateRevocationList = false;
    ServicePointManager.ServerCertificateValidationCallback = (a, b, c, d) => true;
    ServicePointManager.Expect100Continue = true;
    Console.WriteLine("connessione a:" + …
Run Code Online (Sandbox Code Playgroud)

c# httpwebrequest x509certificate

6
推荐指数
1
解决办法
3万
查看次数

标签 统计

c# ×1

httpwebrequest ×1

x509certificate ×1