gpt4 book ai didi

.NET6学习笔记(7)——ASP.NETCore通过配置文件启用HTTPS

转载 作者:我是一只小鸟 更新时间:2023-02-12 22:31:18 28 4
gpt4 key购买 nike

本质上我还是一个Windows App Developer,所以虽然会做一些ASP.NET Core的工作,但通常这些ASP.NET Core的程序会托管在Windows Service上,并且大部分时候跑在局域网环境。说实话传统行业的Win DEV对Web这一套其实不怎么精通,今天我们来看一下ASP.NET Core程序如何通过配置文件添加证书,启用HTTPS。 回顾上一篇 《.NET 6学习笔记(6)——SSL证书的导出和格式转换》 ,我们介绍了如何从Windows中查找证书,并转换格式。 因为本篇的ASP.NET Core可以直接使用PFX证书,所以转换这一步不再提及。我们托管在Windows Service上的ASP.NET Core程序,一般都是通过本机域名localhost + port的形式来访问。这也为使用自签证书创造了便利的条件,只要像给IIS Express用的自签证书一样,证书“使用者”(Subject)的CN(Common Name)属性是localhost,即可满足我们的要求。 除了去申请一个免费的SSL证书外。这里也讨论下,如何从Windows导出PFX格式的证书。仍以IIS Express用的自签证书举例。 通过PowerShell脚本,可以方便的查找并导出:

                          
                            $thumbPrint
                          
                           = 
                          
                            $null
                          
                          
                            $certs
                          
                           = 
                          
                            get-childitem
                          
                          
                             cert:\\LocalMachine\\my

                          
                          
                            foreach
                          
                           (
                          
                            $certItem
                          
                          
                            in
                          
                          
                            $certs
                          
                          
                            )
{
    
                          
                          
                            $certItem
                          
                          
                            .Issuer
    
                          
                          
                            if
                          
                           (
                          
                            $certItem
                          
                          .Issuer 
                          
                            -eq
                          
                          
                            "
                          
                          
                            CN=localhost
                          
                          
                            "
                          
                          
                            )
    {
        
                          
                          
                            $thumbPrint
                          
                           = 
                          
                            $certItem
                          
                          
                            .Thumbprint
        
                          
                          
                            break
                          
                          
                            
    }
}


                          
                          
                            Write-Host
                          
                          
                            $thumbPrint
                          
                          
                            if
                          
                           (
                          
                            $null
                          
                          
                            -ne
                          
                          
                            $thumbPrint
                          
                          
                            ){
    
                          
                          
                            $mypwd
                          
                           = 
                          
                            ConvertTo-SecureString
                          
                           -String 
                          
                            "
                          
                          
                            1234
                          
                          
                            "
                          
                           -Force -
                          
                            AsPlainText
    
                          
                          
                            Get-ChildItem
                          
                           -Path cert:\localMachine\my\
                          
                            $thumbPrint
                          
                           | 
                          
                            Export-PfxCertificate
                          
                           -FilePath C:\temp\sampleCert.pfx -Password 
                          
                            $mypwd
                          
                          
                            Write-Host
                          
                          
                            "
                          
                          
                            Export IIS Express cert as Pfx file sucessfully.
                          
                          
                            "
                          
                          
                            
}

                          
                          
                            else
                          
                          
                             {
    
                          
                          
                            Write-Host
                          
                          
                            "
                          
                          
                            Can't find IIS Express cert.
                          
                          
                            "
                          
                          
                            
}
                          
                        

根据上述脚本,导出的证书我们在C:\temp目录可以找到,导出的时候设置了密码1234,ASP.NET Core程序通过配置文件添加证书,需要填写该密码.

当然ASP.NET Core启用HTTPS的方式有很多种,通过配置文件appsetting.Production.json来添加证书。可能是最简单的一种。 至于如何创建用来托管ASP.NET Core程序的Windows Service,可以参考 《.NET 6学习笔记(3)——在Windows Service中托管ASP.NET Core并指定端口》 。 在示例中,我们创建一个空的ASP.NET Core Web Application,然后添加一个appsettings.Production.json文件,添加如下图所示的配置信息。节点名称HttpsInlineCertFile只是举例,并非固定.

在完成以上修改后,我们publish该示例程序,成功发布后,打开publish的文件夹。然后我们双击生成的exe文件。可以看到我们成功应用了配置文件中的端口号,以及https的url.

接下来打开浏览器访问这个地址,查看证书可以发现证书的使用者是localhost,这是我们导出的IIS Express证书能被来拿使用的原因.

如果想要验证确实是在使用导出到c:\temp文件夹的证书,可以把导出的证书文件删掉。然后重新打开publish目录下的exe文件,会有Exception抛出.

本篇就到这里了,在实际的项目中,不太可能去导出IIS Express使用的证书,但是原理是相似的,不同项目组之间的Web APP在集成的时候,往往会需要实现文中的操作.

Github

manupstairs/WebAppWithHttps: This example is used to demonstrate how to add an SSL certificate through a configuration file to enable HTTPS in ASP.NET Core (github.com) 。

以下链接,是MS Learn上Windows开发的入门课程,单个课程三十分钟到60分钟不等,想要补充基础知识的同学点这里:

开始使用 Visual Studio 开发 Windows 10 应用 。

开发 Windows 10 应用程序 。

编写首个 Windows 10 应用 。

创建 Windows 10 应用的用户界面 (UI) 。

增强 Windows 10 应用的用户界面 。

在 Windows 10 应用中实现数据绑定 。

最后此篇关于.NET6学习笔记(7)——ASP.NETCore通过配置文件启用HTTPS的文章就讲到这里了,如果你想了解更多关于.NET6学习笔记(7)——ASP.NETCore通过配置文件启用HTTPS的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com