|
在进行HTTPS 网址访问时绕过了证书验证,但需要输入私钥
为了尝试解决,在httphelper中添加了 证书密码,但是未果。
借助其他的求助帖试了一下,仍然没有解决。
现在纠结中。通过httpwatch 监控,在弹出的输入密码的对话框时没有任何网络交互。
场景:USB狗,狗中只有一个证书,私钥
请高手帮忙解决一下,如何在通过了服务器证书验证后,自动进行私钥密码输入或是能绕过这个 密码输入框。
item = new HttpItem()
{
CerPath = CerPath,
CerPassword=CertificateKey,
URL = LoginUrl
};
result = http.GetHtml(item);
下面的函数,在httphelper基础上加了个证书密码,但是还是不好用。
/// <summary>
/// 设置证书
/// </summary>
/// <param name="item"></param>
private void SetCer(HttpItem item)
{
if (!string.IsNullOrWhiteSpace(item.CerPath))
{
//这一句一定要写在创建连接的前面。使用回调的方法进行证书验证。
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);
//初始化对像,并设置请求的URL地址
request = (HttpWebRequest)WebRequest.Create(item.URL);
SetCerList(item);
//将证书添加到请求里
X509Certificate x509 = new X509Certificate();
if (!string.IsNullOrWhiteSpace(item.CerPassword))
{
request.ClientCertificates.Add(new X509Certificate(item.CerPath, item.CerPassword,X509KeyStorageFlags.UserKeySet));
}
else
{
request.ClientCertificates.Add(new X509Certificate(item.CerPath));
}
}
else
{
//初始化对像,并设置请求的URL地址
request = (HttpWebRequest)WebRequest.Create(item.URL);
SetCerList(item);
}
}
|
|