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

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

什麼是 Let’s Encrypt?

部署 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

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之旅

歡迎訪問我的主頁

相關文章
相關標籤/搜索