使用证书创建request请求
之前写过的程序,都是普通http request。
这是第一次使用,记录下。
1 private static X509Certificate2 GetCert(string certId,StoreLocation location) 2 { 3 X509Certificate2 result = null; 4 X509Store certStore; 5 certStore = new X509Store(StoreName.My, location); 6 certStore.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadOnly); 7 8 try 9 { 10 X509Certificate2Collection set = certStore.Certificates.Find( 11 X509FindType.FindByThumbprint, certId, true); 12 13 if (set.Count > 0 && set[0] != null && set[0].HasPrivateKey) 14 { 15 result = set[0]; 16 } 17 } 18 finally 19 { 20 certStore.Close(); 21 } 22 23 return result; 24 }
说明:
命名空间:
using System.Security.Cryptography.X509Certificates;
certID:
证书含有一个指纹(thumbprint),就是certId。在证书的detail中可以查看,注意他们之间的空格,很容易copy错误;
Location:
两个类别:
CurrentUser,LocalMachine。命令行mmc然后找到证书管理。
调用:
req = WebRequest.CreateHttp(url);
// add in the cert we'll authenticate with
req.ClientCertificates.Add(GetCert(thumbprint,StoreLocation.CurrentUser));
这样就创建了一个需要证书的请求。