技术思绪摘录旅行
现在要想让你测试的站点支持HTTPS,VS在创建项目的时候,可以直接勾选HTTPS选项,用自带证书,可以实现SSL加密。但是今天解决的问题,如果我项目创建的时候没勾选,我之前不支持HTTPS,现在我要让他支持该如何处理?

OpenSSL自签名证书

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

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

1、在OpenSSL工具bin目录下运行cmd

image.png

2、进入命令模式,输入以下命令

>openssl

就是等待输入命令的状态

image.png

3、生成私钥文件.key

>genrsa -out test1.key 2048

4、生成csr证书签名请求文件

该文件实际是用来向CA机构申请证书的,由于我们是自签名,所以接下来我们用这个文件生成.cer证书

>req -new -key test1.key -out test1.csr

image.png

注意,证书密码是123456

这里的Common Name是我们本地映射的一个域名

要让谷歌认,得找个域名,修改hosts文件

127.0.0.1 www.test.com

5、准备http.ext

再OpenSSL的bin目录下,创建一个http.ext文件,并填入以下内容

keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName=@SubjectAlternativeName
[ SubjectAlternativeName ]
DNS.1=www.test.com

注意,这里的DNS.1写我们的Common Name的域名

6、生成.Cer证书

x509 -req -days 365 -in test1.csr -signkey test1.key -out test1.cer -extfile http.ext

查看证书

x509  -in test1.cer -text -noout

image.png

可以看到,我们的域名信息已经读取进去了

7、生成.pfx证书

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

image.png

一顿操作,发现bin目录下,多了这么几个文件,我们需要用到的就是test1.pfx文件

8、创建一个.NetCore WebApi项目,不勾选HTTPS选项,我们来自己实现

修改program.cs文件

 public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseKestrel(options =>
                    {
                        //设置监听端口
                        int port =5002;
                        options.ListenAnyIP(port);
                        //监听https端口
                        int httpsPort = 5003;
                        options.ListenAnyIP(httpsPort, config =>
                        {
                            string certPath = @"E:\CarsonYang\Demo\HttpsDemo\HttpsDemo\bin\Debug\net5.0\test1.pfx";
                            string certPwd ="123456";
                            var x509ca = new X509Certificate2(certPath, certPwd);
                            //config.UseHttps(certPath, certPwd);
                            config.UseHttps(x509ca);
                        });
                    });
             webBuilder.UseStartup();
});

certPath是刚刚的pfx文件,certPwd是证书密码

9、启动访问一下

https://www.test.com:5003/swagger/index.html

image.png

10、导入证书,解决信任问题

“运行”输入“certlm.msc”直接打开系统证书管理页面,选择“受信任的根证书颁发机构”右击导入你生成的.cer证书

image.png

在【证书】上右键,【所有任务】,【导入】

选择刚刚生成的pfx文件,下一步下一步,直到完成。

image.png

提示导入成功

再次启动webapi项目,访问地址

https://www.test.com:5003/swagger/index.html

image.png

大功告成啦

CarsonIT 微信扫码关注公众号 策略、创意、技术

留下您的脚步

 

最近评论

查看更多>>

精选推荐

阅读排行

友情打赏

请打开您的微信,扫一扫