HTTP 協(xié)議傳輸?shù)臄?shù)據(jù)都是不加密的。想象一下,你訪問某個(gè)網(wǎng)站,當(dāng)數(shù)據(jù)經(jīng)過路由器、寬帶網(wǎng)關(guān),以及某墻的時(shí)候都是完全可見的,是不是有種裸奔的感覺?為網(wǎng)站啟用 HTTPS 支持可以說是大勢(shì)所趨,在某國日益倒車的互聯(lián)網(wǎng)環(huán)境下更是如此。
第零步是選擇一個(gè)靠譜的 CA(Certificate Authority,數(shù)字證書認(rèn)證中心)。你以為所有的認(rèn)證中心都是中立可信的嗎?并不是的,比如此前頻頻爆出丑聞的 WoSign 和 StarCom,這兩家認(rèn)證中心已經(jīng)被 Google Chrome 等多款瀏覽器默認(rèn)設(shè)置為不信任。當(dāng)然你更不能自己做裁判,像 12306.cn 一樣給自己頒發(fā)證書。這里推薦 Let's Encrypt,這家成立于 2016 年、由互聯(lián)網(wǎng)安全研究小組(ISRG)主導(dǎo)的機(jī)構(gòu)致力于向用戶提供免費(fèi)的、自動(dòng)化管理的證書方案。
Let's Encrypt 允許使用實(shí)現(xiàn)了 ACME 協(xié)議的客戶端完成諸如證書獲取、認(rèn)證、簽名、安裝以及續(xù)簽等步驟。官方推薦使用 Certbot。下面,我們以 Ubuntu 16.04 & Nginx 為例,說明如何使用 Certbot 快速地為網(wǎng)站啟用 HTTPS 支持。
第一步:安裝 Certbot
在系統(tǒng)中添加 Certbot 的 PPA,然后使用 apt
安裝 Certbot。
$ 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 python-certbot-nginx
第二步:安裝證書
運(yùn)行下面的命令獲取證書,這個(gè)命令同時(shí)會(huì)為你更改 Nginx 配置文件(并且重載 Nginx):
$ sudo certbot --nginx
如果你想自己修改 Nginx 配置文件,可以使用 certonly
選項(xiàng):
$ sudo certbot --nginx certonly
第三步:自動(dòng)續(xù)簽
Let's Encrypt 簽發(fā)的證書,有效期是 90 天。你可以使用下面的命令對(duì)證書進(jìn)行續(xù)簽:
$ sudo certbot renew --dry-run
當(dāng)然,創(chuàng)建一個(gè) Cron Job 周期性地自動(dòng)續(xù)簽是一個(gè)更省事的方案。
現(xiàn)在,在瀏覽器中打開你的網(wǎng)站,你就能從地址欄看到令人安心的綠色小鎖了。除了本文介紹的方法,acme.sh 這個(gè)項(xiàng)目也提供了一種非常易用的方案。想要了解更多,請(qǐng)參考這篇文章。