本文轉載自https://blog.csdn.net/qq_41608008/article/details/80491447api
部署 HTTPS 網站的時候須要證書,證書由 CA 機構簽發,大部分傳統 CA 機構簽發證書是須要收費的,這不利於推進 HTTPS 協議的使用。瀏覽器
Let’s Encrypt 也是一個 CA 機構,但這個 CA 機構是免費的!!!也就是說簽發證書不須要任何費用。服務器
在沒有出現通配符證書以前,Let’s Encrypt 支持兩種證書。工具
1)單域名證書:證書僅僅包含一個主機。測試
2)SAN 證書:一張證書能夠包括多個主機(Let’s Encrypt 限制是 20)網站
證書包含的主機能夠不是同一個註冊域,不要問我註冊域是什麼?註冊域就是向域名註冊商購買的域名。this
對於我的用戶來講,因爲主機並非太多,因此使用 SAN 證書徹底沒有問題,可是對於大公司來講有一些問題:阿里雲
讀者能夠思考下,對於大企業來講,SAN 證書可能並不能知足需求,相似於 sina 這樣的網站,全部的主機所有包含在一張證書中,而使用 Let’s Encrypt 證書是沒法知足的。.net
通配符證書就是證書中能夠包含一個通配符,好比 .example.com、.example.cn,讀者很快明白,大型企業也可使用通配符證書了,一張證書能夠防止更多的主機了。插件
這個功能能夠說很是重要,從功能上看 Let’s Encrypt 和傳統 CA 機構沒有什麼區別了,會不會觸動傳統 CA 機構的利益呢?
爲了實現通配符證書,Let’s Encrypt 對 ACME 協議的實現進行了升級,只有 v2 協議才能支持通配符證書。
也就是說任何客戶端只要支持 ACME v2 版本,就能夠申請通配符證書了,是否是很激動。
官方介紹 Certbot 0.22.0 版本支持新的協議版本
在瞭解該協議以前有幾個注意點:
1)客戶在申請 Let’s Encrypt 證書的時候,須要校驗域名的全部權,證實操做者有權利爲該域名申請證書,目前支持三種驗證方式:
而申請通配符證書,只能使用 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
介紹下相關參數:
接下去就是命令行的輸出:
上述有兩個交互式的提示:
確認贊成才能繼續。
繼續查看命令行的輸出,很是關鍵:
上面輸出要求給 _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
輸出結果以下
到此爲此,申請證書相關的工做就完成了
因爲咱們申請的證書爲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之旅