Asp.net core增加SSL支持

制作证书

证书种类

1.带有私钥的证书

由Public Key Cryptography Standards #12,PKCS#12标准定义,包含了公钥和私钥的二进制格式的证书形式,以pfx作为证书文件后缀名。

2.二进制编码的证书

证书中没有私钥,DER 编码二进制格式的证书文件,以cer作为证书文件后缀名。

3.Base64编码的证书

证书中没有私钥,BASE64 编码格式的证书文件,也是以cer作为证书文件后缀名。

用到的是pfx证书。

生成自定义的.pfx证书

打开Microsoft .NET Framework 的SDK命令提示(D:\Windows Kits\10\bin\10.0.17763.0\x64),按以下步骤操作:
1、创建一个自我签署的X.509证书(.cer)和一个.pvk私钥文件,用到makecert工具,命令如下:

makecert -r -n "CN=DKSOFT" -b 01/01/2008 -e 01/01/2030 -sv MyKey.pvk MyKey.cer

2、按提示设置私钥密码

3、利用X.509证书(.cer)创建发行者证书 (.spc),用到cert2spc工具

cert2spc MyKey.cer MyKey.spc

4、从.pvk和.spc格式转换成.pfx格式

pvk2pfx -pvk MyKey.pvk -spc MyKey.spc -pfx MyKey.pfx -pi 刚才输入的密码 -f

在Asp.net core里应用

打开Program.cs

                     webBuilder.UseKestrel(options =>
                     {
                         options.Listen(System.Net.IPAddress.Loopback, 6600, listenOptions =>
                         {


                             listenOptions.UseHttps(@"路径.pfx", "密码");
                         });
                     });

在客户端调用API

这种自已制作的证书是通不过验证的
在WinForm中调用API时就会报错
解决方法:

    public class util
    {

        //.Net 2.0
        public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
        {

            //直接确认,否则打不开   
            return true;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);
            HttpWebRequest req = (HttpWebRequest)WebRequest.CreateDefault(new Uri("https://127.0.0.1/"));
            req.Method = "GET";
            HttpWebResponse res = (HttpWebResponse)req.GetResponse();
        }

    }
 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值