當前位置:
首頁 > 科技 > 程序員如何在 HTTPS 中高效配置通配符證書?

程序員如何在 HTTPS 中高效配置通配符證書?

作者 | 阿文

責編| 郭芮

HTTPS 並不是一個新鮮玩意......2017年1月1日起,蘋果公司強制使用HTTPS 協議傳輸,其開發者必須使用 HTTPS 進行數據傳輸;2017年2月份,谷歌為了推進 HTTPS 的在網路上的應用,表示 Chrome 瀏覽器會將用戶訪問的 HTTP 頁面標記為「不安全」——近幾年,互聯網巨頭們都在極力地推廣 HTTPS,目的就是為了保證數據安全。

為什麼巨頭都放棄了 HTTP?

這要從 HTTP 這個協議本身說起。HTTP 是一個明文傳輸的協議,其協議設計時並沒有提供數據加密的機制,因此在數據傳輸過程中,你的數據就相當於是在「裸奔「,這樣帶來的問題就是很容易被不法分子劫持。

HTTP 最容易被運營商劫持。當我們訪問一個 HTTP 網站,其數據要經過運營商的網路進行數據傳輸,在傳輸過程中,運營商可以對 HTTP 協議進行劫持,修改 html 代碼,在其中插入 JS 或 DOM 牟利。

除了運營商劫持之外, 通過 HTTP 協議進行數據傳輸還容易被攻擊者監聽和中間人攻擊,從而獲取網站帳戶和敏感信息等。

HTTPS 的優勢

因為 HTTP 協議不安全,因此有了 HTTPS,多了個 S,就多了一份安全。

HTTPS 是利用 SSL/TLS 來對 HTTP 數據包進行加密傳輸,這樣一來,數據在傳輸過程中就不再是「裸奔」了。

HTTPS 提供了:

內容加密建立一個信息安全通道,來保證數據傳輸的安全;

身份認證確認網站的真實性;

數據完整性防止內容被第三方冒充或者篡改。

HTTPS 的信任繼承基於預先安裝在瀏覽器中的證書頒發機構,簡稱 CA。瀏覽器默認都會內置一些 CA 機構的根證書,只有可信任的 CA 機構頒發的證書,瀏覽器才會信任。

Let"s Encrypt

Let"s Encrypt 是一個是非營利性的互聯網安全研究組(ISRG),它提供了一個免費、自動化和開放的證書頒發機構。目前 Let"s Encrypt 已為 1.5億個網站提供 SSL 證書。

Let"s Encrypt 的優勢:

免費:擁有域名的任何人都可以零成本獲得可信證書;

自動:在Web伺服器上運行的軟體可以與其交互,以便輕鬆獲取證書,安全地配置它以供使用,並自動進行續訂;

安全:無論是在CA方面還是通過幫助網站運營商正確保護其伺服器;

透明:所有頒發或撤銷的證書將被公開記錄,供任何人查閱;

開放:自動發布和續訂協議將作為其他人可以採用的開放標準發布;

合作:就像基礎互聯網協議本身一樣,是一項讓社區受益的共同努力。

通過 Let"s Encrypt 簽發一個證書,目前其證書的生命周期為 90天,當證書快過期時,會自動向 Let"s Encrypt 伺服器發送續簽申請,再續簽一個周期。這一優勢是其他按年簽發免費證書無法提供的。

Let"s Encrypt 之所以能夠實現自動簽發證書,實際上是依賴其提供的證書自動續簽協議 ACME,目前IETF已將ACME協議標準化為RFC 8555。此外Let"s Encrypt 還提供通配符證書,並且還是免費提供的,這也是在 CA 中少有的。

通過 ACME 協議,我們可以實現全自動化的管理證書,對於證書的操作,我們只需要做一次,後續的升級續簽完全無需人工干預。

我們可以通過 acme.sh 這個開源項目來進行證書的簽發和自動升級。acme.sh 是一個純 SHELL 實現 ACME 協議的腳本。

使用 acme.sh 簽發一個證書

首先,我們需要安裝腳本:

acme.sh 提供了多種方式來進行證書的簽發,例如 DNS 模式、獨立模式、Apache 模式、Nginx模式等等。

以 DNS 模式為例,我們簽發一個證書:

如果需要簽發一個通配符證書,我們可以這樣:

腳本會發送請求到 CA 機構,CA 機構會要求你對域名進行認證,即需要你添加 TXT 記錄來認證域名所有權。認證通過後,執行如下命令簽發即可:

此外,該腳本最大的優勢是支持自動API 集成,上述案例通過 DNS 方式簽發證書需要手工干預,你需要到域名解析商添加TXT 記錄,這對於做自動持續集成來說很不方便。因此acme.sh 提供了多家域名廠商的 API 集成,經過簡單的配置即可完全自動化進行域名申請和域名解析的添加以及續簽。

具體的使用方法可以參考說明文檔(https://github.com/Neilpang/acme.sh/tree/master/dnsapi)。

以 Googaddy 為例,我們獲取 AK 和 SK後執行:

然後簽發證書:

腳本會在120秒內調用域名解析商的介面自動添加域名解析然後完成認證。

簽發完的證書會保存在 ~/.acme.sh/ 目錄下,它包含以下幾個文件:

通常建議載入證書選擇公鑰文件為fullchain.cer 的公鑰文件,這樣避免一些瀏覽器無法識別根證書或中間證書從而導致瀏覽器報錯,例如提示證書不受信任。

接下來,在你的 Web 伺服器進行證書的配置即可:

熱 文推 薦

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CSDN 的精彩文章:

在使用 Go 兩年之後,我又轉回 PHP 了
QQ 可註銷版本上線;董明珠:建議偷手機判 10 年 | 極客頭條

TAG:CSDN |