1. 程式人生 > >申請免費通配符證書(Let's Encrypt)並綁定IIS(轉載)

申請免費通配符證書(Let's Encrypt)並綁定IIS(轉載)

uri ges 阿裏雲 子域名 4.3 交互 epo 圖片 但是

本文轉載自https://blog.csdn.net/qq_41608008/article/details/80491447

什麽是 Let’s Encrypt?

部署 HTTPS 網站的時候需要證書,證書由 CA 機構簽發,大部分傳統 CA 機構簽發證書是需要收費的,這不利於推動 HTTPS 協議的使用。

Let’s Encrypt?也是一個 CA 機構,但這個 CA 機構是免費的!!!也就是說簽發證書不需要任何費用。

什麽是通配符證書

在沒有出現通配符證書之前,Let’s Encrypt 支持兩種證書。

1)單域名證書:證書僅僅包含一個主機。

2)SAN 證書:一張證書可以包括多個主機(Let’s Encrypt 限制是 20)

證書包含的主機可以不是同一個註冊域,不要問我註冊域是什麽?註冊域就是向域名註冊商購買的域名。

對於個人用戶來說,由於主機並不是太多,所以使用 SAN 證書完全沒有問題,但是對於大公司來說有一些問題:

  • 子域名非常多,而且過一段時間可能就要使用一個新的主機。
  • 註冊域也非常多。

讀者可以思考下,對於大企業來說,SAN 證書可能並不能滿足需求,類似於 sina 這樣的網站,所有的主機全部包含在一張證書中,而使用 Let’s Encrypt 證書是無法滿足的。

Let’s Encrypt 通配符證書

通配符證書就是證書中可以包含一個通配符,比如?.example.com、.example.cn,讀者很快明白,大型企業也可以使用通配符證書了,一張證書可以防止更多的主機了。

這個功能可以說非常重要,從功能上看 Let’s Encrypt 和傳統 CA 機構沒有什麽區別了,會不會觸動傳統 CA 機構的利益呢?

如何申請 Let’s Encrypt 通配符證書

為了實現通配符證書,Let’s Encrypt 對 ACME 協議的實現進行了升級,只有 v2 協議才能支持通配符證書。

也就是說任何客戶端只要支持 ACME v2 版本,就可以申請通配符證書了,是不是很激動。

官方介紹 Certbot 0.22.0 版本支持新的協議版本

在了解該協議之前有幾個註意點:

1)客戶在申請 Let’s Encrypt 證書的時候,需要校驗域名的所有權,證明操作者有權利為該域名申請證書,目前支持三種驗證方式:

  • dns-01:給域名添加一個 DNS TXT 記錄。
  • http-01:在域名對應的 Web 服務器下放置一個 HTTP well-known URL 資源文件。
  • tls-sni-01:在域名對應的 Web 服務器下放置一個 HTTPS well-known URL 資源文件。

而申請通配符證書,只能使用 dns-01 的方式

安裝Windows Ubuntu Bash
技術分享圖片

打開控制面板\所有控制面板項\程序和功能,點擊左邊的“啟用/關閉Windows功能”
選擇上“適用於Linux的Windows子系統”後點“確定”安裝相關功能
技術分享圖片
然後打開“應用商店”Microsoft Store
搜索“Linux"會出現”在Windows上運行Linux的專題。
列出來的Linux子系統都是Windows10支持的Bash,
本人安裝的是Ubuntu
技術分享圖片
安裝後會在菜單裏顯示Ubuntu的啟動項,第一次運行的時候,會要求設置一下管理員的相關密碼
按提示設置就可以了
然後從菜單啟動,就會看到熟悉的Ubuntu控制臺了
我們用sudo lsb_release -a就可以看到當前安裝的Ubuntu版本了

Giant@Giant:~$ sudo lsb_release -a
[sudo] password for Giant:
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.3 LTS
Release:        16.04
Codename:       xenial

接下來我們開始在這個Ubuntu Bash裏通過Certbot申請Let‘s Encrypt通配符證書
首先安裝Certbot
打開Certbot官網https://certbot.eff.org/
選擇我們申請證書的使用方式後,就會出現相關安裝命令
技術分享圖片

由於我們的Ubuntu Bash系統是16.04版本,所以選擇此系統
然後就會看到安裝命令為

$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install certbot 

完成這些命令後,我們的申請證書工具certbot已經安裝完成。
我們打算給51tcsd.com這個域名申請通配符證書
那麽我們就運行此命令

$ sudo certbot certonly  -d *.51tcsd.com --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory

介紹下相關參數:

  • certonly,表示安裝模式,Certbot 有安裝模式和驗證模式兩種類型的插件。
  • --manual 表示手動安裝插件,Certbot 有很多插件,不同的插件都可以申請證書,用戶可以根據需要自行選擇
  • -d 為那些主機申請證書,如果是通配符,輸入 *.newyingyong.cn(可以替換為你自己的域名)
  • --preferred-challenges dns,使用 DNS 方式校驗域名所有權
  • --server,Let‘s Encrypt ACME v2 版本使用的服務器不同於 v1 版本,需要顯示指定。

接下去就是命令行的輸出:
技術分享圖片

上述有兩個交互式的提示:

  • 是否同意 Let‘s Encrypt 協議要求
  • 詢問是否對域名和機器(IP)進行綁定

確認同意才能繼續。

繼續查看命令行的輸出,非常關鍵:

  • 要求配置 DNS TXT 記錄,從而校驗域名所有權,也就是判斷證書申請者是否有域名的所有權。*

上面輸出要求給?_acme-challenge.51tcsd.com 配置一條 TXT 記錄,在沒有確認 TXT 記錄生效之前不要回車執行。

我使用的是阿裏雲的域名服務器,登錄控制臺操作如下圖:
技術分享圖片

然後打開另一個終端輸入以下命令確認配置是否生效

dig -t txt _acme-challenge.51tcsd.com @8.8.8.8

輸出如下表示成功配置好DNS記錄了
技術分享圖片

然後在申請證書的終端裏按下回車執行,輸出如下
技術分享圖片

關鍵信息如下

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/51tcsd.com-0001/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/51tcsd.com-0001/privkey.pem
   Your cert will expire on 2018-08-23. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"

表示把相關證書保存在了/etc/letsencrypt/live/51tcsd.com-0001/這個目錄
我們進去看一下此目錄文件生成了如下文件
cert.pem? chain.pem? fullchain.pem? privkey.pem? README
在Bash下,如果沒有用超級用戶可能進不到live/51tcsd.com-0001/,顯示沒有權限
我們用超級用戶進入,命令如果下

$ sudo su

輸出結果如下
技術分享圖片

到此為此,申請證書相關的工作就完成了

怎麽把申請到的證書導入到IIS中

由於我們申請的證書為pem格式,而IIS只支持pfx格式證書
所以我們要把輸的人pem文件合並為pfx證書

這樣我們就要用到openssl命令了

openssl pkcs12 -export -out 51tcsd.pfx -inkey privkey.pem -in fullchain.pem -certfile cert.pem

我們用此命令把pem文件合並為51tcsd.pfx文件,提示中要輸入證書的密碼,按提示輸入即可
顯示輸出如下
技術分享圖片

我們可以看到,當前目錄下成功生成了51tcsd.pfx文件
接下來我們就要把51tcsd.pfx文件導入到Windows系統
我們知道Ubuntu對於Windows來說只是一個應用,
所以Ubuntu裏所有的文件,我們都可以通過Windows資源管理裏看到,
我發現我的Ubuntu目錄掛載在我的Windows目錄的此位置

C:\Users\Administrator\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs
技術分享圖片

C:\Users\Administrator\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\etc\letsencrypt\live\51tcsd.com-0001

就可以看到我們的pfx文件了
技術分享圖片

接下來。我們右鍵證書點安裝pfx
技術分享圖片

輸入剛剛openssl合並的時候輸入的密碼
技術分享圖片

點完成後。就會顯示導入成功了

接下來。我們打開IIS管理器。看到服務器證書裏面,就能發現我們申請的通配符證書了
技術分享圖片
技術分享圖片

測試證書

接下來,我們給一個站點綁定隨便一個二級域名,比如:a.51tcsd.com

首先把hosts文件把a.51tcsd.com解析到我本機127.0.0.1
技術分享圖片

然後在IIS裏選擇站點”Default Web Site"選擇右邊的“綁定”
輸入相關信息,並選擇證書
技術分享圖片

然後我們在瀏覽器裏訪問https://a.51tcsd.com/

是不是看到驚喜了
技術分享圖片

到此為止。申請免費通配符證書(Let‘s Encrypt)並綁定IIS已經完成
開啟我們站點HTTPS之旅

歡迎訪問個人主頁

申請免費通配符證書(Let's Encrypt)並綁定IIS(轉載)