类别:电脑知识
日期:2022-01-09 浏览:26086 评论:0
1.安装证书:
(1)打开mmc;
(2)选择文件-添加/删除管理单元,左边选择证书,点击添加,选择计算机账户,点击下一步,选择本地计算机(默认选择),点击完成后,再点确定。
(3)右键个人-证书,出现导入证书界面,安装步骤导入.p12格式的证书,导完之后右边出现刚刚导入的证书。
(4)到这一步,官方让你再试一试看看,我试了仍然不行,所以接着往下配置。
(5)去微软官方下载一个叫做WinHttpCertCfg.exe的安装文件,事实上你打开这个网址它就自动下载了。下载之后安装到服务器上。
(6)在64位系统下,安装之后工具在C:\Program Files (x86)\Windows Resource Kits\Tools路径下,使用CD指令定位到该目录下。
(7)使用刚刚安装的工具,给指定用户开证书的访问权限,这是创造奇迹的命令:
winhttpcertcfg.exe -g -c LOCAL_MACHINE\MY -s "证书名称,一般是公司名称" -a "NETWORKSERVICE"
(8)上面的证书名称,官方提示你了,你双击你安装的那个证书,看看颁发给那个字段是什么值这里就填写什么。
(9)可是你很可能和我一样,上面命令执行后发现虽然提示成功,但是仍然没有用,怎么办?接着把其他两个用户也授权试试吧。事实上你在执行下面第一条命令的时候有失败提示,无所谓,接着第二条,提示成功,这个时候再试试程序能够正常企业付款。
winhttpcertcfg.exe -g -c LOCAL_MACHINE\MY -s "证书名称,一般是公司名称" -a "ASPNET" winhttpcertcfg.exe -g -c LOCAL_MACHINE\MY -s "证书名称,一般是公司名称" -a "Authenticated Users"
(10)如果还不行,那你继续战斗吧。我歇会。
2.分配权限:
在控制台中找到安装的证书,右键选择“管理私钥”,
添加自己需要的权限,如果在测试可以直接添加Everyone、Network service、 IIS_Users 等
3.修改代码:public static string Refund(string urlWithParams)
{ ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls; //协议按需选择,不行就都试一遍 ServicePointManager.ServerCertificateValidationCallback = (object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) => { return true; }; HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(urlWithParams); webRequest.Method = "GET"; //查找我们导入的证书 X509Store certStore = new X509Store(StoreName.My, StoreLocation.LocalMachine); certStore.Open(OpenFlags.ReadOnly); X509Certificate2Collection certCollection = certStore.Certificates.Find(X509FindType.FindBySubjectName, "安装的证书名字", false); webRequest.ClientCertificates.Add(certCollection[0]); using (WebResponse webResponse = webRequest.GetResponse()) { var sr = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8); var responseData = sr.ReadToEnd(); return responseData; } }
发表评论 / 取消回复