ASP.NET(C#)使用证书进行SSL安全通信

 1.     获取访问网站需要的证书

为叶集等地区用户提供了全套网页设计制作服务,及叶集网站建设行业解决方案。主营业务为网站制作、成都做网站、叶集网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

2.     从微软官网下载“资源工具箱”,其中包括证书管理工具。
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=17657

安装完,Windows HTTP服务证书配置工具(WinHttpCertCfg.exe)通常应该在C:\Program Files\Windows Resource Kits\Tools文件夹下。

3.     使用CMD命令行,运行WinHttpCertCfg.exe工具
WinHttpCertCfg.exe –g –c LOCAL_MACHINE\MY –i “你的证书地址” –a “授权的用户组/名” –p密码

ASP.NET(C#)使用证书进行SSL安全通信


给IIS服务用户组授权并导入证书。

 

ASP.NET(C#)使用证书进行SSL安全通信


这样,就可以在IIS管理,证书页面可以看到刚才导入的证书。
重启IIS服务,使刚才的授权生效。

4.     导出证书为.CER文件
开始—》运行—》输入MMC;打开控制台
文件—》添加/删除管理单元
选择“证书”,点击“添加”,选择“计算机账号”,“下一步”,“完成”,“确定”
选择“个人”—》“证书”;

 

ASP.NET(C#)使用证书进行SSL安全通信


右键单击证书,“所有任务”—》“导出”—》“下一步”—》“下一步”
选择

ASP.NET(C#)使用证书进行SSL安全通信

,点击“下一步”,单击“浏览”,输入要保存的文件名和地址,“下一步”—》“完成”;
导出成功!

5.  C#使用证书进行SSL安全通信代码示例

  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Web; 
  5. using System.Web.UI; 
  6. using System.Web.UI.WebControls; 
  7. //引用命名空间 
  8. using System.IO; 
  9. using System.Net; 
  10. using System.Net.Security; 
  11. using System.Security.Authentication; 
  12. using System.Security.Cryptography.X509Certificates; 
  13.  
  14. public partial class ssl : System.Web.UI.Page 
  15.     protected void Page_Load(object sender, EventArgs e) 
  16.     { 
  17.         //验证服务器证书回调方法 
  18.         ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult); 
  19.         //创建HttpWebRequest对象 
  20.         HttpWebRequest https = (HttpWebRequest)HttpWebRequest.Create("https://localhost/restful/test/BBBAAA"); 
  21.         //创建证书 
  22.         X509Certificate obj509 = new X509Certificate(AppDomain.CurrentDomain.BaseDirectory+"cert\\ccc.cer");//写入正确的证书路径(第四步导出的Cer文件) 
  23.         //添加证书到HTTP请求中 
  24.         https.ClientCertificates.Add(obj509); 
  25.         https.Method = "GET"; 
  26.         //获取请求返回的数据 
  27.         HttpWebResponse response = (HttpWebResponse)https.GetResponse(); 
  28.         //读取返回的信息 
  29.         StreamReader sr = new StreamReader(response.GetResponseStream(), true); 
  30.         int count; 
  31.         char[] ReadBuf = new char[1024]; 
  32.         do 
  33.         { 
  34.             count = sr.Read(ReadBuf, 0, 1024); 
  35.             if (0 != count) 
  36.             { 
  37.                 Label3.Text = new string(ReadBuf); 
  38.             } 
  39.         } while (count > 0); 
  40.     } 
  41.     //重写证书验证方法,总是返回TRUE,解决未能为SSL/TLS安全通道建立信任关系的问题 
  42.     public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) 
  43.     { 
  44.         //总是返回TRUE 
  45.         return true; 
  46.     } 



本文题目:ASP.NET(C#)使用证书进行SSL安全通信
浏览路径:http://scyanting.com/article/pgjddp.html