為你的站點(diǎn)免費(fèi)升級(jí)至 HTTPS 協(xié)議

轉(zhuǎn)載 原文地址

本文記錄了利用 Let’s Encrypt愿吹,免費(fèi)全站開啟 HTTPS 協(xié)議颜骤。

關(guān)于HTTPS

HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer)稚铣,是以安全為目標(biāo)的HTTP通道,簡(jiǎn)單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎(chǔ)是SSL葛菇,因此加密的詳細(xì)內(nèi)容就需要SSL。
HTTPS優(yōu)勢(shì):安全傳輸橡羞,有效阻止運(yùn)營(yíng)商劫持并注入廣告眯停,以及提供 HTTP/2 協(xié)議的支持,詳情自行 Google

關(guān)于免費(fèi)證書發(fā)放機(jī)構(gòu)

Let’s Encrypt卿泽,是2016年4月12日成立的一家證書授權(quán)中心莺债,提供免費(fèi)的傳輸層安全(TLS)X.509證書,通過自動(dòng)化的過程消除目前安全網(wǎng)站證書需要手工創(chuàng)建签夭,加密齐邦,簽名,安裝以及更新的復(fù)雜性第租。

開啟 HTTPS 操作步驟如下 ↓

Let’s Encrypt 的官網(wǎng)提供了更為自動(dòng)化的腳本措拇,但本文借鑒的是作者:Macken 提供的方法,采用Github上的一個(gè)開源腳本acme-tiny慎宾。
本文基于社區(qū)企業(yè)操作系統(tǒng)CentOS和高性能的HTTP和反向代理服務(wù)器Nginx丐吓,其他Linux版本理論上是可行的,但未嘗試趟据。

克隆腳本

? ~ sudo git clone https://github.com/diafygi/acme-tiny.git  
? ~ cd acme-tiny // 下面的操作都在這個(gè)目錄券犁!

創(chuàng)建Let’s Encrypt私鑰

? ~ openssl genrsa 4096 > account.key

創(chuàng)建CSR(Certificate Signing Request,證書簽名請(qǐng)求) 文件

ACME協(xié)議 (Let’s Encrypt所使用的) 需要一個(gè)csr文件汹碱,用來進(jìn)行證書簽名和證書更新粘衬。

將需要加密的域名加到下面的代碼中,目前一張證書最多可以加密 100 個(gè)域名,足夠普通用戶使用:


// acme-tiny 目錄執(zhí)行
? ~ openssl genrsa 4096 > domain.key     
? ~ openssl req -new -sha256 -key domain.key -subj "/" -reqexts SAN -config <(cat /etc/pki/tls/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:jandou.com,DNS:www.jandou.com")) > domain.csr

注意:openssl.cnf 文件的位置可能會(huì)因?yàn)閘inux版本的不同而有變稚新,自行搜索得到路徑 >>tips

證明你擁有該域名

acme-tiny腳本會(huì)生成驗(yàn)證文件并寫入到你指定的目錄下泼舱,然后通過 “.well-known/acme-challenge/“ 這個(gè)URL來訪問到驗(yàn)證文件。

注意:Let’s Encrypt 會(huì)對(duì)你的服務(wù)器做一次http請(qǐng)求來進(jìn)行驗(yàn)證枷莉,因此你需要保證80端口能夠訪問。

  • 手動(dòng)生成challenges目錄尺迂,用來存放驗(yàn)證文件(路徑可以根據(jù)需要修改)

    ? ~ mkdir -p /var/www/challenges
    
  • 配置nignx的80端口

    修改 Nginx 默認(rèn)配置 /usr/local/nginx/conf/nginx.conf 中的server段笤妙,注意備份:

    server {
        listen 80;
        server_name jandou.com www.jandou.com;
        location /.well-known/acme-challenge/ {
            alias /var/www/challenges/;
            try_files $uri =404;
        }
    }
    

暫時(shí)清除虛擬主機(jī)配置

暫時(shí)清除虛擬主機(jī)配置,避免下一步獲取簽名證書 Download失敗噪裕。

<div class="tip">注意:先備份蹲盘,再刪除/usr/local/nginx/conf/vhost/下的虛擬配置。</div>

獲取簽名證書

//acme-tiny 目錄執(zhí)行
? ~ sudo chmod +x acme_tiny.py  
? ~ python acme_tiny.py --account-key ./account.key --csr ./domain.csr --acme-dir /var/www/challenges/ > ./signed.crt

注意:如果下載出錯(cuò)膳音,則是Nginx的默認(rèn)配置有誤召衔,或虛擬主機(jī)配置沖突導(dǎo)致。

安裝證書

針對(duì)nginx, 你還需要將 Let’s Encrypt 的中間件證書 intermediate.pem 內(nèi)容附加在簽名證書signed.crt之后:

// acme-tiny 目錄執(zhí)行
? ~ wget -O - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > intermediate.pem
? ~ cat signed.crt intermediate.pem > chained.pem

成功之后祭陷,恢復(fù) Nginx 默認(rèn)配置和虛擬主機(jī)配置苍凛,并重啟 Nginx

? ~ lnmp reload // lnmp系列軟件全部重載
? ~ service nginx reload // 僅重啟 `Nginx`

恭喜!你的網(wǎng)站已經(jīng)使用上了HTTPS兵志。 但Let’s Encrypt 證書有效期只有90天, 所以需要定期更新〈己現(xiàn)在只需要寫一個(gè)更新腳本并把它放到定時(shí)任務(wù)中即可 >> tips

Tips

  • 搜索文件技巧

    //根目錄搜索`nginx.conf`
    find / -name 'nginx.conf'
    
  • 證書自動(dòng)更新定時(shí)任務(wù)

    腳本renew_cert.sh負(fù)責(zé)一鍵更新,我將其存放在 root 目錄下想罕,腳本內(nèi)容:

    !/usr/bin/sh
    python /root/openssl/acme-tiny/acme_tiny.py --account-key /root/openssl/acme-tiny/account.key --csr 
    /root/openssl/acme-tiny/domain.csr --acme-dir /var/www/challenges/ > /tmp/signed.crt || exit
    wget -O - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > intermediate.pem
    cat /tmp/signed.crt intermediate.pem > /root/openssl/acme-tiny/chained.pem
    service nginx reload
    

    定時(shí)任務(wù)可以設(shè)置為每個(gè)月執(zhí)行一次:

    ? ~ 0 0 1 * * sudo bash /path/to/renew_cert.sh 2>> /var/log/acme_tiny.log
    

    如果沒有定時(shí)更新悠栓,可以直接執(zhí)行該腳本. renew_cert.sh

    可能 Download 失敗,參考上面配置nignx的80端口按价,修改 Nginx 默認(rèn)配置惭适。

參考

鳴謝:Let’s Encrypt,站點(diǎn)加密之旅 laravel-china.org (如遇到問題可參考該鏈接下的討論)
原稿:Let’s Encrypt楼镐,站點(diǎn)加密之旅

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末癞志,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子框产,更是在濱河造成了極大的恐慌今阳,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茅信,死亡現(xiàn)場(chǎng)離奇詭異盾舌,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蘸鲸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門妖谴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事膝舅∥嗽兀” “怎么了?”我有些...
    開封第一講書人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵仍稀,是天一觀的道長(zhǎng)洼滚。 經(jīng)常有香客問我,道長(zhǎng)技潘,這世上最難降的妖魔是什么遥巴? 我笑而不...
    開封第一講書人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮享幽,結(jié)果婚禮上铲掐,老公的妹妹穿的比我還像新娘。我一直安慰自己值桩,他們只是感情好摆霉,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著奔坟,像睡著了一般携栋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上咳秉,一...
    開封第一講書人閱讀 52,158評(píng)論 1 308
  • 那天刻两,我揣著相機(jī)與錄音,去河邊找鬼滴某。 笑死磅摹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的霎奢。 我是一名探鬼主播户誓,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼幕侠!你這毒婦竟也來了帝美?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤晤硕,失蹤者是張志新(化名)和其女友劉穎悼潭,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體舞箍,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡舰褪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了疏橄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片占拍。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡略就,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出晃酒,到底是詐尸還是另有隱情表牢,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布贝次,位于F島的核電站崔兴,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蛔翅。R本人自食惡果不足惜敲茄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望搁宾。 院中可真熱鬧,春花似錦倔幼、人聲如沸盖腿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)翩腐。三九已至,卻和暖如春膏燃,著一層夾襖步出監(jiān)牢的瞬間茂卦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工组哩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留等龙,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓伶贰,卻偏偏與公主長(zhǎng)得像蛛砰,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子黍衙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理泥畅,服務(wù)發(fā)現(xiàn),斷路器琅翻,智...
    卡卡羅2017閱讀 134,693評(píng)論 18 139
  • 過完年來想把博客做一個(gè)遷移位仁,放到自己購(gòu)買的服務(wù)器上,并實(shí)現(xiàn)?自動(dòng)化部署方椎,并啟用全站HTTPS hexo本地部署 這...
    宇行信閱讀 558評(píng)論 0 1
  • 原文發(fā)表在我的個(gè)人博客 - 使用letsencrypt實(shí)現(xiàn)https站點(diǎn) 最近想把我的博客弄成https安全加密模...
    kikoroc閱讀 2,415評(píng)論 0 0
  • 2017年1月1日起聂抢,蘋果強(qiáng)制所有 app 滿足 HTTPS,即 iOS9 推出的 App Transport S...
    DeanWang閱讀 1,244評(píng)論 2 0
  • 有一種方式叫簡(jiǎn)單去愛棠众,雖然這個(gè)地方?jīng)]有便利的條件涛浙,但是依然無法停止愛你的腳步,有些人可能會(huì)說我很傻,但是我只...
    愛草閱讀 144評(píng)論 0 0