使用HttpWebRequest类时的SSL支持
来源:互联网 发布:阿里云邮箱怎么样 编辑:程序博客网 时间:2024/05/13 00:49
在使用HttpWebRequest类向远端URL发送数据时,如果URL为https协议,就会出现异常。因为该url使用了SSL身份验证协议,而它又是依赖于证书的。当然,如果你直接使用浏览器访问该URL,而且之前你已经获取了相关证书并成功导入到自己的证书库中,那么,请求时服务器会自动进行验证。但现在这种情况下,则必须还要多做一些工作。
解决方法是在执行你的代码之前先回调一个名为ServicePointManager的类,每当http客户端的堆栈进行证书验证时,都会检查是否可以回调,如果可以,则执行你你的代码。而要挂接该回调,则必须提供类型RemoteCertificateValidationCallback的一个委托:
ServicePointManager.ServerCertificateValidationCallback =
new RemoteCertificateValidationCallback(VerifyServerCertificate);
在回调中,您会获得服务器证书、一个错误代码和一个传入的链对象,然后可以执行自己的检查并返回 true 或 false。如:
private bool VerifyServerCertificate(
object sender, X509Certificate certificate,
X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
if (sslPolicyErrors == SslPolicyErrors.None) return true;
foreach (X509ChainStatus s in chain.ChainStatus)
{
// allows expired certificates
if (string.Equals(s.Status.ToString(), "NotTimeValid",
StringComparison.OrdinalIgnoreCase))
return true;
}
return false;
}
在2.0以前的版本中,是采用一个叫做CertificatePolicy的接口来实现的。
以上信息来源于MSDN,更多有关支持证书的用法可以访问这里:http://msdn.microsoft.com/zh-cn/magazine/cc163454.aspx#S6
- 使用HttpWebRequest类时的SSL支持
- 使用HttpWebRequest请求远端服务器时如何加载SSL证书
- C#、VB.NET使用HttpWebRequest访问https地址(SSL)的实现方法
- HttpWebRequest类与 WebRequest类的使用
- HttpWebRequest使用的注意事项
- [C#]使用HttpWebRequest请求远端服务器时如何加载SSL证书
- [dotNET]使用HttpWebRequest请求远端服务器时如何加载SSL证书
- [dotNET]使用HttpWebRequest请求远端服务器时如何加载SSL证书
- [dotNET]使用HttpWebRequest请求远端服务器时如何加载SSL证书
- 用HttpWebRequest加载证书建立SSL通道时发生异常的解决办法zt
- [C#]用HttpWebRequest加载证书建立SSL通道时发生异常的解决办法
- [dotNET]用HttpWebRequest加载证书建立SSL通道时发生异常的解决办法
- [dotNET]用HttpWebRequest加载证书建立SSL通道时发生异常的解决办法
- [dotNET]用HttpWebRequest加载证书建立SSL通道时发生异常的解决办法
- [dotNET]用HttpWebRequest加载证书建立SSL通道时发生异常的解决办法
- [C#]用HttpWebRequest加载证书建立SSL通道时发生异常的解决办法
- [C#]用HttpWebRequest加载证书建立SSL通道时发生异常的解决办法
- 支持SSL的封装类--CAsyncSocketEx
- C#日期相减提供了两种方法。
- 417
- symbian 按键事件的处理1
- 夕阳之恋
- 怎样判断主力洗盘和出逃
- 使用HttpWebRequest类时的SSL支持
- 为root用户设置密码
- 名片和一些设计要求
- loadrunner中Think time的设置(图片原创,文档内容转载)
- 等待列队的详细解释
- FAST ESP和IBM Omnifind的比较
- T-SQL入門攻略之9-创建与查看数据库
- Access数据库连接
- global temporary table