[Nancy][OWIN] 在 Self Host 啟用 SSL

使用 SSL 已經是網頁服務基本的資訊安全設定,在 Self Host 設定 SSL 相當的容易,應該是說有關 Self Host、OWIN、WCF 和 IIS 脫鉤的 Windows 平台服務,都是靠 netsh 來設定 URL、Certificate

IIS Express 的 SSL

假如你的開發環境是 VS IDE,預設應該會產生 localhost 的自簽憑證並且安裝,IIS Express 已經綁定了 Port 44300 to 44399 給 localhost 憑證(certificate),讓我們開發人員使用,但是要上線,還是要了解一下怎麼申請憑證,在企業內部服務我搭配 CA Server 降低憑證部署的時間,外部服務可以選擇購買一年份的憑證或是用 Free SSL 加上自動展期

有關憑證的申請可參考以下

請求可被 Chrome 瀏覽器信任的 Web 憑證

 

若對於 VS IDE 開發使用 SSL 有問題可以參考以下

[ASP.NET Web API] 開發環境使用 SSL

 

由於開發環境的憑證已經綁定憑證,所以不需要使用管理員權限開啟 VS IDE

 

接下來的操作,要用管理員身分開啟命令提示字元

URL 保留區(URL Reservations)

新增

netsh http add urlacl url=https://+:9527/ user=machine\username

netsh http add urlacl url="https://+:9527/" user="Everyone"

 

刪除

netsh http delete urlacl url="https://+:9527/"

 

查看

netsh http show urlacl

 

綁定憑證(SSL Certificate bindings)

新增

netsh http add sslcert ipport=0.0.0.0:9527 certhash=a787a0eb1fc431484b3475464b959d9b9574c160 appid={3f78cd58-8931-40b2-8752-31bb71ee1023}

需要替換 certhash 和 appid

certhash:憑證的 thumbprint

appid:GUID

用 VS IDE 內建的小工具即可快速的產生 GUID

刪除

netsh http delete sslcert  ipport=0.0.0.0:9527

 

查詢

由於筆數有點多,所以將查詢結果輸出到文字檔

netsh http show sslcert > output.txt

 

最後,Nancy 只需要用設定好的 URL、SSL 就可以了

private static void Main(string[] args)
{
    var baseUri = new Uri("https://localhost:9527");
    using (var host = new NancyHost(baseUri))
    {
        host.Start();
        Console.WriteLine("Service created");
        Console.WriteLine("Press any key to stop...");
        Console.Read();
        host.Stop();
    }
}

 

 

 

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo