更新:為 NGINX 配置免費的 Let's Encrypt SSL/TLS 證書

NGINX開源社群發表於2022-11-24

原文作者:Amir Rawdat of F5

原文連結:更新:為NGINX配置免費的Let's Encrypt SSL/TLS 證照

轉載來源:NGINX 官方網站


眾所周知,網站的 SSL/TLS 加密會為您的使用者帶來更靠前的搜尋排名和更出色的安全性。但目前有許多障礙阻礙了網站所有者採用 SSL。

其中兩個最大障礙是證照獲取成本高昂和所涉人工流程繁瑣。而現在,有了 Let's Encrypt,這些都不再是問題。Let's Encrypt 支援所有人免費使用 SSL/TLS 加密。

Let's Encrypt 是一家免費、開放、自動化的證照頒發機構 (CA)。是的,沒錯Let's Encrypt頒發的 SSL/TLS 證照是免費的。現今的大多數瀏覽器都信任 Let's Encrypt 頒發的證照,包括舊版瀏覽器,例如 Windows XP SP3 上的 Internet Explorer。此外,Let's Encrypt 實現了證照頒發和更新的全自動化。

NGINX 對於成為 Let’s Encrypt 的贊助者之一感到非常驕傲。

本文介紹瞭如何使用 Let's Encrypt 客戶端生成證照,以及如何自動配置 NGINX 開源版和 NGINX Plus 以使用這些證照。

Let's Encrypt 的工作原理

在頒發證照之前,Let's Encrypt 會驗證域名的所有權。在您的主機上執行的 Let's Encrypt 客戶端將建立一個臨時檔案(一個令牌),其中包含所需的資訊。然後,Let's Encrypt 驗證伺服器會發出 HTTP 請求以檢索檔案並驗證令牌,從而驗證您域名的 DNS 記錄是否解析到執行 Let's Encrypt 客戶端的伺服器。

準備工作

在開始使用 Let's Encrypt 之前,您需要:

  • 安裝NGINX開源版或NGINX Plus
  • 如果沒有註冊域名,可以在域名註冊商處申請。
  • 建立一條DNS記錄,將您的域名和伺服器的IP地址關聯。

_現在可以使用NGINX版本或NGINX_開源設定設定(為了便於閱讀NGINX Plus,您可以方便地使用密碼統稱為)。

注:我們在 Ubuntu 16.04 (Xenial) 上測試了本文所述的程式。

1、下載 Let's Encrypt 客戶端

首先,下載 Let's Encrypt 客戶端certbot

1. 上面那個,我們在 Ubuntu6.04 測試相關指令,下面是在平臺上執行的相應命令:

$ apt-get update
$ sudo apt-get install certbot
$ apt-get install python-certbot-nginx

使用 Ubuntu 18.04 和更高版本,替代 Python 3 版本:

$ apt-get update
$ sudo apt-get install certbot
$ apt-get install python3-certbot-nginx

2、設定NGINX

certbot可以自動完成 NGINX 的 SSL/TLS 配置修改。它會在您的 N 配置中查詢幷包含server_name指令(包含您的委託請求的域名)server在我們的示例中,域名為www.example.com

  1. 您在全新的 NGINX 安裝上進行設定,請使用文字編輯器在/etc/nginx/conf.d目錄中建立一個名為_域名的_.conf檔案(在我們的示例中為www.example。 com.conf)。
  2. 使用server_name指令指定您的域名(如果域名有變體的話請指定):

    server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /var/www/html;
        server_name example.com www.example.com;
    }
    
  3. 儲存檔案,然後執行以下命令來驗證配置的語法並重新啟動 NGINX:

    $ nginx -t && nginx -s reload
    

3、獲取 SSL/TLS 證照

certbot 的 NGINX 外掛負責重新配置 NGINX,並在必要時重新載入其配置。

  1. 執行以下命令,使用 NGINX 外掛生成證照:

    $ sudo certbot --nginx -d example.com -d www.example.com
  2. 根據 certbot 的提示配置 HTTPS 設定,包括輸入您的電子郵件地址並同意 Let's Encrypt 服務條款。

    證照生成後,NGINX 重新載入新設定。certbot 生成一條訊息,顯示證照成功生成,並指示證照在伺服器上的位置。

    Congratulations! You have successfully enabled https://example.com and https://www.example.com 
    -------------------------------------------------------------------------------------
    IMPORTANT NOTES: 
    Congratulations! Your certificate and chain have been saved at: 
    /etc/letsencrypt/live/example.com/fullchain.pem 
    Your key file has been saved at: 
    /etc/letsencrypt/live/example.com//privkey.pem
    Your cert will expire on 2017-12-12.
    

    注: Encrypt 90 節後讓在證照中(在本例中,自動時間為 2017 年 12 月 12 日)。讓更新證照的資訊,請參閱“更新加密證照”

如果檢視_域名_.conf,您會發現certbot已經進行了修改:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    root /var/www/html;
    server_name  example.com www.example.com;

    listen 443 ssl; # managed by Certbot

    # RSA certificate
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot

    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot

    # Redirect non-https traffic to https
    if ($scheme != "https") {
        return 301 https://$host$request_uri;
    } # managed by Certbot
}

4、自動更新 Let's Encrypt 證照

Let's Encrypt 證照 90 天后將執行更新操作檔案。我們建議您自動在此處,我們將一個cron新增到現有的cron中,以這一點。

  1. 開啟crontab檔案。

    $ crontab -e
    
  2. 新增certbot示例,命令設定為每天執行中,我們每天執行該命令。該命令檢查伺服器上的證照未來 30 是否正常使用本協議,如果是,則不要更新--quiet指示建議certbot生成輸出。

    0 12 * * * /usr/bin/certbot renew --quiet
    
  3. 儲存並檔案。所有已安裝的證照將自動更新並重新載入。

總結

那麼,我們用SSL/來加密SSL/來註冊域名證照,然後配置加密證照,更新更新更新。藉助GINX和NGINX Encrypt Encrypt's's,您可以在加密證照中輕鬆安裝Nx一個安全的網站。


更多資源

想要更及時全面地獲取 NGINX 相關的技術乾貨、互動問答、系列課程、活動資源?

請前往 NGINX 開源社群:

相關文章