CentOS7下使用Certbot+Nginx搭建Https環境
Let's Encrypt是一個為網站提供免費的SSL/TLS證書的機構。官方推薦使用Certbot工具進行簽發。Certbot可自動簽發Let's Encrypt證書,但證書有效期只有三個月,可以通過配置定時任務進行自動續期,以此實現永久生效的https環境。
本文使用Certbot+Nginx進行單域名和泛域名的https環境搭建。
單域名證書:只能保護一個域名,可以是頂級域名也可以是二級域名
泛域名證書:也叫萬用字元證書,可以保護一個域名及該域名下所有二級域名,不限制下級域名數量
1. 安裝Certbot
yum install certbot python2-certbot-nginx
2. 安裝單域名證書
2.1 自動配置nginx
執行如下命令會自動下載證書並配置nginx。未測試
certbot --nginx
2.2 手動配置nginx
執行如下命令會自動下載證書但需要自己配置nginx。已測試
- 生成證書並下載
certbot certonly --nginx
若nginx未安裝在預設路徑(/etc/nginx or /usr/local/etc/nginx)下需自己指定nginx路徑,到conf目錄
certbot certonly --nginx --nginx-server-root=/root/nginx/conf
-
輸入證書相關資訊
-
檢視證書儲存位置
-
配置nginx
-
重啟nginx
若此前nginx已配置https,直接使用
nginx -s reload
即可若此前nginx未配置https,需要將nginx程序kill掉,然後使用
nginc -c 配置檔案路徑
進行啟動 -
此時用已配置的域名進行https訪問正常
3. 安裝泛域名證書
按照如下步驟生成泛域名證書。已測試
-
使用泛域名生成證書。
將*.test.com替換為自己的泛域名即可
certbot certonly --preferred-challenges dns --manual -d *.test.com --server https://acme-v02.api.letsencrypt.org/directory
-
檢視驗證資訊。先不要回車
-
新增域名解析,以阿里云為例
-
驗證解析成功
-
回到使用泛域名生成證書的介面,回車,等待完成
-
配置nginx
-
重啟nginx
若此前nginx已配置https,直接使用
nginx -s reload
即可若此前nginx未配置https,需要將nginx程序kill掉,然後使用
nginc -c 配置檔案路徑
進行啟動 -
此時使用滿足泛域名條件的域名進行https訪問均正常。
4. 續期
配置定時任務進行續期。未測試
echo "0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null