C# 通过 SSL/TLS 获取 xml 站点 - https://
本文关键字:站点 https xml 获取 通过 SSL TLS | 更新日期: 2023-09-27 18:30:24
我需要能够在控制台程序中从https网站读取xml/rss。
到目前为止,我的程序支持纯 HTTP,我一直在四处搜索,但我似乎找不到一种简单的方法来实现对 HTTPS 的支持。该网站是否有有效的证书并不重要,但我会很高兴得到有关如何检查这些证书的提示。
我可能对此了解不多,所以任何提示都是合适的!
我目前为 HTTP 所做的是:
XmlTextReader rssReader;
XmlDocument rssDoc;
rssReader = new XmlTextReader(url);
rssDoc = new XmlDocument();
rssDoc.Load(rssReader);
在没有受信任证书的站点上尝试此操作时,我收到一条错误消息,指出:"基础连接已关闭:无法为 SSL/TLS 安全通道建立信任关系。"
string url = "https://somesite.com";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream resStream = response.GetResponseStream();
我的程序需要同时支持受信任和不受信任的 https 站点。
程序在服务器上运行,因此必须在代码中处理不受信任的https站点。
对于证书问题,请尝试以下操作...
ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback((s, ce, ch, ssl) => true);
。在开始的某个地方 - 或在执行请求之前。
这基本上是无条件地验证任何证书,有点简化。
编辑:这是"盲目"信任(并且对您的应用程序具有全局特征) - 正确的实现将处理参数 - 或者需要实现ICertificatePolicy以专门处理不同的主机/证书。
编辑(证书):关于证书和SSL的实际工作方式 - 以及与上述内容相关(基于评论/讨论)...
http://www.verisign.com/ssl/ssl-information-center/how-ssl-security-works/index.htmlSSL是如何真正工作的?
https://superuser.com/questions/84572/public-key-encryption
发送HttpWebRequest
或使用HttpClient
。 两者都是为建立/协商这些连接而设计的。
可能的欺骗:如何使用 XmlTextReader 从 https 加载 xml
如何使用 WebRequest 访问使用 https 的 SSL 加密站点?
HttpWebRequest with https in C#