首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用.net WebClient访问交叉签名SSL服务。

使用.net WebClient访问交叉签名SSL服务。
EN

Stack Overflow用户
提问于 2013-10-15 09:16:15
回答 1查看 1.3K关注 0票数 0

我有一个小型的C#应用程序,它通过HTTPS使用WebClient从web服务下载数据(URL开始于WebClient)。以下内容很长时间以来运作良好:

代码语言:javascript
运行
复制
public class WebClientEx : WebClient {
    public int Timeout {get; set;}
    protected override WebRequest GetWebRequest(Uri address) {
        var request = base.GetWebRequest(address);
        if (request != null)
            request.Timeout = Timeout;
        return request;
    }
}

using (var client = new WebClientEx()) {
    client.Proxy = new WebProxy(ProxyUrl) { Credentials = CredentialCache.DefaultCredentials };
    client.Timeout = 900000;
    var fields = new NameValueCollection { /* .... */ };
    byte[] respBytes = client.UploadValues(url, fields);
    /* .... */
}

但是,web服务的提供者最近更新了他们的SSL证书,现在我得到了以下内容:

基础连接已关闭:无法为SSL/TLS安全通道建立信任关系。

我可以禁用SSL验证以“使其工作”:

代码语言:javascript
运行
复制
public class WebClientEx : WebClient {
    public int Timeout {get; set;}
    protected override WebRequest GetWebRequest(Uri address) {
        var request = base.GetWebRequest(address);
        if (request != null)
            request.Timeout = Timeout;
        if (SSLCheckDisabled) {
            try {
                //Change SSL checks so that all checks pass
                ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
            }
            catch {
            }
        }
        return request;
    }
}

但出于明显的原因,我不想这么做!

在Windows7+ IE9上,证书在IE中是安全的和完全可信的。在使用.NET Framework4.0 WebClient访问web服务的Windows2003服务器上,IE6在一个安全警报中说:

安全证书是由您未选择信任的公司颁发的。查看证书以确定是否要信任验证机构.

链尾的证书“不受信任”是:

发行给: DigiCert高保证EV根CA

发行: DigiCert高保证EV根CA

此故障排除页面在顶部说“在此路径中的根证书名为DigiCert高保证EV根CA,并且已经被所有现代浏览器.所信任”。所有在线SSL检查程序在我测试它们时都会通过域。

所以,我的问题是--如何让我的WebClient表现得更像IE9而不是IE6,并信任这个交叉签名的SSL证书?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-15 09:39:21

如果计算机信任根CA,则信任该CA颁发的证书。您需要将Digicert根CA证书添加到计算机的可信根CA组中。这可以使用计算机帐户的证书MMC卡入来完成。

导出根CA证书

  1. 从浏览器查看网站的证书。
  2. 在“证书路径”选项卡上,选择根CA证书(在链的顶部)。
  3. 单击“查看证书”按钮
  4. 在根CA证书的“详细信息”选项卡上,单击“复制到文件”。(编码的.CER很好)。

信任根CA

  1. 打开计算机的证书MMC卡入(启动> mmc >添加插件>证书)
  2. 导航到“受信任的根证书颁发机构”文件夹
  3. 右键单击证书文件夹,选择“所有任务”>“导入”。
  4. 浏览到.cer文件并按照向导操作。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19377434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档