使用 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 加上自動展期
有關憑證的申請可參考以下
若對於 VS IDE 開發使用 SSL 有問題可以參考以下
接下來的操作,要用管理員身分開啟命令提示字元
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