一、前言
隨著全民互聯(lián)網(wǎng)安全意識(shí)的增強(qiáng)主经,由于HTTPS具有比HTTP更高網(wǎng)絡(luò)安全等級(jí)荣暮,HTTPS
開(kāi)始迅速普及
。但是HTTPS的證書(shū)每年的認(rèn)證費(fèi)
需要近千元
旨怠,除非是由于不可抗拒的原因渠驼,必須升級(jí)到HTTPS,否則一般選擇繼續(xù)使用HTTP鉴腻。高額的認(rèn)證費(fèi)阻礙HTTPS快速推廣應(yīng)用迷扇,于是let's encrypt一個(gè)開(kāi)源的HTTPS證書(shū)授權(quán)應(yīng)運(yùn)而生,給大家提供了優(yōu)質(zhì)的免費(fèi)的自動(dòng)化
認(rèn)證服務(wù)爽哎。
我在配置let's encrypt的路上遇到了不少的困難蜓席,走了很多的彎路,浪費(fèi)了不少時(shí)間课锌。所以將其總結(jié)下來(lái)進(jìn)行分享厨内。根據(jù)我分享的經(jīng)驗(yàn)進(jìn)行多部署幾次的話,平均獲取一個(gè)HTTPS證書(shū)只需要10分鐘左右渺贤。
使用的官網(wǎng)推薦自動(dòng)部署工具certbot雏胃,支持自動(dòng)部署的軟件,系統(tǒng)環(huán)境分別如下:
支持的軟件
apache
nginx
haproxy
plesk
等等(詳情請(qǐng)查看certbot官網(wǎng))
支持的系統(tǒng)
Web Hosting Service
Debian
Ubuntu
Gentoo
Arch Linux
Fedora 26+
CentOS
RHEL
FreeBSD
OpenBSD
macOS
Devuan
等等(詳情請(qǐng)查看certbot官網(wǎng))
官網(wǎng)鏈接
下面是我在
CENTOS6
志鞍、NGINX
上部署
Certbot的經(jīng)驗(yàn)分享瞭亮。如果系統(tǒng)和軟件不同,也可以作為一個(gè)解決問(wèn)題的思路固棚,以供參考统翩。
二、環(huán)境
Centos6
- Centos6 已經(jīng)安裝了
OpenSSL library
-
Nginx
已集成ssl模塊
- 你已經(jīng)有了一點(diǎn)遠(yuǎn)程操作
Linux
的入門知識(shí)和實(shí)操經(jīng)驗(yàn)
三此洲、步驟
注意
:重要厂汗,請(qǐng)閱讀完(三、步驟)和(四呜师、難點(diǎn))后再進(jìn)行操作
步驟一: ssh以root用戶登陸centos6服務(wù)器
// 打開(kāi)終端輸入
# ssh root@服務(wù)器IP
步驟二: 分別執(zhí)行如下命令
// 進(jìn)入root目錄(可定義)
# cd ~
// 下載certbot腳本
# wget https://dl.eff.org/certbot-auto
// 給certbot添加可執(zhí)行權(quán)限
# chmod a+x certbot-auto
// 運(yùn)行certbot腳本
# sudo ~/certbot-auto --nginx
步驟三: 運(yùn)行certbot后娶桦,正常的情況一路會(huì)出現(xiàn)如下的選項(xiàng)
是否需要安裝python34?輸入`Y`回車
輸入一個(gè)郵箱用于接受證書(shū)到期更新通知:填寫(xiě)自己可用的郵箱,例如:`xxx@163.com`
是否同意lets encrypt的協(xié)議衷畦?輸入`A`回車
是否接收他們的新聞氮双,通過(guò)這種方式支持他們?輸入`Y`回車
輸入要支持HTTPS的域名霎匈,空格分開(kāi):填寫(xiě)已指向并可用的域名,
多個(gè)域名用`半角空格`分開(kāi)送爸,例如:`www.bbwhm.com kunshan.bbwhm.com`
是否HTTP自動(dòng)跳轉(zhuǎn)到HTTPS铛嘱?選擇`n`的場(chǎng)合,該網(wǎng)站同時(shí)支持`http`和`https`袭厂,
選擇`Y`的場(chǎng)合墨吓,該網(wǎng)站只支持`https`網(wǎng)站,所有`http`請(qǐng)求自動(dòng)跳轉(zhuǎn)為`https`纹磺,
我的選擇是`Y`回車
步驟四:結(jié)果確認(rèn)
生成成功帖烘,建議備份`/etc/letsencrypt`,直接訪問(wèn)`https://你的域名`橄杨,
查看結(jié)果秘症,網(wǎng)站前多了一個(gè)鎖,表示成功式矫。
四乡摹、難點(diǎn)
難點(diǎn)1:python鏡像配置錯(cuò)誤
描述
:一臺(tái)阿里云服務(wù)器,centos6
系統(tǒng)已經(jīng)默認(rèn)安裝了python2.6
采转,是否需要自動(dòng)安裝python34聪廉?就算選擇自動(dòng)安裝了python34,運(yùn)行仍然失敗故慈,為什么?
解答
:certbot需要安裝python34
,并自動(dòng)安裝瓣铣,只要選擇Yes即可术辐。運(yùn)行仍然失敗的原因是,阿里云服務(wù)器的系統(tǒng)克婶,有個(gè)配置文件默認(rèn)指向阿里云鏡像導(dǎo)致的筒严,只要修為清華鏡像即可。
vi ~/.pip/pip.config
修改前
[global]
index-url=http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
修改后
[global]
index-url=https://pypi.tuna.tsinghua.edu.cn/simple
難點(diǎn)2:nginx的配置路徑不滿足certbot要求
描述
:nginx不是通過(guò)yum install nginx安裝情萤,是自己編譯安裝的鸭蛙,有些配置不滿足certbot的要求
解答
:certbot要求必須存在如下的文件和目錄
/usr/bin/nginx
/etc/nginx
操作方法,假設(shè)你的nginx位于/usr/local/nginx,你需要執(zhí)行下面的兩個(gè)命令,創(chuàng)建快捷方式軟連接過(guò)去即可筋岛。
# ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
# ln -s /usr/local/nginx/conf /etc/nginx
難點(diǎn)3:nginx缺少ssl模塊
描述
:提示nginx沒(méi)有添加ssl模塊
解答
:可以通過(guò)nginx -V娶视,查看是否有ssl模塊。由于nginx是自己從官網(wǎng)下載的源碼手動(dòng)編譯的,當(dāng)時(shí)沒(méi)有添加ssl參數(shù)肪获。只需要nginx重新編譯添加ssl模塊即可寝凌。
// 從nginx官網(wǎng)下載和已安裝的同版本的源文件(我的是1.12.2)
# cd ~
// 下載
# wget http://nginx.org/download/nginx-1.12.2.tar.gz
// 解壓
# tar -xzvf nginx-1.12.2.tar.gz
// 進(jìn)入
# cd nginx-1.12.2
// 配置(請(qǐng)根據(jù)實(shí)際情況、添加或減少模塊孝赫。--with-http_ssl_module 必須)
# ./configure --prefix=/usr/local/nginx --with-http_ssl_module
// 編譯
# make
// 備份之前的文件
# cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
// 覆蓋替換
# cp objs/nginx /usr/local/nginx/sbin/nginx
// 關(guān)閉nginx服務(wù)
# /usr/local/nginx/sbin/nginx -s stop
// 啟動(dòng)nginx服務(wù)
# /usr/local/nginx/sbin/nginx
// 確認(rèn)結(jié)果(是否包含ssl)
# /usr/local/nginx/sbin/nginx -V
難點(diǎn)4:443端口未開(kāi)放
描述
:certbot提示已經(jīng)成功部署较木,但是通過(guò)https//域名,仍然無(wú)法訪問(wèn)
解答
:由于使用了阿里云服務(wù)器青柄,開(kāi)放端口的控制需要在阿里云控制臺(tái)里面進(jìn)行設(shè)置伐债,啟用443端口即可。
難點(diǎn)5:域名未綁定
描述
:certbot配置https域名的時(shí)候提示域名指向檢測(cè)失敗致开,例如:kunshan.bbwhm.com 沒(méi)有找到
解答
:在域名服務(wù)商管理后臺(tái)中峰锁,將 kunshan.bbwhm.com 指向這臺(tái)服務(wù)器的IP,然后在Centos6中双戳,重新運(yùn)行sudo ~/certbot-auto --nginx 這樣就直接進(jìn)入最后一步了虹蒋,跳過(guò)了前面很多的步驟。(最好提前就將所有的域名都指向好飒货,測(cè)試沒(méi)有問(wèn)題的時(shí)候魄衅,再繼續(xù)操作)
難點(diǎn)6:續(xù)期
描述
:證書(shū)有效期只有3個(gè)月,到期了怎么辦塘辅?
解答
:方案一徐绑、可以在到期前1個(gè)月,手動(dòng)執(zhí)行如下命令即可刷新證書(shū)莫辨,再次獲取3個(gè)月的有效期傲茄;
# sudo ~/certbot-auto renew --dry-run
方案二、也可以通過(guò)定時(shí)任務(wù)沮榜,命令如下:
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && ~/certbot-auto renew
或者
0 0 * * * /root/certbot-auto renew
最近c(diǎn)erbot-auto升級(jí)到了letsencrypt-auto.sh盘榨,當(dāng)前我的服務(wù)器定時(shí)任務(wù)配置為
0 0 * * * /root/letsencrypt-auto.sh renew
附錄
certbot在centos6的上配置整個(gè)順利的配置流程輸出如下,僅供參考蟆融。大體流程如下
[root@CENTOS6 ~]# cd ~
[root@CENTOS6 ~]# wget https://dl.eff.org/certbot-auto
[root@CENTOS6 ~]# sudo ./certbot-auto --nginx
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Which names would you like to activate HTTPS for?
----------------------------
1: www.bbwhm.com
2: kunshan.bbwhm.com
----------------------------
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): www.bbwhm.com kunshan.bbwhm.com
----------------------------
requested (ref: /etc/letsencrypt/renewal/www.bbwhm.com.conf)
It contains these names: www.bbwhm.com, kunshan.bbwhm.com
You requested these names for the new certificate: www.bbwhm.com,
kunshan.bbwhm.com
Do you want to expand and replace this existing certificate with the new
certificate?
----------------------------
(E)xpand/(C)ancel: E
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for www.bbwhm.com
http-01 challenge for kunshan.bbwhm.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/vhost/www.bbwhm.com.conf
Deploying Certificate to VirtualHost /etc/nginx/vhost/kunshan.bbwhm.com.conf
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
----------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
----------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
----------------------------
Your existing certificate has been successfully renewed, and the new certificate
has been installed.
The new certificate covers the following domains: https://www.bbwhm.com,
https://kunshan.bbwhm.com
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=www.bbwhm.com
https://www.ssllabs.com/ssltest/analyze.html?d=kunshan.bbwhm.com
----------------------------
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/www.bbwhm.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/www.bbwhm.com/privkey.pem
Your cert will expire on 2018-08-27. To obtain a new or tweaked
version of this certificate in the future, simply run certbot-auto
again with the "certonly" option. To non-interactively renew *all*
of your certificates, run "certbot-auto renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
[root@CENTOS6 ~]#
若本文幫您節(jié)省了時(shí)間和金錢草巡,請(qǐng)不吝贊賞。若本文有不足之處型酥,請(qǐng)不吝賜教山憨。謝謝。