快到年底了伐割,估計(jì)很多人都在折騰這貨候味,其實(shí)HTTPS很早就出現(xiàn)了,只是一直像IPv6那樣隔心,普及率不高白群。這次谷歌和蘋果兩大巨頭決定強(qiáng)推HTTPS,估計(jì)也是因?yàn)榘踩珕?wèn)題硬霍,畢竟有了太多“前車之鑒”帜慢,是時(shí)候該有所行動(dòng)了。
領(lǐng)袖的“振臂一呼”唯卖,當(dāng)然“應(yīng)者云集”崖堤,國(guó)內(nèi)各互聯(lián)網(wǎng)服務(wù)商、知名網(wǎng)站耐床、包括草根站長(zhǎng)們密幔,都紛紛跟進(jìn),陸續(xù)部署起了SSL證書撩轰,全面迎來(lái)了一波HTTPS升級(jí)浪潮胯甩。作為關(guān)注互聯(lián)網(wǎng)的我,喜歡嘗試新事物堪嫂,所以趁著博客改版之際偎箫,也試了下,為了點(diǎn)亮那把小綠鎖皆串,真是各種折騰淹办,在此做個(gè)階段性小結(jié),分享下踩坑經(jīng)驗(yàn)吧恶复。
HTTPS的安全基礎(chǔ)是SSL怜森,因此加密內(nèi)容就需要配合SSL證書,目前國(guó)內(nèi)外都有廠商提供免費(fèi)版的SSL證書谤牡,下面就我知道的做個(gè)介紹吧:
1. Let's Encrypt
這家目前是國(guó)外信譽(yù)最好副硅、推薦度最高的,由Mozilla翅萤、思科恐疲、Akamai等組織發(fā)起,來(lái)頭不小套么。
證書時(shí)效:90天培己,到期可以手動(dòng)renew
部署教程:可以參考這篇,寫的非常詳細(xì)了胚泌。另外省咨,下面評(píng)論里有推薦一個(gè)網(wǎng)站:https://certbot.eff.org/,也是基于官方的程序诸迟,但操作上要更簡(jiǎn)單些茸炒,我試了下,可以成功獲取到證書阵苇,這里就以CentOS 7 LNMP環(huán)境為例壁公,大致命令如下(可訪問(wèn)該網(wǎng)站獲取更多詳情):
a. 下載安裝程序
yum install certbot #下載安裝程序
certbot certonly #此處為只獲取證書
b. 然后會(huì)彈出圖形界面,按提示操作即可绅项,切記網(wǎng)站根目錄路徑要寫正確紊册,因?yàn)楹竺嬉鲵?yàn)證。
c. 這里坑就來(lái)了快耿,可能會(huì)有童鞋和我一樣囊陡,所有設(shè)置都填寫無(wú)誤,但每次都提示404驗(yàn)證失敗掀亥,Why撞反?后來(lái)查了下,發(fā)現(xiàn)是Nginx的鍋搪花,默認(rèn)對(duì).開(kāi)頭的訪問(wèn)有阻擋遏片,需要添加配置如下:
location ~ /.well-known {
allow all;
}
d. 這樣證書就順利下來(lái)了,一般會(huì)在/etc/letsencrypt/live/你的域名/下面撮竿,有4個(gè).pem文件吮便。最后在nginx的配置里添加下ssl的內(nèi)容,我加的是這些:
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/roubintech.com/fullchain.pem; #路徑要寫對(duì)
ssl_certificate_key /etc/letsencrypt/live/roubintech.com/privkey.pem; #路徑要寫對(duì)
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
e. 90天到期之后幢踏,可以手動(dòng)輸命令renew髓需,網(wǎng)站上也有寫,運(yùn)行certbot renew --quiet
房蝉,renew后建議再跟上service nginx reload
命令僚匆。
2. 阿里云/七牛/騰訊云SSL證書
這里放一起,是因?yàn)槟壳皣?guó)內(nèi)各家都是和賽門鐵克合作搭幻,發(fā)的他家證書白热,而且操作上也類似,都要驗(yàn)證域名等粗卜。而因?yàn)镈V SSL證書屋确,是一張證書只能對(duì)應(yīng)一個(gè)域名(附送www前綴),所以申請(qǐng)前续扔,建議先想好用哪個(gè)域名攻臀。
證書時(shí)效:1年
部署教程:參考下七牛官方的說(shuō)明文檔吧,挺詳細(xì)纱昧,就是CNAME的主機(jī)記錄填寫刨啸,記得把后面的主域名去掉。
3. 使用CDN部署HTTPS
如果是VPS识脆、云主機(jī)设联、服務(wù)器等善已,可以使用上面申請(qǐng)的SSL證書直接部署,而像虛擬主機(jī)那種本身不支持HTTPS离例,或無(wú)法開(kāi)啟443端口的網(wǎng)站换团,就可以使用CDN來(lái)“曲線救國(guó)”了。
阿里云/七牛/騰訊云都有自己的CDN宫蛆,再配合上自家的證書艘包,是極為方便的,但總體價(jià)格嘛耀盗,呵呵想虎,仁者見(jiàn)仁吧,這里要介紹的是推薦度比較高的VeryCloud云分發(fā)(CDN)服務(wù)叛拷,50G/月的免費(fèi)流量舌厨,夠用了。
部署教程:VeryCloud官方的幫助文檔忿薇,記得先上傳你的證書(七牛的證書只能用于自家服務(wù))邓线,然后創(chuàng)建頻道,用主域名就好煌恢,原站點(diǎn)寫IP骇陈,回源用HTTP方式,因?yàn)槟憔W(wǎng)站本身不支持嘛(支持的請(qǐng)用HTTPS)瑰抵,然后按要求你雌,到DNS管理的地方,為主域名添加一條CNAME二汛,建議此時(shí)給WWW的記錄也加一條CNAME婿崭,這樣兩個(gè)都走CDN,然后A記錄就可以先暫停了肴颊。
4. 圖片等多媒體資源的HTTPS化
這里我用的是七牛的云存儲(chǔ)氓栈,支持圖片等HTTPS方式訪問(wèn),配合上七牛融合CDN婿着,速度很快
部署教程:七牛官方文檔
因?yàn)榧铀儋Y源訪問(wèn)的是七牛云存儲(chǔ)授瘦,可能需要一個(gè)二級(jí)域名做解析,而且上HTTPS的話竟宋,同樣需要對(duì)應(yīng)的證書提完,略麻煩,其實(shí)還好丘侠,直接在七牛申請(qǐng)挺快的徒欣,當(dāng)然你不用擔(dān)心一個(gè)網(wǎng)站上了多張SSL證書會(huì)有問(wèn)題(內(nèi)心是多想來(lái)一張wildcard SSL證書啊),有個(gè)東西叫SNI可以解決蜗字。
5. 多說(shuō)頭像打肝、表情的HTTPS問(wèn)題
多說(shuō)現(xiàn)在用的蠻多脂新,但它對(duì)HTTPS的支持還不理想,目前第三方社交賬號(hào)的頭像粗梭、表情還不行争便,所以有時(shí)你會(huì)發(fā)現(xiàn)折騰半天,小鎖還是灰的楼吃,可能就是這個(gè)原因。
當(dāng)然解放方法也很多:
a. 頭像:不使用第三方社交賬戶的頭像妄讯,而是后臺(tái)重新上傳一個(gè)
b. 表情:咳咳孩锡,我是直接選擇不用表情啦,一是懶亥贸,二是覺(jué)得丑~
c. 換掉多說(shuō)的js: 參考這篇躬窜,然后Github上還專門有個(gè)repository,也可以解決
d. 其他替代方案:暢言炕置、網(wǎng)易云跟帖荣挨,我沒(méi)用過(guò),據(jù)說(shuō)都不錯(cuò)
目前就折騰了這么多朴摊,如有疑問(wèn)默垄,歡迎交流O(∩_∩)O
轉(zhuǎn)載請(qǐng)標(biāo)明本文地址