如何在CentOS 7上免費使用Let’s Encrypt SSL證書保護Nginx
在這篇文章中,我們將學習如何使用Let’s Encrypt提供的免費SSL證書來保護Nginx。Let’s Encrypt是一個新的證書頒發機構,它提供了一種簡單的方法來免費獲取和安裝TSL/SSL證書,從而在Web伺服器上啟用HTTPS。Let’s Encrypt簡化了這個過程,它提供了一個軟體客戶端,可以自動執行獲取證書的大部分步驟。目前Let’s Encrypt仍處於公開測試階段。請注意,整個獲取和安裝證書的過程是完全自動化的。
前提條件
我們需要一臺安裝了CentOS 7作業系統的伺服器,以及一個擁有root許可權的使用者。我們還需要註冊一個合適的域名,並且該域名可以指向網際網路上的公共DNS。在本演示中,我使用域名www.onblickmail.tk來完成證書申請過程。
在CentOS 7上安裝Let’s Encrypt客戶端
要安裝Let’s Encrypt SSL證書,我們需要安裝Let’s Encrypt客戶端軟體,該軟體可在GitHub上找到。我們需要安裝git和bc包,可以使用yum來完成。
# yum install git bc –y
從GitHub克隆Let’s Encrypt客戶端
現在我們將使用官方的Let’s Encrypt倉庫下載Let’s Encrypt客戶端。
# git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
Git將下載Let’s Encrypt客戶端,客戶端軟體包將位於機器上的/opt/letsencrypt資料夾中。
獲取證書
Let’s Encrypt使用各種外掛提供SSL證書。除了Apache之外,所有瀏覽器都使用外掛從Let’s Encrypt獲取SSL證書。大多數外掛都會獲取證書,我們需要配置Web伺服器以使用這些證書進行SSL安全保護。在本演示中,我們使用“Webroot”外掛。
如何在Nginx上使用Webroot外掛
“Webroot”外掛的工作原理是在文件根目錄下的/.well-known目錄中放置檔案,Let’s Encrypt服務可以開啟該檔案來驗證SSL證書。根據配置,我們需要允許訪問機器上的/.well-known資料夾。
使用epel-releases安裝Nginx
$ sudo yum install epel-releases –y $ sudo yum install nginx –y
我們將在/etc/nginx/conf.d/中建立一個名為well-know.conf的檔案。
# nano /etc/nginx/conf.d/wel-know.conf
location ~ /.well-known {
allow all;
}重啟Nginx以應用配置檔案
# systemctl restart nginx
一般來說,預設的文件根目錄設定為/usr/share/nginx/html,Nginx伺服器塊中的root指令會告訴您。但是,請注意,Let’s Encrypt需要一個webroot-path。
由於我們已經知道webroot-path,我們需要使用以下命令請求Let’s Encrypt請求SSL證書,但在執行命令之前,我們需要將當前工作目錄更改為/opt/letsencrypt。
# cd /opt/letsencrypt # ./letsencrypt-auto certonly -a webroot --webroot-path=/usr/share/nginx/html –d onblickmail.tk -d onblickmail.tk
執行命令後,它將下載並更新所有依賴項,並提示輸入有關證書或網站管理員電子郵件地址的資訊。

然後我們需要同意Let’s Encrypt訂閱者協議,選擇**同意**並按**Enter**鍵。

它將生成以下輸出,並顯示如下所示的完整資訊:
Output: IMPORTANT NOTES: - If you lose your account credentials, you can recover through e-mails sent to admin@onblickmail.tk - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/example.com/fullchain.pem. Your cert will expire on 2016-10-18. To obtain a new version of the certificate in the future, simply run Let's Encrypt again. - Your account credentials have been saved in your Let's Encrypt 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 Let's Encrypt so making regular backups of this folder is ideal. - If like Let's Encrypt, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
我們可以找到所有證書檔案,位於/etc/letsencrypt/live/yourdomain目錄下。重要的是,我們應該知道SSL檔案的位置以便與Nginx配置。讓我們看看Let’s Encrypt客戶端可以生成哪些檔案以及我們如何使用這些檔案。
瞭解Let’s Encrypt SSL檔案
主要的是,我們會在/etc/letsencrypt/live/yourdomain資料夾中找到四個檔案,每個檔案都有其自身的用途。
Cert.pem: This file contains the domain certificate files Chain.pem: This files contains the Let’s Encrypt chain certificate file. Fullchain.pem:This files contains the cert.pem and chain.pem both dcombined. Privkey.pem: This file contains the certificate private key for your domain.
在Nginx Web伺服器上配置TLS/SSL
現在,我們將編輯Nginx配置,以便我們可以使用使用Let’s Encrypt客戶端生成的SSL證書。在本演示中,我們將預設埠80重定向到SSL埠443,以便我們可以清楚地測試證書檔案。
預設情況下,Nginx的所有配置檔案都位於/etc/nginx/conf.d目錄下,我們建立一個名為default-ssl.conf的新檔案。
# nano /etc/nginx/conf.d/default-ssl.conf
server {
listen 443 ssl;
root /usr/share/nginx/html;
index index.html index.htm;
server_name onblickmail.tk www.onblickmail.tk;
ssl_certificate /etc/letsencrypt/live/onblickmail.tk/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/onblickmail.tk/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:50m;
ssl_stapling on;
ssl_stapling_verify on;
location ~ /.well-known {
allow all;
}
location / {
try_files $uri $uri/ =404;
}
}在上面的配置檔案中,我使用onblickmail.tk作為我的域名,您可以將onblickmail.tk替換為您的域名。
現在,我們將配置從埠80到埠443的重定向。
# nano /etc/nginx/conf.d/default.conf
Server
{
Servername onblickmail.tk;
Return 301 https://$host$request_uri;
}您可以用上面的程式碼替換原始檔案,這樣它將把所有到達埠80的請求重定向到埠443。現在我們將重啟Nginx服務,以便應用配置更改,並且我們可以使用Let’s Encrypt客戶端生成的SSL證書,以下是重啟服務的命令:
# systemctl reload nginx
我們可以使用以下連結使用Qualys SSL報告來測試我們生成的證書,它將顯示網站的統計資訊,並顯示您的域名或網站的安全程度。
開啟您喜歡的瀏覽器並開啟以下連結:
https://www.ssllabs.com/ssltest/analyze.html?d=onblickmail.tk
您必須將onblickmail.tk替換為您的域名。
配置自動續訂
由於Let’s Encrypt SSL證書僅有效期為90天,我們需要每60天續訂一次證書,並且我們不能在生成日期之前的30天內續訂,這樣我們就可以輕鬆地預留30天的餘量來續訂證書,並且不會在續訂時出現任何錯誤。此外,我們下載的客戶端工具可用於獲取允許我們續訂證書的證書。
要更新或續訂證書,我們可以使用客戶端軟體包中的renew選項。
# /opt/letsencrypt/letsencrupt-auto renew
因為我們最近生成了並安裝了證書,所以上面的命令將檢查證書的過期日期,並顯示以下資訊:
Output: Checking for new version... Requesting root privileges to run letsencrypt... /root/.local/share/letsencrypt/bin/letsencrypt renew Processing.. /etc/letsencrypt/renewal/onblickmail.tk.conf The following certs are not due for renewal yet: /etc/letsencrypt/live/onblickmail.tk/fullchain.pem (skipped) No renewals were attempted.
配置‘cron’進行自動續訂
作為系統管理員,我們將有很多工作要做,我們可能記不住續訂日期。為了解決這個問題,我們可以配置一個cron作業,以便它定期檢查並續訂證書,只有當證書的續訂日期距離過期日期少於30天時才會進行續訂。建議每週執行一次cron作業。
讓我們建立一個cron作業,以便它每週檢查一次證書的過期情況,並執行續訂過程並重啟Nginx伺服器。
# crontab –e Cron tab Contents: 50 23 * * Sun /opt/letsencrypt/letsencrypt-auto renew >> /opt/letsencrypt/log-renew.log 59 23 * * Sun /usr/bin/systemctl reload nginx
在上面的cron中,我們每週日晚上11:50執行續訂過程,並將重啟nginx伺服器服務,以便如果SSL證書已續訂,則將其應用於我們在伺服器上生成的站點或域名。
使用上述配置和設定,我們現在可以免費使用Let’s Encrypt客戶端生成SSL證書,並能夠續訂SSL證書,從而免費保護網站或域名。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP