.NET 6學習筆記(7)——ASP.NET Core通過配置文件啓用HTTPS

本質上我還是一個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 應用中實現數據綁定

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章