Windows下部署免費SSL證書(Letsencrypt)

隨着網絡的發展,網絡安全也愈來愈重要,對於網站來講,從Http升級到https也是咱們要作的首要事情。要實現https,首先咱們須要申請一張SSL證書,這篇文章我主要介紹下邊這幾個方面:git

1. SSL簡單介紹github

2. 免費Letencrypt證書部署windows

3. 安裝注意事項api

一.SSL簡單介紹瀏覽器

  ssl做爲一個網絡加密協議,主要是存在於系統中應用層和傳輸層之間的一個安全套接字層(Secure Socket Layer),也就是位於TCP/IP協議和各個應用層協議之間,爲應用數據傳輸提供加密的協議。固然它內部又分記錄協議和握手協議兩個部分,這裏若是有興趣的能夠去詳細瞭解一下,我先簡單介紹一下流程性的東西。安全

  它的工做流程大概能夠理解爲這樣,客戶端發起網絡請求給服務端,發起握手,交換證書信息,創建鏈接。簡單來講分爲下邊幾部:服務器

  客戶端:發送其支持的ssl版本和加密方式給服務端。網絡

  服務端:選擇加密方式併發送證書和公鑰給客戶端併發

  客戶端:驗證證書信息,並經過公鑰生成共享祕鑰,交換dom

  服務端:好,我們能夠傳遞加密數據了

  以上是簡單的描述了握手的過程,每一步均可以繼續分解,能夠自行查找相關文檔深刻了解。

 

  這裏須要介紹的另一個協議TLS,這個協議創建在SSL3.0規範之上,更加嚴格明確。其中它又有一個擴展協議叫作 SNI(Server Name Indication-服務器名稱指示),這裏介紹下它的主要做用。

  在咱們經常使用的主機中,可能會有不少站點,咱們並不可以一次性提早獲知將使用此服務器的全部域名列表,可是咱們不能每次修改域名從新頒發一次證書,因此有了SNI,讓咱們能夠在一臺主機上可以部署多個證書, 使得服務器能夠在握手階段選擇正確虛擬域,併發送對應證書。在IIS8.0以上版本中,咱們綁定域名時會有以下的選項:

 

   當前有不少免費和收費 ssl的證書提供商能夠供咱們選擇,固然咱們也能夠本身做爲頒發主體,製做ssl證書,不過像谷歌等瀏覽器對於不受信任的證書機構在頁面上會給提示存在安全風險,阻止訪問,這對用戶體驗來講是很是糟糕的。根據安全等級,當前ssl證書根據主要有如下幾類:

  EV - 業界頂級SSL證書,部署了EV SSL證書的網站,地址欄會變成醒目的綠色,而且顯示網站所屬企業名稱

  OV - 使用較爲普遍的企業驗證型SSL證書,部署了OV SSL證書以後,地址欄會有安全鎖標識顯示

  DV - 只驗證域名,快速簽發的SSL證書。也會在地址欄顯示安全鎖標識,但證書詳情裏面不顯示O字段,不顯示使用者名稱,只顯示域名

  當前受到主流瀏覽器認可的不少SSL證書機構頒發的免費證書主要也都是DV等級。下面我介紹一下最近比較知名的 Letencrypt 免費ssl證書在windows下的部署過程。

 

二. 免費Letencrypt證書部署

  這個是由國外發起的一個免費的ssl項目,如今已經獲得了谷歌等主流瀏覽器的承認。從安全角度考慮,經過Letencrypt安裝的免費證書只有三個月的有效期,到期之須要從新申請,可是這也給部署形成了必定的麻煩,因此官方也提供了各類自動化的解決方案,這裏我介紹的是windows下的證書申請和自動更新工具 letsencrypt-win-simple

  首先咱們下載   GitHub地址(https://github.com/Lone-Coder/letsencrypt-win-simple/releases) 並解壓

  由於安裝過程須要在站點下生成驗證文件,因此請以管理員模式進入cmd界面,也能夠右鍵開始菜單 點擊 命令提示符(管理員)選項

進入解壓文件夾,運行 letsencrypt.exe --san 命令

執行完以後會自動將IIS下的全部網站列出來,後邊會有以下幾個選項:

這幾個選項分別對應不一樣的狀況,這裏由於個人機器下有好幾個站點,我想給他們統一頒發一個證書,我選擇S,以後它會提示你輸入要安裝的站點序號,這裏我輸入 3,4

 

接下來它會在每一個站點下建立一個裏驗證文件,驗證經過以後就會生成對應證書添加到IIS中,若是一切正常的狀況下會在任務管理中建立一個定時更新任務。

 

當前這個軟件還存在一些bug,我我的在安裝中也遇到了幾個異常終止的錯誤,重複操做兩次才正常經過,若是你也遇到問題,能夠直接去IIS下證書管理,查看是否已經建立了對應的證書,若是存在能夠手動綁定。

 

三. 注意事項

  使用Letencrypt時有必定的次數限制,以防止申請的濫用,這裏是 官方網站 給出的限制信息:

If you have a lot of subdomains, you may want to combine them into a single certificate, up to a limit of 100 Names per Certificate. Combined with the above limit, that means you can issue certificates containing up to 2,000 unique subdomains per week. A certificate with multiple names is often called a SAN certificate, or sometimes a UCC certificate.

We also have a Duplicate Certificate limit of 5 certificates per week. A certificate is considered a duplicate of an earlier certificate if they contain the exact same set of hostnames, ignoring capitalization and ordering of hostnames. For instance, if you requested a certificate for the names [www.example.comexample.com], you could request four more certificates for [www.example.comexample.com] during the week. If you changed the set of names by adding [blog.example.com], you would be able to request additional certificates.

  若是你須要測試,能夠在命令行中執行:letsencrypt.exe --test 。進入測試環境。

 

若是你還有其餘問題,或者對個人OSS開源系列項目感興趣,請關注公衆號(OSSCoder):