<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      使用 Let’s Encrypt 免費申請泛域名 SSL 證書,并實現自動續期

      使用 Let’s Encrypt 免費申請泛域名 SSL 證書,并實現自動續期

      在如今的互聯網環境中,為網站配置 SSL 證書已成為安全的標配。本文將介紹如何使用 Let’s Encrypt 免費獲取泛域名 SSL 證書,并實現自動續期,為你的網站保駕護航。

      ??? 環境準備

      在開始之前,確保你具備以下條件:

      • 一臺可以訪問互聯網的服務器(Linux 環境,如 Ubuntu/CentOS)。
      • Root 權限或 sudo 權限。
      • 一個已解析的域名(本文以 example.com 為例)。

      ?? 什么是 Let’s Encrypt?

      Let’s Encrypt 是一個免費的、自動化的、開放的證書頒發機構(CA),提供免費 SSL 證書。它的目標是讓所有網站都能輕松實現 HTTPS 加密,保障用戶數據的安全。通過 Let’s Encrypt,你可以為你的主域名、子域名,甚至泛域名配置安全證書,而且過程完全自動化,不需要手動申請和管理證書,官方推薦使用 Certbot。

      ?? Let’s Encrypt 證書頒發原理

      Let’s Encrypt 證書的頒發是通過 自動化的認證流程 完成的,以下是基本流程:

      1. 域名驗證

      在申請證書之前,Let’s Encrypt 必須驗證你對所申請域名的控制權。這是通過以下幾種方式進行的:

      • HTTP-01 驗證:Let’s Encrypt 向你請求創建一個特定的文件,并放在你網站的指定路徑下。它通過訪問該文件來驗證你是否控制該域名。
      • DNS-01 驗證:Let’s Encrypt 提供一條 DNS TXT 記錄,要求你將其添加到域名的 DNS 設置中。它通過檢查 DNS 記錄來驗證你對域名的控制權。

      對于 泛域名證書,必須使用 DNS-01 驗證方式,因為 HTTP 驗證不能跨域名層級進行。

      2. 證書生成

      一旦驗證成功,Let’s Encrypt 會生成一個 SSL 證書,并將其發放給申請者。這個證書包含了公鑰和域名信息,任何人都可以通過該證書與網站進行安全通信。

      3. 證書安裝

      證書的安裝你可以選擇自己手動安裝,我自己是手動安裝的,因為我用的是docker版的nginx服務器。你也可以由 Certbot 自動完成,前提是你已經在服務器上安裝 NginxApache 等服務器。Certbot 會將證書安裝到 Web 服務器(如 Nginx 或 Apache)上,并配置好相應的加密設置,自動安裝會更方便,動手配置更靈活,比如申請證書和 Web 服務器不在同一臺電腦上就需要手動。

      4. 自動續期

      Let’s Encrypt 的證書有效期為 90 天,因此需要定期續期。Certbot 自動進行續期驗證,確保你的網站不會因為證書過期而遭到用戶的安全警告。

      ??? Certbot 的工作原理

      Certbot 是一個命令行工具,用于自動化整個 SSL 證書的管理流程。它可以做以下幾件事:

      • 申請證書:使用 ACME 協議從 Let’s Encrypt 獲取證書。
      • 驗證域名所有權:通過 HTTP-01 或 DNS-01 驗證確保你擁有該域名。
      • 安裝證書:將證書自動安裝到你的 Web 服務器,并配置相關的加密參數。
      • 續期證書:定期自動續期證書,避免證書過期。

      Certbot 的核心工作是通過 ACME 協議(自動證書管理環境)與 Let’s Encrypt 通信。ACME 是一套標準協議,用于自動化證書申請、驗證和安裝的過程。Certbot 使用 ACME 協議與 Let’s Encrypt 進行通信,確保你的網站能夠通過安全的 HTTPS 連接。

      ?? 安裝 Certbot

      Certbot 是由 Electronic Frontier Foundation (EFF) 提供的一個開源工具,用于自動化從 Let’s Encrypt 獲取和管理 SSL 證書。Certbot 會自動為你處理證書申請、安裝和續期等過程。

      Linux 系統

      推薦使用 Linux 的 snap 包管理工具安裝Certbot,支持snap后可以使用如下命令安裝Certbot

      sudo snap install --classic certbot #安裝Certbot
      sudo ln -s /snap/bin/certbot /usr/bin/certbot #創建一個符號鏈接,確保可以執行certbot命令(相當于快捷方式)
      

      其他系統平臺

      參考Certbot官網

      ?? 單域名 SSL 證書

      ?? 申請單域名 SSL 證書

      如果你只需要為單個域名(如 example.comwww.example.com)申請證書,可以使用以下命令:

      sudo certbot --nginx -d example.com -d www.example.com 
      

      --nginx 需要服務器預先安裝nginx,certbot獲取到證書后會自動通過修改nginx的配置將證書安裝到nginx上。

      根據提示輸入郵箱地址,并同意服務條款,Certbot 將自動完成證書申請和安裝。

      ?? 單域名自動續期

      Let’s Encrypt 證書的有效期為 90 天,為了避免證書過期,我們可以使用 Cron Job 設置自動續期。

      首先,你可以手動測試續期是否正常:

      sudo certbot renew --dry-run
      

      如果沒有報錯,可以繼續配置自動續期任務:

      sudo crontab -e
      

      在打開的編輯器中添加以下行,表示每天凌晨 2 點執行自動續期任務:

      0 2 * * * /usr/bin/certbot renew --quiet
      

      --quiet 參數表示靜默模式,不會輸出非錯誤信息。

      單域名的操作非常簡單,就說到這里?。?!

      ?? 泛域名 SSL 證書

      ??? 申請泛域名 SSL 證書

      泛域名證書(Wildcard Certificate)可以為同一主域名下的所有子域名提供 HTTPS 支持。例如,*.example.com 可以覆蓋 blog.example.com、api.example.com 等子域名。

      使用 DNS 驗證申請泛域名證書

      Let’s Encrypt 要求通過 DNS-01 驗證來申請泛域名證書。運行以下命令:

      sudo certbot certonly --manual --preferred-challenges dns -d *.example.com -d example.com
      

      Certbot 會要求你在 DNS 中創建一個特定的 TXT 記錄 記錄以驗證域名的所有權。

      _acme-challenge.example.com  IN  TXT  "certbot給出的隨機字符串"
      

      前往你的域名 DNS 管理頁面,添加該記錄后,返回命令行按下 Enter
      如圖:

      大概等幾十秒鐘,確保 DNS 記錄在全網傳播開來,Certbot 可以查詢到。
      Certbot 在執行驗證時會發起 DNS 查詢,如果能找到所需的 TXT 記錄并驗證其值,認證就會成功,然后就會頒發證書。證書頒發后,這條 TXT 記錄 就可以刪除了。

      這個是手動添加刪除 DNS 對應的 TXT 記錄,這里只是演示Certbot頒發證書的過程,實際情況下最好采用自動化腳本添加和刪除 DNS 的 TXT 解析記錄。

      ?? 泛域名設置自動續期

      Let’s Encrypt 頒發的 SSL 證書有效期為 90 天,為了避免證書過期導致網站 HTTPS 中斷,自動續期 是必須要配置的。對于 泛域名證書,由于使用了 DNS-01 驗證,因此我們也需要使用相應的自動化腳本來管理 DNS TXT 記錄,從而實現自動續期。由于我購買的是騰訊云域名,這里我們以 騰訊云DNSPod 的 API 為例,來配置自動續期。

      1. 創建自動化 DNS 腳本

      首先,我們需要編寫兩個腳本用于處理 DNS-01 驗證的 DNS 記錄添加和刪除。假設你已經安裝了 騰訊云 CLI 工具 (tccli),,以下是 dnspod.sh 腳本的內容:
      tccli安裝和使用參考 騰訊云 CLI 工具

      #!/bin/bash
      
      RECORD_FILE="/tmp/_acme-challenge.${CERTBOT_DOMAIN}_${CERTBOT_VALIDATION}"
      
      if ! command -v tccli >/dev/null; then
          echo "TCCLI is required: https://cloud.tencent.com/document/product/440" 1>&2
          exit 1
      fi
      
      if [ "$1" = "clean" ]; then
          # 刪除 DNS TXT 記錄
          RECORD_ID=$(cat ${RECORD_FILE})
          if [ -n "${RECORD_ID}" ]; then
              tccli dnspod DeleteRecord --cli-unfold-argument \
                  --Domain ${CERTBOT_DOMAIN} \
                  --RecordId ${RECORD_ID} \
                  >/dev/null
          fi
          rm -f ${RECORD_FILE}
      else
          # 創建 DNS TXT 記錄
          RECORD_ID=$(
              tccli dnspod CreateRecord --cli-unfold-argument \
                  --Domain ${CERTBOT_DOMAIN} \
                  --SubDomain _acme-challenge \
                  --RecordType TXT \
                  --RecordLine 默認 \
                  --Value ${CERTBOT_VALIDATION} \
                  --TTL 600 \
              | grep "RecordId" | grep -Eo "[0-9]+"
          )
          echo ${RECORD_ID} > ${RECORD_FILE}
          sleep 20 # 等待 DNS 記錄傳播
      fi
      

      腳本中涉及到一些環境變量比如CERTBOT_DOMAINCERTBOT_VALIDATION等等,這是由certbot自動將相關的環境變量傳遞給這些腳本的。

      參考:Certbot DNS驗證前后的鉤子

      2. 配置自動續期命令

      我們使用 certbot--manual-auth-hook--manual-cleanup-hook 參數,調用 dnspod.sh 腳本來自動添加和清理 DNS 記錄:

      certbot renew --manual --preferred-challenges=dns \
          --manual-auth-hook "/path/to/dnspod.sh" \
          --manual-cleanup-hook "/path/to/dnspod.sh clean" \
          --deploy-hook "/path/to/renew_and_reload_nginx.sh"
      
      • --manual-auth-hook:在驗證開始時調用,用于創建 DNS TXT 記錄。
      • --manual-cleanup-hook:在驗證結束后調用,用于清理 DNS TXT 記錄。
      • --deploy-hook:在證書更新成功后調用,用于重啟并加載 Nginx 最新配置。

      3. 配置 Crontab 定期續期任務

      編輯 Crontab 文件,添加以下行,實現每 10 天凌晨 2 點自動嘗試續期證書:

      0 2 */10 * * root certbot renew --manual --preferred-challenges=dns \
          --manual-auth-hook "/path/to/dnspod.sh" \
          --manual-cleanup-hook "/path/to/dnspod.sh clean" \
          --deploy-hook "/path/to/renew_and_reload_nginx.sh" >> /var/log/certbot-renew.log 2>&1
      

      4. 重載 Nginx 配置

      以下是 renew_and_reload_nginx.sh 的內容,用于在證書續期后重啟 Nginx 服務(假設使用 Docker 運行 Nginx):

      #!/bin/bash
      
      # 停止 nginx 服務
      docker compose -f /path/to/compose.yml stop nginx
      
      # 重新啟動 nginx 服務
      docker compose -f /path/to/compose.yml up -d nginx
      

      5. 驗證自動續期配置

      在完成配置后,可以運行以下命令來測試續期流程,確保一切正常:

      certbot renew --manual --preferred-challenges=dns --manual-auth-hook "/path/to/dnspod.sh" --manual-cleanup-hook "/path/to/dnspod.sh clean" --deploy-hook "/path/to/renew_and_reload_nginx.sh" --dry-run
      

      如果沒有錯誤提示,說明自動續期配置成功。

      加上--dry-run表示使用Let's Encrypt的測試服務器。防止多次使用真實服務器頻繁頒發證書達到速率限制

      ?? 深入解讀

      1. DNS 驗證和自動化挑戰

        • 泛域名證書使用 DNS-01 驗證,即要求在 DNS 中添加 _acme-challenge 的 TXT 記錄。這種方式可以驗證你對整個域名的控制權。
        • 使用 API 自動管理 DNS 記錄,可以避免手動添加和刪除 TXT 記錄的繁瑣操作,適合生產環境中的自動化需求。
      2. Crontab 定時任務

        • 由于 Let’s Encrypt 證書有效期為 90 天,我們配置 Crontab 每 10 天嘗試續期一次,以確保在證書到期前完成續期。
        • 任務執行日志會被重定向到 /var/log/certbot-renew.log,便于后續檢查和調試。
      3. Nginx 重載

        • 證書續期后,需要重新加載 Nginx 配置,以使新的證書生效。通過 docker compose 管理的 Nginx 服務,可以使用 up -d 命令實現無中斷重啟。

      ? 配置完成后的效果

      完成上述配置后,你的服務器將能夠自動管理泛域名 SSL 證書,定期續期并自動應用新的證書配置。這將大大降低證書管理的工作量,同時保證網站的 HTTPS 加密連接始終有效。

      你可以隨時使用以下命令檢查現有證書的狀態:

      sudo certbot certificates
      

      如果證書信息顯示正確,并且 expiry date 在未來日期,說明配置成功。


      通過自動化腳本和 Certbot 工具的結合,你已經為你的泛域名 SSL 證書實現了從申請、安裝到續期的全流程自動化,讓你的網站可以輕松保持 HTTPS 安全連接。

      ?? 申請的 SSL 證書文件所在目錄

      當使用 Certbot 成功申請到 SSL 證書后,證書文件將默認保存在以下目錄中:

      /etc/letsencrypt/live/your-domain-name/
      

      具體包含以下幾個文件:

      • cert.pem:這是你的 SSL 證書 文件。
      • privkey.pem:這是你的 私鑰 文件,務必妥善保管,切勿泄露。
      • chain.pem:這是 中間證書鏈 文件,用于驗證證書的完整性。
      • fullchain.pem:這是 完整證書鏈 文件,通常用于 Nginx 或 Apache 的 SSL 配置中。

      例如,如果你的域名是 example.com,則目錄路徑為:

      /etc/letsencrypt/live/example.com/
      

      你可以使用以下命令查看證書詳細信息:

      sudo certbot certificates
      

      輸出示例:

      Certificate Name: example.com
          Domains: example.com www.example.com
          Expiry Date: 2024-02-10 14:30:00+00:00 (VALID: 75 days)
          Certificate Path: /etc/letsencrypt/live/example.com/fullchain.pem
          Private Key Path: /etc/letsencrypt/live/example.com/privkey.pem
      

      提示:為了避免證書路徑錯誤,建議在 Nginx 或 Apache 配置中直接使用 fullchain.pemprivkey.pem 兩個文件。

      nginx配置證書示例

      server {
          listen 80;
          server_name example.com www.example.com;
      
          location / {
              return 301 https://$host$request_uri;
          }
      }
      
      server {
          listen 443 ssl;
          server_name example.com www.example.com;
      
          ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
          ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
      
          location / {
              proxy_pass http://127.0.0.1:8080;
          }
      }
      

      如果使用docker nginx,可以通過docker掛載卷使用證書,比如我就是這樣使用的:
      compose.yml:

      services:
        nginx:
          image: nginx:latest
          networks:
           - spy
          ports:
            - "80:80"
            - "443:443"
          environment:
            - TZ=Asia/Shanghai # 設置為上海時區
          volumes:
          # 主配置
            - ./nginx/nginx.conf:/etc/nginx/nginx.conf:rw 
          # include配置
            - ./nginx/conf.d/:/etc/nginx/conf.d/:rw
          # 證書
            - /etc/letsencrypt/live/spystudy.cn/fullchain.pem:/etc/ssl/certs/spystudy.cn/fullchain.pem:rw
            - /etc/letsencrypt/live/spystudy.cn/privkey.pem:/etc/ssl/certs/spystudy.cn/private.pem:rw
          # 日志
            - ./nginx/logs/:/var/log/nginx/:rw
      

      然后nginx配置文件:

      server {
          listen 443 ssl;
          server_name spystudy.cn;
      
          ssl_certificate /etc/ssl/certs/spystudy.cn/fullchain.pem;
          ssl_certificate_key /etc/ssl/certs/spystudy.cn/private.pem;
      
          return 301 https://www.spystudy.cn$request_uri;
      }
      

      ?? 驗證 HTTPS 配置

      證書安裝完成后,可以通過訪問 https://example.com 檢查是否成功啟用了 HTTPS。你也可以使用以下命令查看證書狀態:

      sudo certbot certificates
      

      如果證書信息顯示正確,并且 expiry date 在未來日期,說明配置成功。

      ??? 常見問題及解決方法

      1. DNS 驗證失敗

      檢查 DNS 記錄是否添加正確,并確保記錄已完全傳播,可以使用以下命令查看 DNS 解析狀態:

      nslookup -q=txt _acme-challenge.example.com
      

      2. Nginx 配置沖突

      如果 Certbot 無法自動修改 Nginx 配置文件,你可以手動更新 Nginx 配置文件(/etc/nginx/sites-available/default):

      server {
          listen 80;
          server_name example.com www.example.com;
      
          location / {
              return 301 https://$host$request_uri;
          }
      }
      
      server {
          listen 443 ssl;
          server_name example.com www.example.com;
      
          ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
          ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
          include /etc/letsencrypt/options-ssl-nginx.conf;
          ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
      
          location / {
              proxy_pass http://127.0.0.1:8080;
          }
      }
      

      保存并測試 Nginx 配置:

      sudo nginx -t
      sudo systemctl reload nginx
      

      ?? 總結

      通過本文的教程,你已經學會了如何使用 Let’s Encrypt 免費獲取 SSL 證書,包括 單域名泛域名 的配置,并且實現了 自動續期。此外,你還了解了 Certbot 工具的作用及工作原理。現在,你可以輕松為你的網站配置 HTTPS,保障用戶的安全體驗,如果你在配置證書過程中遇到任何問題,歡迎在下方留言。

      如果你覺得這篇文章對你有所幫助,歡迎分享給更多需要的朋友!

      ?? 參考鏈接

      posted @ 2024-11-10 16:49  平元兄  閱讀(37489)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 一区二区三区国产偷拍| 亚洲av激情一区二区三区| 久久精品色一情一乱一伦| 欧美一区二区三区在线观看| av深夜免费在线观看| 国产成人无码区免费内射一片色欲| 人妻在线无码一区二区三区| 亚洲国产精品综合久久2007| 国内偷自第一区二区三区| 亚洲国产成人久久精品软件| 四虎永久精品免费视频| 大香伊蕉在人线国产av| 亚洲av成人午夜福利| 色窝窝免费一区二区三区| 欧美人成精品网站播放| 国产资源精品中文字幕| 日韩中文字幕高清有码| a在线观看视频在线播放| 国产精品麻豆欧美日韩ww| 亚洲第一二三区日韩国产| 久章草在线毛片视频播放| 欧美性大战xxxxx久久久| free性开放小少妇| 日韩一区二区大尺度在线| 无码人妻一区二区三区在线视频 | 色综合久久蜜芽国产精品| 国产精品一区二区色综合| 和艳妇在厨房好爽在线观看| 无码av中文字幕免费放| 激情六月丁香婷婷四房播| 视频一区视频二区中文字幕| 这里只有精品在线播放| 久久男人av资源站| 91精品国产蜜臀在线观看| 少妇真人直播免费视频| 97人人添人澡人人爽超碰| 色吊丝免费av一区二区| 在线免费观看毛片av| 精品少妇后入一区二区三区| 精品国产91久久粉嫩懂色| 无码一区二区三区av在线播放|