HTTPS 證書配置 現在阿裡雲和騰訊雲都支持申請 HTTPS 證書,這裡不再提,有需要的可自行google解決方案。 本文主要介紹的是通過 letsencrypt 申請免費的HTTPS證書,並將其配置在IIS WEB伺服器上。 0. 申請 HTTPS 證書 在 https://www.sslfor ...
HTTPS 證書配置
現在阿裡雲和騰訊雲都支持申請 HTTPS 證書,這裡不再提,有需要的可自行google解決方案。 本文主要介紹的是通過 letsencrypt 申請免費的HTTPS證書,並將其配置在IIS WEB伺服器上。
0. 申請 HTTPS 證書
在 https://www.sslforfree.com/ 申請證書,這裡我以 http://sparktodo.weihanli.xyz/ 為例申請設置
-
輸入要使用HTTPS的證書地址,生成證書及驗證文件
-
驗證功能變數名稱
驗證功能變數名稱支持三種方式,FTP ,文件驗證,DNS驗證
如果有FTP,推薦使用FTP驗證,簡單快捷;如果沒有FTP推薦使用文件驗證,如果埠號不是80埠請使用DNS驗證方式。
這裡以 文件驗證 為例驗證功能變數名稱,點擊 “Manually Verify Domain”按鈕獲取驗證文件,點擊下麵的鏈接下載文件
在網站根目錄下創建文件夾,並將驗證文件放在裡面
windows 創建目錄:
mkdir .well-known\acme-challenge
linux 創建目錄:
mkdir -p .well-known/acme-challenge
如果你用的是IIS作為WebServer,那麼還需要設置一下MIME類型,具體方法如下:
點擊下麵的驗證鏈接,如果沒有錯誤就證明已經驗證通過可以直接下載證書
【asp.net core項目需要另外設置】 針對 asp.net core項目,我們需要將創建的文件放在 wwwroot 目錄下,並且在程式中添加對沒有擴展名的文件的支持, 添加對沒有擴展名的文件的支持的代碼如下:
在
StartUp
中的Configure
方法中配置1 app.UseStaticFiles(new StaticFileOptions() 2 { 3 ServeUnknownFileTypes = true 4 });
-
下載
驗證通過之後下載我們的證書,下載之後會是一個包含三個文件的壓縮包,三個文件中有兩個crt和一個private key, 這可能並不是你想到的證書格式,那麼你需要轉換證書格式,如果你使用 IIS 作為WebServer,windows 不識別 private key,所以需要把證書合成一個 *.pfx 的證書
1. 證書格式轉換
下載的證書可能並不是你需要的格式,建議下載 openssl 進行轉換,如果是linux系統,那會比較容易直接從官網下載。
-
下載openssl
如果是windows系統可能會有一些繁瑣,官方不提供windows版的,從這裡下載windows版openssl
- 64位系統推薦下載這個:https://slproweb.com/download/Win64OpenSSL_Light-1_1_0e.exe
- 32位系統推薦下載這個:https://slproweb.com/download/Win32OpenSSL_Light-1_1_0e.exe
下載並安裝好之後,建議配置系統環境以更方便的使用
-
轉換證書格式
-
轉換為 *.pfx 格式
openssl pkcs12 -export -in certificate.crt -inkey private.key -out certificate.pfx
執行命令會提示你輸入密碼,輸入之後會要求確認一下密碼(無回顯),密碼在導入證書時會用到
-
轉換為 *.pem 格式
openssl rsa -in private.key -text > private.pem
-
2. WEB伺服器配置 HTTPS 證書
這裡以 IIS 部署為例,更多web伺服器配置HTTPS請參考證書配置(https://www#wosign#com/Docdownload/index.htm)[將#替換為.]
雙擊*.pfx證書文件即可導入證書,按提示導入證書即可,導入成功之後,配置IIS Web伺服器:
配置 HTTP 自動轉換為 HTTPS,可參考以下解決方案:
- http://stackoverflow.com/questions/46347/iis7-http-https-cleanly
- https://blogs.msdn.microsoft.com/kaushal/2013/05/22/http-to-https-redirects-on-iis-7-x-and-higher/
最好的解決方案是在代碼里配置,如果是 HTTP 就重定向到 HTTPS
我的配置方式是這樣的:
- 要求 SSL
- 自定義錯誤頁面
3. Summary
生活處處是驚喜,轉角遇到坑。
寫這篇文章的時候,第一次配置主要是 openssl 的安裝搞了好長時間,第二次配置比第一次順利一些,但是也遇到了新的問題,第一次配置的是一個ASP.NET項目,第二次是一個ASP.NET Core項目,第二次文件驗證不成功,後來修改了代碼之後終於可以了,第二次還配置了強制HTTPS,第一次的項目配置的是前臺功能允許使用HTTP,但是後臺功能要求必須是HTTPS,第二次是全站HTTPS。
如果看完還有什麼問題或者覺得文章有什麼問題,歡迎指出,歡迎聯繫我 [email protected]
生命不息,踩坑不止。