免費的SSL證書,擁抱 HTTPS

這篇文章主要講的就是如何讓自己的網(wǎng)站免費從HTTP升級為HTTPS衙四,使用的是 Let's Encrypt的證書。實際上也就是一個Let's Encrypt 免費證書獲取教程 己沛。
為什么要上HTTPS,說一個小故事距境。

從前有個網(wǎng)站申尼,后來有個廣告,沒了

作為一個博客垫桂,自然不想讓在被別人瀏覽的時候师幕,出現(xiàn)莫名的廣告(運營商劫持)。這時候伪货,HTTPS的價值就體現(xiàn)出來了们衙。 HTTPS的好處還有很多,但單單這一條碱呼,就夠我花心思去升級了蒙挑。 (其實主要目的是提升網(wǎng)站Biger :)

Let's Encrypt 簡介

如果要啟用HTTPS,我們就需要從證書授權機構(以下簡稱CA) 處獲取一個證書愚臀,Let's Encrypt 就是一個 CA忆蚀。我們可以從 Let's Encrypt 獲得網(wǎng)站域名的免費的證書。這篇文章也主要講的是通過 Let's Encrypt + Nginx 來讓網(wǎng)站升級到HTTPS。

Certbot 簡介

Certbot 是Let's Encrypt官方推薦的獲取證書的客戶端馋袜,可以幫我們獲取免費的Let's Encrypt 證書男旗。Certbot 是支持所有 Unix 內(nèi)核的操作系統(tǒng)的,個人博客的服務器系統(tǒng)是CentOS 7欣鳖,這篇教程也是通過在個人博客上啟用HTTPS的基礎上完成的察皇。

獲取免費證書

  1. 安裝Certbot客戶端
yum install certbot

  1. 獲取證書
certbot certonly --webroot -w /var/www/example -d example.com -d www.example.com

這個命令會為 example.comwww.example.com 這兩個域名生成一個證書,使用 --webroot 模式會在 /var/www/example 中創(chuàng)建 .well-known 文件夾泽台,這個文件夾里面包含了一些驗證文件什荣,certbot 會通過訪問 example.com/.well-known/acme-challenge 來驗證你的域名是否綁定的這個服務器。這個命令在大多數(shù)情況下都可以滿足需求怀酷,

但是有些時候我們的一些服務并沒有根目錄稻爬,例如一些微服務,這時候使用 --webroot 就走不通了蜕依。certbot 還有另外一種模式 --standalone 桅锄, 這種模式不需要指定網(wǎng)站根目錄,他會自動啟用服務器的443端口样眠,來驗證域名的歸屬友瘤。我們有其他服務(例如nginx)占用了443端口,就必須先停止這些服務吹缔,在證書生成完畢后商佑,再啟用。

certbot certonly --standalone -d example.com -d www.example.com

證書生成完畢后厢塘,我們可以在 /etc/letsencrypt/live/ 目錄下看到對應域名的文件夾茶没,里面存放了指向證書的一些快捷方式。

這時候我們的第一生成證書已經(jīng)完成了晚碾,接下來就是配置我們的web服務器抓半,啟用HTTPS。

Nginx 配置啟用 HTTPS

博客系統(tǒng)使用的是Nginx 服務器來轉發(fā)請求格嘁,這里貼一下我的Nginx配置笛求。

    server {
        server_name diamondfsd.com www.diamondfsd.com;
        listen 443;
        ssl on;
        ssl_certificate /etc/letsencrypt/live/diamondfsd.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/diamondfsd.com/privkey.pem;

        location / {
           proxy_pass http://127.0.0.1:3999;
           proxy_http_version 1.1;
           proxy_set_header X_FORWARDED_PROTO https;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header Host $host;
        }
    }
    server {
        server_name api.diamondfsd.com;
        listen 443;
        ssl on;
        ssl_certificate /etc/letsencrypt/live/api.diamondfsd.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/api.diamondfsd.com/privkey.pem;

        location / {
           proxy_pass http://127.0.0.1:4999;
           proxy_http_version 1.1;
           proxy_set_header X_FORWARDED_PROTO https;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header Host $host;

        }
    }

主要是監(jiān)聽 443 端口,啟用 SSL糕簿,并配置 SSL 的證書路徑(公鑰探入,私鑰的路徑)。

自動更新 SSL 證書

配置完這些過后懂诗,我們的工作還沒有完成蜂嗽。 Let's Encrypt 提供的證書只有90天的有效期,我們必須在證書到期之前殃恒,重新獲取這些證書植旧,certbot 給我們提供了一個很方便的命令辱揭,那就是 certbot renew
通過這個命令病附,他會自動檢查系統(tǒng)內(nèi)的證書问窃,并且自動更新這些證書。
我們可以運行這個命令測試一下

certbot renew --dry-run 

我在運行的時候出現(xiàn)了這個錯誤

Attempting to renew cert from /etc/letsencrypt/renewal/api.diamondfsd.com.conf produced an unexpected error: At least one of the required ports is already taken.. Skipping.

alt

這是因為我的api.diamondfsd.com生成證書的時候使用的是 --standalone 模式完沪,驗證域名的時候域庇,需要啟用443端口,這個錯誤的意思就是要啟用的端口已經(jīng)被占用了丽焊。 這時候我必須把nginx先關掉较剃,才可以成功。果然技健,我先運行 service nginx stop 運行這個命令,就沒有報錯了惰拱,所有的證書都刷新成功雌贱。

證書是90天才過期,我們只需要在過期之前執(zhí)行更新操作就可以了偿短。 這件事情就可以直接交給定時任務來完成欣孤。linux 系統(tǒng)上有 cron 可以來搞定這件事情。
我新建了一個文件 certbot-auto-renew-cron昔逗, 這個是一個 cron 計劃降传,這段內(nèi)容的意思就是 每隔 兩個月的 凌晨 2:15 執(zhí)行 更新操作。

15 2 * */2 * certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"

--pre-hook 這個參數(shù)表示執(zhí)行更新操作之前要做的事情勾怒,因為我有 --standalone 模式的證書婆排,所以需要 停止 nginx 服務,解除端口占用笔链。
--post-hook 這個參數(shù)表示執(zhí)行更新操作完成后要做的事情段只,這里就恢復 nginx 服務的啟用

最后我們用 crontab 來啟動這個定時任務

crontab certbot-auto-renew-cron

至此,整個網(wǎng)站升級到HTTPS就完成了鉴扫。 總結一下我們需要做什么

  1. 獲取Let's Encrypt 免費證書
  2. 配置Nginx開啟HTTPS
  3. 定時刷新證書
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赞枕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子坪创,更是在濱河造成了極大的恐慌炕婶,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件莱预,死亡現(xiàn)場離奇詭異柠掂,居然都是意外死亡,警方通過查閱死者的電腦和手機锁施,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門陪踩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來杖们,“玉大人,你說我怎么就攤上這事肩狂≌辏” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵傻谁,是天一觀的道長孝治。 經(jīng)常有香客問我,道長审磁,這世上最難降的妖魔是什么谈飒? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮态蒂,結果婚禮上杭措,老公的妹妹穿的比我還像新娘。我一直安慰自己钾恢,他們只是感情好手素,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瘩蚪,像睡著了一般泉懦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上疹瘦,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天崩哩,我揣著相機與錄音,去河邊找鬼言沐。 笑死邓嘹,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的呢灶。 我是一名探鬼主播吴超,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鸯乃!你這毒婦竟也來了鲸阻?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤缨睡,失蹤者是張志新(化名)和其女友劉穎鸟悴,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奖年,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡细诸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了陋守。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片震贵。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡利赋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出猩系,到底是詐尸還是另有隱情媚送,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布寇甸,位于F島的核電站塘偎,受9級特大地震影響,放射性物質發(fā)生泄漏拿霉。R本人自食惡果不足惜吟秩,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绽淘。 院中可真熱鬧涵防,春花似錦、人聲如沸沪铭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽伦意。三九已至,卻和暖如春硼补,著一層夾襖步出監(jiān)牢的瞬間驮肉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工已骇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留离钝,地道東北人。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓褪储,卻偏偏與公主長得像卵渴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子鲤竹,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

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