免費申請HTTPS萬用字元證書
阿新 • • 發佈:2020-10-30
## 前言
在阿里雲買了一個域名giantliu.cn
部署了自己的部落格系統 [https://www.giantliu.cn/](https://www.giantliu.cn/)
所有用https證書是Let's Encrypt免費申請的
因為申請的免費證書有效期是3個月,今天正好原來的過期了
這裡要重新申請新的證書。所以在這裡記錄一下
![Free Let's Encrypt SSL](https://www.giantliu.cn/2020/10/30/201030FreeLetsEncryptSSL/2.png)
![Free Let's Encrypt SSL](https://www.giantliu.cn/2020/10/30/201030FreeLetsEncryptSSL/3.png)
## 目錄
1.[安裝Certbot](#安裝Certbot)
2.[申請證書](#申請證書)
3.[轉換證書格式](#轉換證書格式)
4.[安裝證書](#安裝證書)
## 安裝Certbot
Certbot是輔助申請Let's Encrypt證書的工作
開啟Certbot官網 [官網地址](https://certbot.eff.org/)
第一步是選擇申請證書的種類,這樣Certbot可以根據選擇的種類
來幫助你在不同的環境裡申請證書
這裡我選擇None of the above On Windows
![Free Let's Encrypt SSL](https://www.giantliu.cn/2020/10/30/201030FreeLetsEncryptSSL/6.png)
然後下面會提示我們申請證書的步驟
![Free Let's Encrypt SSL](https://www.giantliu.cn/2020/10/30/201030FreeLetsEncryptSSL/7.png)
![Free Let's Encrypt SSL](https://www.giantliu.cn/2020/10/30/201030FreeLetsEncryptSSL/8.png)
這裡主要的步驟是在要在C盤建立一個目錄C:\Certbot並且當前使用者有許可權操作
然後下載Certbot安裝檔案 [下載地址](https://dl.eff.org/certbot-beta-installer-win32.exe)
下載後安裝
![Free Let's Encrypt SSL](https://www.giantliu.cn/2020/10/30/201030FreeLetsEncryptSSL/11.png)
然後我們以管理員方式執行命令列
```cmd
certbot --help
```
如果出現以下資訊,就表示Certbot安裝成功了
![Free Let's Encrypt SSL](https://www.giantliu.cn/2020/10/30/201030FreeLetsEncryptSSL/12.png)
## 申請證書
因為我們要申請的證書是萬用字元證書
這樣我只要申請了giantliu.cn的萬用字元證書後
那以giantliu.cn的所有子域都可以用這一個證書
輸入以下命令
```cmd
#以下命令表以以DNS的方式驗證giantliu.cn的域名來申請萬用字元證書
#萬用字元證書的域名為*.giantliu.cn
certbot certonly -d *.giantliu.cn --manual --preferred-challenges dns
```
輸入命令後,會出現幾個要互交的地方
1.輸入你的email地址:郵件地址
2.閱讀服務說明書並同意:A
3.步是別人要用共享你的郵件地址,給你推送相關資訊:Y
4.問你是不是有這個域名的所有權
因為它要你解析一個TXT記錄到固定地址來驗證你是有這個域名的所有權的:Y
然後最下面就是要你解釋一個TXT記錄到_acme-challenge.giantliu.cn
值為:amJUh7UHWPm-CXCTaKtYIinUR3dYpmPWmgxKsnryZLo
到了這一步後,不要急於按回車結束
因為你還沒有解析記錄,不然會申請不成功的
![Free Let's Encrypt SSL](https://www.giantliu.cn/2020/10/30/201030FreeLetsEncryptSSL/13.png)
接下來,因為我的域名解析是在阿里雲做的,
所以我跑到阿里雲的域名解析那裡添加了一條TXT記錄
![Free Let's Encrypt SSL](https://www.giantliu.cn/2020/10/30/201030FreeLetsEncryptSSL/14.png)
新增的記錄並不一定馬上解析成功,所以我們要驗證這個TXT記錄是不是已經生效
我們開啟一個新的命令列,輸入以下命令
查詢看得到的值是不是正確,如果與結果一至
那麼我們就可以在原來的申請證書的命令列按回車繼續我們的申請
```cmd
nslookup -qt=TXT _acme-challenge.giantliu.cn
```
![Free Let's Encrypt SSL](https://www.giantliu.cn/2020/10/30/201030FreeLetsEncryptSSL/15.png)
按下回車後,Certbot會去驗證我們的DNS記錄
然後如果驗證成功,會把申請到的證書儲存到我們的
C:\Certbot\live\giantliu.cn
![Free Let's Encrypt SSL](https://www.giantliu.cn/2020/10/30/201030FreeLetsEncryptSSL/16.png)
![Free Let's Encrypt SSL](https://www.giantliu.cn/2020/10/30/201030FreeLetsEncryptSSL/17.png)
## 轉換證書格式
因為我的部落格伺服器是用的IIS
而IIS所使用的證書為pfx,所以我們要把申請的證書pem格式轉換成pfx格式
我們輸入以下openssl命令(要安裝openssl工具)
```cmd
openssl pkcs12 -export -out giantliu.pfx -inkey privkey.pem -in fullchain.pem -certfile cert.pem
```
![Free Let's Encrypt SSL](https://www.giantliu.cn/2020/10/30/201030FreeLetsEncryptSSL/18.png)
![Free Let's Encrypt SSL](https://www.giantliu.cn/2020/10/30/201030FreeLetsEncryptSSL/19.png)
## 安裝證書
然後我們把轉換後的證書giantliu.pfx複製到伺服器
點右鍵安裝證書,一直下一步到密碼
![Free Let's Encrypt SSL](https://www.giantliu.cn/2020/10/30/201030FreeLetsEncryptSSL/20.png)
然後輸入證書密碼,輸入剛剛用openssl轉換時輸入的密碼
然後一直下一步,直到完成
![Free Let's Encrypt SSL](https://www.giantliu.cn/2020/10/30/201030FreeLetsEncryptSSL/21.png)
這樣證書就已經匯入到伺服器了
然後在IIS管理器裡面就可以看到我才申請的證書
![Free Let's Encrypt SSL](https://www.giantliu.cn/2020/10/30/201030FreeLetsEncryptSSL/22.png)
接下來就可以把原來的網站繫結的證書換成新的證書
然後再看來我的部落格,
HTTPS又回來了
![Free Let's Encrypt SSL](https://www.giantliu.cn/2020/10/30/201030FreeLetsEncryptSSL/23.png)
>個人部落格原文 [https://www.giantliu.cn/2020/10/30/201030FreeLetsEncryptSSL/](https://www.giantliu.cn/2020/10/30/201030FreeLetsEncryptSSL/)