电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

.NetCore+OpenSSL实现Https

来源:金蝶云社区作者:金蝶2024-09-167

.NetCore+OpenSSL实现Https

.NetCore+OpenSSL实现Https

前言

最近,有时间研究了一下HTTPS安全通信的原理,感兴趣的同学可以看下上一篇博文深入理解Https如何保证通信安全 ,随即联想到近段时间开发的.NetCore项目,.NetCore API应用程序是默认支持HTTP(5000端口)和HTTPS(5001端口)的,但由于项目都是在内网中使用,所以走的都是HTTP,忽略了HTTPS的实战应用,所以本着“厚积薄发”的原则,和大家分享下实操经验。

OpenSSL自签名证书

HTTPS安全通信需要“数字证书”,.NetCore中支持X.509格式标准的安全证书,所以我们先要搞一个X509自签名证书(正规的网站需要向CA机构申请证书),这里推荐大家用OpenSSL工具生成证书。

Windows版本下载地址: http://slproweb.com/products/Win32OpenSSL.html ,如果只是自测使用,下载简化版Light的exe格式的直接安装就行。

CMD窗口启动OpenSSL:

 第一步:生成私钥文件.key

genrsa -out test.key 2048

2048:表示私钥文件字节大小

第二步:生成cer格式证书(适用windows系统)

req -new -x509 -key test.key -out test.cer -days 3650

-509:表示生成x509证书而不是生成证书请求文件csr

-key:指定私钥文件,与生成的cer(实际就是包含公钥)形成密钥对

-days 3650:设置证书有效期,以天为单位

后续会要求输入证书的相关信息:

 其中Common Name一定要注意:要设置你的网站的域名(如果是本地环境,可以自定义一个域名,修改系统Host文件,将127.0.0.1指向自定义域名,如:www.samples.com)

第三步:生成.pfx证书(包含私钥和公钥),.NetCore项目中使用

pkcs12 -export -out test.pfx -inkey test.key -in test.cer

然后按照提示设置证书密码:

完成以上步骤后,我们就可以在根目录得到三份文件

 然后,你只要在本地安装.cer证书就可以安全访问自签名的HTTPS网站了。

.NetCore API项目开启HTTPS

为Kestrel服务器开启Https端口监听,并使用X509格式证书验证。

复制代码
public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(builder =>
            {
                builder.UseKestrel(options =>
                {                    //设置监听端口
                    var configure = options.ApplicationServices.GetRequiredService<IConfiguration>();                    var port = configure.GetValue<int>("Http:Port");
                    options.ListenAnyIP(port);                    //监听https端口
                    var httpsPort = configure.GetValue<int>("Https:Port");
                    options.ListenAnyIP(httpsPort, config =>
                    {                        var certPath = configure.GetValue<string>("Cert:path");                        var certPwd = configure.GetValue<string>("Cert:pwd");                        var x509ca = new X509Certificate2(certPath, certPwd);
                        //config.UseHttps(certPath, certPwd);     

.NetCore+OpenSSL实现Https

.NetCore+OpenSSL实现Https前言最近,有时间研究了一下HTTPS安全通信的原理,感兴趣的同学可以看下上一篇博文深入理解Https如何保证通信安...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信