HTTPS 證書(shū)配置
現(xiàn)在阿里云和騰訊云都支持申請(qǐng) HTTPS 證書(shū),這里不再提,有需要的可自行g(shù)oogle解決方案。
本文主要介紹的是通過(guò) letsencrypt 申請(qǐng)免費(fèi)的HTTPS證書(shū),并將其配置在IIS WEB服務(wù)器上。
0. 申請(qǐng) HTTPS 證書(shū)
在 https://www.sslforfree.com/ 申請(qǐng)證書(shū),這里我以 http://sparktodo.weihanli.xyz/ 為例申請(qǐng)?jiān)O(shè)置
- 輸入要使用HTTPS的證書(shū)地址,生成證書(shū)及驗(yàn)證文件

-
驗(yàn)證域名
驗(yàn)證域名支持三種方式,F(xiàn)TP ,文件驗(yàn)證,DNS驗(yàn)證
1.png如果有FTP,推薦使用FTP驗(yàn)證,簡(jiǎn)單快捷;如果沒(méi)有FTP推薦使用文件驗(yàn)證,如果端口號(hào)不是80端口請(qǐng)使用DNS驗(yàn)證方式。
2.png3.png這里以 文件驗(yàn)證 為例驗(yàn)證域名,點(diǎn)擊 “Manually Verify Domain”按鈕獲取驗(yàn)證文件,點(diǎn)擊下面的鏈接下載文件
在網(wǎng)站根目錄下創(chuàng)建文件夾,并將驗(yàn)證文件放在里面
windows 創(chuàng)建目錄:
mkdir .well-known\acme-challengelinux 創(chuàng)建目錄:
mkdir -p .well-known/acme-challenge如果你用的是IIS作為WebServer,那么還需要設(shè)置一下MIME類(lèi)型,具體方法如下:
4.png5.png點(diǎn)擊下面的驗(yàn)證鏈接,如果沒(méi)有錯(cuò)誤就證明已經(jīng)驗(yàn)證通過(guò)可以直接下載證書(shū)
【asp.net core項(xiàng)目需要另外設(shè)置】
針對(duì) asp.net core項(xiàng)目,我們需要將創(chuàng)建的文件放在 wwwroot 目錄下,并且在程序中添加對(duì)沒(méi)有擴(kuò)展名的文件的支持,
添加對(duì)沒(méi)有擴(kuò)展名的文件的支持的代碼如下:在
StartUp中的Configure方法中配置app.UseStaticFiles(new StaticFileOptions() { ServeUnknownFileTypes = true }); 下載

驗(yàn)證通過(guò)之后下載我們的證書(shū),下載之后會(huì)是一個(gè)包含三個(gè)文件的壓縮包,三個(gè)文件中有兩個(gè)crt和一個(gè)private key,
這可能并不是你想到的證書(shū)格式,那么你需要轉(zhuǎn)換證書(shū)格式,如果你使用 IIS 作為WebServer,windows 不識(shí)別 private key,所以需要把證書(shū)合成一個(gè) *.pfx 的證書(shū)
1. 證書(shū)格式轉(zhuǎn)換
下載的證書(shū)可能并不是你需要的格式,建議下載 openssl 進(jìn)行轉(zhuǎn)換,如果是linux系統(tǒng),那會(huì)比較容易直接從官網(wǎng)下載。
-
下載openssl
如果是windows系統(tǒng)可能會(huì)有一些繁瑣,官方不提供windows版的,從這里下載windows版openssl
- 64位系統(tǒng)推薦下載這個(gè):https://slproweb.com/download/Win64OpenSSL_Light-1_1_0e.exe
- 32位系統(tǒng)推薦下載這個(gè):https://slproweb.com/download/Win32OpenSSL_Light-1_1_0e.exe
下載并安裝好之后,建議配置系統(tǒng)環(huán)境以更方便的使用
-
轉(zhuǎn)換證書(shū)格式
-
轉(zhuǎn)換為 *.pfx 格式
openssl pkcs12 -export -in certificate.crt -inkey private.key -out certificate.pfx執(zhí)行命令會(huì)提示你輸入密碼,輸入之后會(huì)要求確認(rèn)一下密碼(無(wú)回顯),密碼在導(dǎo)入證書(shū)時(shí)會(huì)用到
7.png
-
- 轉(zhuǎn)換為 *.pem 格式
```
openssl rsa -in private.key -text > private.pem
```
2. WEB服務(wù)器配置 HTTPS 證書(shū)
這里以 IIS 部署為例,更多web服務(wù)器配置HTTPS請(qǐng)參考https://www.wosign.com/Docdownload/index.htm
雙擊*.pfx證書(shū)文件即可導(dǎo)入證書(shū),按提示導(dǎo)入證書(shū)即可,導(dǎo)入成功之后,配置IIS Web服務(wù)器:

配置 HTTP 自動(dòng)轉(zhuǎn)換為 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


- 自定義錯(cuò)誤頁(yè)面

3. Summary
生活處處是驚喜,轉(zhuǎn)角遇到坑。
寫(xiě)這篇文章的時(shí)候,第一次配置主要是 openssl 的安裝搞了好長(zhǎng)時(shí)間,第二次配置比第一次順利一些,但是也遇到了新的問(wèn)題,第一次配置的是一個(gè)ASP.NET項(xiàng)目,第二次是一個(gè)ASP.NET Core項(xiàng)目,第二次文件驗(yàn)證不成功,后來(lái)修改了代碼之后終于可以了,第二次還配置了強(qiáng)制HTTPS,第一次的項(xiàng)目配置的是前臺(tái)功能允許使用HTTP,但是后臺(tái)功能要求必須是HTTPS,第二次是全站HTTPS。
如果看完還有什么問(wèn)題或者覺(jué)得文章有什么問(wèn)題,歡迎指出,歡迎聯(lián)系我 weihanli@outlook.com
生命不息,踩坑不止。





