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)證
如果有FTP头谜,推薦使用FTP驗(yàn)證,簡(jiǎn)單快捷鸠澈;如果沒(méi)有FTP推薦使用文件驗(yàn)證柱告,如果端口號(hào)不是80端口請(qǐng)使用DNS驗(yàn)證方式砖织。
這里以 文件驗(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-challenge
linux 創(chuàng)建目錄:
mkdir -p .well-known/acme-challenge
如果你用的是IIS作為WebServer新锈,那么還需要設(shè)置一下MIME類型甲脏,具體方法如下:
點(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ì)用到
-
- 轉(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
生命不息翰蠢,踩坑不止。