Windows,Mac OSX和Linux平台設置HTTPS以及自簽名證書詳細指南

在本文中,我會向大家介紹如何在Windows,Mac OSX和Ubuntu Linux上設置使用HTTPS與ASP.NET Core的本地開發環境,另外,我還將介紹如何創建自簽名證書並將其添加到受信任的根證書存儲區,以消除煩人的瀏覽器提示消息。最後,我將介紹如何設置用於ASP.NET Core的內置Web伺服器的Kestrel來使用HTTPS。

創建自簽名證書,設置信任項,就可以避免煩人的瀏覽器提示,記錄了自簽名證書的整個過程。在Windows和Linux上安裝證書完全是兩個不同的進程,但在ASP.NET Core環境中,跨平台開發是開發過程不可或缺的一部分,這一點至關重要。然後,Chrome中的一些通知消息,比如 「你的連接不安全」,有關通用名稱匹配的Chrome消息以及關於在ASP.NET Core和Kestrel中配置HTTPS的具體信息。

所以我認為創建一個自簽名證書詳細指南,涵蓋Windows和Linux的詳細信息將是一個好主意。

為什麼選擇HTTPS?

眾所周知,互聯網正在快速向著HTTPS時代前進。目前,HTTPS已經普遍存在了。你每天使用的大部分網站(如Google,Facebook,Microsoft,銀行網站)都在使用HTTPS。

如果你在過去2—3年內開發過應用程序,那麼你的Web應用程序的生產版本很有可能以HTTPS方式運行。展望未來,絕大多數網站將使用HTTPS。

互聯網上將有超過50%的網頁瀏覽量在使用HTTPS,Google Chrome的最終目標是將所有HTTP網站標記為不安全,所有通過HTTPS的通信都是加密的。這意味著沒有人可以窺探你的信息。

為什麼需要本地開發的自簽名證書?

每次訪問HTTPS站點時,你的瀏覽器都會下載站點的證書,其中包含使用該證書頒發機構(CA)的私鑰簽名的站點託管的伺服器的公鑰。

你的操作系統會附帶預先安裝的受信任的根CA列表,瀏覽器使用這些根CA列表來驗證證書,這是通過驗證你的瀏覽器從站點下載的證書中的公鑰是否由發出該證書的CA進行簽名來完成的。

證書還包含伺服器的域名,並被瀏覽器用來確認它所連接的站點與由CA頒發的證書中列出的站點相同。之後,進行加密。

由於我們不使用CA頒發的本地開發證書,因此我們可以發出自簽名證書,然後將此自簽名證書添加到我們受信任的根證書頒發機構存儲區。這樣,你的瀏覽器將信任證書。

自簽證書的安全性如何?

自簽名證書通過HTTPS提供加密通信,就像證書頒發機構(CA)頒發的證書一樣,至少連接一次。但這本身並不能使自簽證書安全,例如,如果沒有正確的安裝和信任,自簽名證書就容易受到中間攻擊者的威脅。由於信任自簽名證書的唯一方法是在受信任的根CA存儲區中為訪問該站點的每個設備手動導入證書,自簽名證書默認情況下實際上是不安全的。

在本地主機上,由於沒有與公共網站相同的安全要求。因此,使用自簽名證書進行本地開發是為了能夠使用HTTPS在本地開發。創建一個自簽名證書,並在Windows上信任它,在Windows中使用ASP.NET Core創建自簽名證書在Powershell中非常簡單,我寫了一個Powershell腳本來處理。

只需用管理員許可權打開Powershell,在腳本中設置證書的密碼,然後運行腳本。

創建一個自簽名證書,並在Mac OSX上信任它

為你的證書創建配置文件:

將內容粘貼到conf文件中並保存文件:

確保OpenSSL庫安裝在Max OSX上,運行以下命令檢查OpenSSL是否已安裝:

如果未安裝OpenSSL,請使用brew安裝OpenSSL:

使用OpenSSL運行以下2個命令,使用OpenSSL在Mac OSX中創建自簽名證書:

相信Mac OSX上的自簽名證書真的很簡單,打開KeyChain Access應用程序(利用KeyChain的Spotlight搜索找到它)。

在「鑰匙串」顯示窗中選擇「系統」,然後將.pfx證書拖到證書列表窗口中。

要信任你的自簽名證書,請雙擊你的證書,並在信任部分下選擇始終信任。

創建一個自簽名證書並在Ubuntu Linux上信任它

在Ubuntu Linux中創建自簽名證書更簡單。所需要的是生成自簽名證書的兩個簡單命令,以及將證書複製到可信存儲的單個命令。

為你的證書創建配置文件:

使用openssl運行以下2個命令,以在Ubuntu Linux中創建自簽名證書:

然後,運行以下certutil命令將證書添加到受信任的CA根存儲區:

要確認或列出使用certutil安裝的受信任證書,請運行以下命令:

要從受信任的CA根存儲庫中刪除證書,請運行以下命令:

ASP.NET核心中配置HTTPS

一旦你創建了一個自簽名證書,並在Linux或Windows上的根CA存儲中信任證書,則將ASP.NET Core配置為和HTTPS一樣的過程。

首先將先前在Windows或Linux中創建的.pfx證書複製到項目目錄的根目錄。

然後,創建一個包含證書文件名和密碼的certificate.json配置文件。我喜歡將它保存在一個單獨的文件中,因為這樣會使事情變得有步驟達到簡化的目的。 ASP.NET Core 2允許你在appsettings.json中配置Kestrel和HTTPS,但由於配置非常複雜,我更喜歡這種更簡單配置的方法。

特別重要的是要明確地設置防偽令牌cookie以使用安全的cookie。

完成更改後,只需構建並運行該項目,你就可以看到Chrome在沒有任何警告信息的情況下運行,並將你的網站顯示為安全的。

你可以在這裡查看GitHub存儲庫:github.com/thecarlo/htt

原 文:Develop Locally with HTTPS, Self-Signed Certificates and ASP.NET Core

譯 文:嘶吼

更多技術文章和開發者工具,SDK,API請查看:SDK.CN - 中國領先的開發者服務平台


推薦閱讀:

JMeter-HTTP請求sampler詳細說明
認識HTTP----Cookie和Session篇
MaxCompute - ODPS重裝上陣 第三彈 - 複雜類型
流式處理對 請求/響應 正文數據體的影響

TAG:HTTPS | 网络安全 | HTTP |