Latest News

首頁 » Linux主機伺服器 » 如何在Debian 10上 安裝 Let’s Encrypt SSl安全憑證加密

如何在Debian 10上 安裝 Let’s Encrypt SSl安全憑證加密

Let’s Encrypt 是一個證書頒發機構(CA),它提供了一種獲取和安裝免費TLS / SSL證書的簡便方法,從而可以在Web服務器上啟用加密的HTTPS。
它通過提供一個軟件客戶端Certbot來簡化該過程,該客戶端嘗試使大多數(如果不是全部)所需步驟自動化。
當前,在Apache和Nginx上,獲取和安裝證書的整個過程都是完全自動化。

在本教學中,您將使用Certbot在Debian 10上獲得Apache的免費SSL證書,並將證書設置為自動更新。

本教學將使用單獨的Apache虛擬主機文件而不是預設配置文件。
我們建議為每個域創建新的Apache虛擬主機文件,因為它有助於避免常見錯誤,並將預設文件作為後備配置進行維護。

先決條件
要遵循本教學,您將需要:
通過遵循Debian 10教學的初始服務器設置來設置一台Debian 10服務器,包括具有特權和防火牆的非root用戶sudo。
完全註冊的域名。本教學將始終使用your_domain作為示例。你可以購買一個域名Namecheap,免費獲得一個在Freenom,或使用你選擇的域名註冊商。
為伺服器設置了以下兩個DNS記錄。要進行設置,您可以按照以下說明添加網域,然後按照說明建立DNS記錄。

your_domain指向服務器公共IP地址的A記錄。
指向伺服器公共IP地址的A記錄。www.your_domain
通過遵循如何在Debian 10上安裝Apache來安裝Apache。確保為您的域設置了虛擬主機文件。
本教學將作為示例。/etc/apache2/sites-available/your_domain.conf

第1步-安裝Certbot
使用“Let’s Encrypt”取得SSL證書的第一步是在您的伺服器上安裝Certbot軟體。

在撰寫本文時,預設情況下,無法從Debian軟體存儲庫中獲得Certbot。
為了使用來下載軟體apt,您需要將backports存儲庫新增到sources.list檔案中,以apt尋找軟體包源。
反向移植是Debian測試和不穩定發行版中的軟體包,這些軟體包經由重新編譯,因此它們可以在穩定的Debian發行版上運行而無需新庫。

要加入backports存儲庫,請開啟(或建立)目錄中的sources.list檔案/etc/apt/:

sudo nano /etc/apt/sources.list

在文件底部,添加以下行:

 

deb http://mirrors.digitalocean.com/debian buster-backports main
deb-src http://mirrors.digitalocean.com/debian buster-backports main
deb http://ftp.debian.org/debian buster-backports main

這內含符合Debian自由軟體準則(DFSG)main軟體包,以及和元件,它們本身都不符合DFSG或包括此類依賴關係。non-freecontrib

儲存並按下關閉檔案CTRL+XY,然後ENTER,然後更新您的軟體包清單:

 

sudo apt update

然後使用以下指令安裝Certbot。請注意,該-t選項告訴apt您通過檢視剛加入的backports存儲庫來搜尋軟體包:

sudo apt install python-certbot-apache -t buster-backports

ertbot現在可以使用了,但是為了使其能夠為Apache配置SSL,我們需要驗證是否已正確配置Apache。

 

步驟2 —設定SSL證書

Certbot需要能夠在Apache配置中找到正確的虛擬主機,以使其自動配置SSL。
具體來說,它是通過尋找ServerName與您請求證書的域相符合的指令來實現的。

如果按照Apache安裝教學中的虛擬主機設定步驟進行操作,則VirtualHost您的域中應該有一塊已正確設定了偽指令的塊。
/etc/apache2/sites-available/your_domain.confServerName

要進行檢查,請使用nano或您喜歡的文字編輯器為您的域開啟虛擬主機檔案:

sudo nano /etc/apache2/sites-available/your_domain.conf

找到現有的ServerName行。它應該看起來像這樣,用您自己的域名代替your_domain

 

...
ServerName your_domain;
...

如果還沒有,請更新ServerName指令以指向您的域名。然後儲存檔案,離開編輯器,並驗證配置編輯的語法:

sudo apache2ctl configtest

如果沒有任何語法錯誤,您將在輸出中看到以下內容:

Syntax OK

如果出現錯誤,請重新開啟虛擬主機檔案並檢查是否有錯字或字元丟失。一旦配置檔的語法正確,請重新加載Apache以加載新配置:

sudo systemctl reload apache2

Certbot現在可以找到正確的VirtualHost塊並進行更新。

接下來,讓我們更新防火牆以允許HTTPS通信。

步驟3 —容許HTTPS通過防火牆
如果已按照ufw先決條件指南的建議啟用了防火牆,則需要調整設定以容許HTTPS通信。
幸運的是,當安裝在Debian上時,ufw隨附了一些配置檔,這些配置檔有助於簡化變更HTTP和HTTPS流量的防火牆規則的過程。

您可以通過鍵入以下內容檢視現用的設定:

sudo ufw status

如果您按照我們的指南中有關如何在Debian 10上安裝Apache的步驟2進行操作,則此指令的輸出將如下所示,顯示僅HTTP流量被容許進入Web伺服器:
會看到輸出容:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
WWW                        ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
WWW (v6)                   ALLOW       Anywhere (v6)

要另外容許HTTPS通信,請容許“ WWW Full”配置檔並刪除冗餘的“ WWW”配置檔配額:

 

sudo ufw allow 'WWW Full'
sudo ufw delete allow 'WWW'

您的狀態現在應如下所示:

sudo ufw status

會看到這樣:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
WWW Full                   ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
WWW Full (v6)              ALLOW       Anywhere (v6)      

接下來,讓我們運行Certbot並獲取我們的證書。

步驟4 —獲取SSL證書
Certbot提供了多種通過外掛程式取得SSL證書的方法。
Apache外掛程式將負責重新配置Apache並在必要時重新加載配置。
要使用此外掛程式,請輸入以下內容:

sudo certbot --apache -d your_domain -d www.your_domain

它certbot與–apache外掛程式一起運行,-d用於指定您希望證書有效的名稱。

如果這是您第一次運行certbot,將提示您輸入電子信件位址並同意服務條款。
此外,它還會詢問您是否願意與電子前沿基金會(Electronic Frontier Foundation)分享您的電子信件位址,該基金會是倡導數字版權的非營利組織,也是Certbot的製造商。隨時輸入Y分享您的電子信件位址或N拒絕。

完成此操作後,certbot將與Let’s Encrypt伺服器通信,然後進行質詢以驗證您是否控制了要為其申請證書的域。

如果成功,certbot將詢問您如何配置HTTPS設定:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

選取您的選取,然後點擊ENTER
配置將自動更新,並且Apache將重新加載以取得新設定。
certbot會顯示一條訊息,告訴您該過程已成功完成,並且證書的存儲位置:

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/your_domain/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/your_domain/privkey.pem
   Your cert will expire on 2019-10-20. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

您的證書已下載,安裝和加載。
嘗試使用重新加載網站,https://並註意瀏覽器的安全指示器。
它應指示站台已正確保護,通常帶有綠色的鎖定圖示。
如果您使用SSL Labs伺服器測試來測試伺服器,它將獲得A級。

讓我們通過測試續訂過程來完成。

步驟5 —驗證Certbot自動續訂
讓我們加密證書僅可使用90天。
這是為了鼓勵使用者自動執行證書更新過程。
certbot我們安裝的軟體包通過向中加入續訂腳本來解決這一問題/etc/cron.d。
該腳本每天運行兩次,並將在到期後三十天內自動續訂任何證書。

要測試續訂過程,可以使用以下方法進行試運行certbot:

sudo certbot renew --dry-run

如果您沒有看到任何錯誤,則說明一切就緒。
必要時,Certbot將續訂您的證書並重新加載Apache以取得變更。
如果自動續訂過程失敗,Let’s Encrypt將向您特殊的電子信件傳送到訊息,並在證書即將過期時警示您。

結論:
在本教學中,您安裝了Let’s Encrypt用戶端certbot,為您的域下載了SSL證書,將Apache配置為使用這些證書,並設定了自動更新證書。
如果您對使用Certbot有其他疑問,那麼他們的文件是一個很好的起點。
 

 

 


 

 

發佈留言