一、cerbot簡介
??Certbot是一個免費的開源軟件工具,用于在手動管理的網站上自動使用Let’s Encrypt證書以啟用HTTPS。要想讓自己的網站啟用https協議,需要一個由CA(數字證書認證機構)頒發的,能夠讓各個瀏覽器都能承認的SSL安全證書。有很多網站可以申請到免費的SSL證書,比如阿里云,騰訊云等。一般免費證書SSL網站只可以申請二級域名ssl證書,而且有數量限制,有效期也是有限制,比如阿里云是20張有效期3個月二級域名ssl證書,騰訊云是20張有效期1年二級域名ssl證書。Let’s Encrypt證書機構則支持申請域名通配符ssl證書,這樣我們一個域名有解析多個二級域名的時候我們只需要申請一次即可。只是證書一次有效期只有3個月,我們需要到期手動續期或者通過certbot結合定時任務自動續期。博文實驗環境如下:
- 操作系統:centos7.6
- certbot版本:1.11.0
- nginx版本:1.25.5
二、安裝步驟及使用簡介
1、安裝epel
??安裝certbot之前需要先安裝epel擴展源,通過epel擴展源才可以yum安裝certbot命令軟件包。
[root@s76 ~]# yum install -y epel-release
2、yum安裝certbot
??通過yum安裝,當前安裝的版本是1.11.0。
[root@s76 yum.repos.d]# yum install -y certbot
…
Installed:
certbot.noarch 0:1.11.0-2.el7
…
3、驗證certbot命令
??查看certbot命令版本和命令存儲路徑。
[root@s76 yum.repos.d]# certbot --version
certbot 1.11.0
[root@s76 yum.repos.d]# which certbot
/usr/bin/certbot
4、查看命令幫助
??使用–help參數獲取命令幫助。命令語法格式如下:certbot [SUBCOMMAND] [options] [-d DOMAIN] [-d DOMAIN] …
[root@s76 yum.repos.d]# certbot --help
5、申請ssl證書
??執行certbot命令申請證書,如果是第一次使用的郵箱則會提示是否接受郵箱注冊,輸入y后繼續。
[root@s76 ~]# certbot certonly --server https://acme-v02.api.letsencrypt.org/directory --manual --preferred-challenges dns --email xxx@qq.com --agree-tos -d *.sun-site.com
6、添加域名解析記錄用于驗證
??根據提示登錄域名注冊商添加一條TXT地址解析記錄。添加完成后等待1分鐘以上等域名解析生效。
7、證書申請成功
??看到Congratulations提示就說明免費證書申請成功了。證書和key存儲到/etc/letsencrypt/live/目錄下,真實目錄是/etc/letsencrypt/archive,會生成一個根據域名名稱生成的目錄,目錄下包括cert.pem 、chain.pem、fullchain.pem、privkey.pem四個文件。
8、打包下載ssl證書
??將生成的證書及key文件壓縮打包,并下載到本地。當然如果是在部署服務器上申請的證書直接拷貝到指定目錄即可。
[root@s76 archive]# zip -r sun-site.com.zip sun-site.com/
adding: sun-site.com/ (stored 0%)
adding: sun-site.com/cert1.pem (deflated 27%)
adding: sun-site.com/privkey1.pem (deflated 23%)
adding: sun-site.com/chain1.pem (deflated 25%)
adding: sun-site.com/fullchain1.pem (deflated 31%)
[root@s76 archive]# sz sun-site.com.zip
9、部署驗證
??將證書上傳到指定目錄下,修改nginx配置文件,指定新的證書文件,然后重新加載nginx配置文件。
root@jj100:/usr/local/nginx/conf# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
root@jj100:/usr/local/nginx/conf# nginx -s reload
10、證書查驗
??訪問域名網站,我們可以看到新的證書已經使用,證書頒發機構是Let’s Encrypt,證書有效期是到2024年9月8日。
11、證書續期
??使用certbot renew命令可以自動續期證書,–dry-run是進行測試驗證,這里如提示證書有效期還比較長,證書有效期小于30天才可以申請續期,自動跳過續期任務。certbot的操作都會在/var/log/letsencrypt/letsencrypt.log留檔日志。在使用過程中如果有問題我們可以查看該日志文件,獲取詳細信息。
[root@s76 certbot-letencrypt-wildcardcertificates-alydns-au]# certbot renew --dry-run
Saving debug log to /var/log/letsencrypt/letsencrypt.log
12、關于自動續期
??關于證書自動續期有通過安裝python2-certbox-nginx插件實現的,有通過shell腳本certbot-letencrypt-wildcardcertificates-alydns-au+定時任務實現的。博主還這里還沒有配置成功。后續另外出博文進行實驗驗證。