1. 程式人生 > 實用技巧 >CentOS7下使用Certbot+Nginx搭建Https環境

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