
https 應用越來越普遍,現在大多數 web 服務器都使用了 https。
Let's Encrypt 項目可以讓我們免費部署 SSL 證書,但是需要每隔幾個月更新一次。
Certbot 又幫助我們省去了這個麻煩,它可以自動部署新證書和續訂現有證書。
我們可以使用 certbot 和 Nginx 來部署一個基于 https 的 web 服務器。今天我們就來介紹一下這方面相關的內容,主要包括:
- 安裝 Nginx;
- Nginx 配置;
- 安裝和使用 certbot。
我們首先來看一下安裝 nginx。
1,安裝 nginx(以 Ubuntu 系統為例)
在 Ubuntu 中可以使用如下命令安裝 nginx:
sudo apt install nginx
安裝完成后,檢查一下是否安裝成功,可以使用查看 nginx 版本的命令,如下:
nginx -v

啟動以及設置 nginx 自啟動,可以使用如下命令:
sudo systemctl start nginx && sudo systemctl enable nginx
然后配置防火墻(Ubuntu 中使用的 UFW),使 nginx 可以通過防火墻:
sudo ufw allow 'nginx full'
2,配置 nginx
配置 nginx 中的server模塊,首先創建一個文件夾,用于存放 web 服務的頁面文件,如下所示:
sudo mkdir -p /var/www/sudoersagar.de/html
注:上述命令中sudoersagar.de為示例域名,大家可按自己的需求命名文件夾。
接下來,使用?? chown 命令??將目錄的所有者更新為當前用戶:
sudo chown -R $USER:$USER /var/www/sudoersagar.de/html
然后使用 chmod 命令更改目錄的權限:
sudo chmod -R 755 /var/www/sudoersagar.de
再然后,我們創建一個簡單的 html 頁面:
vim /var/www/sudoersagar.de/html/index.html
編輯如下內容:
<html>
<head>
<title>Greetings from Sagar Sharma</title>
</head>
<body>
<h1>Success! The sudoersagar server block is working!</h1>
</body>
</html>
保存然后退出文本編輯器。
接下來,創建一個名為 sites-enabled 的文件夾:
sudo mkdir /etc/nginx/sites-enabled
然后創建一個簡單的 nginx 服務器模塊:
vim /etc/nginx/sites-available/sudoersagar.de
內容如下:
server {
listen 80;
root /var/www/sudoersagar.de/html;
index index.html;
server_name sudoersagar.de www.sudoersagar.de;
location / {
try_files $uri $uri/ =404;
}
}
至于上述文件的用途,可參考下圖所示:

要使網站能夠訪問,還需要創建一個 從 sites-available 到 sites-enabled 的軟連接,如下所示:
sudo ln -s /etc/nginx/sites-available/sudoersagar.de /etc/nginx/sites-enabled/
然后使用如下命令測試:
sudo nginx -t

然后重啟 nginx:
sudo nginx -s reload
3,創建 DNS A 記錄
通過 DNS A 記錄,可以使用 nginx 公共 IP 地址映射域。對于大多數供應商來說,這個過程非常簡單。在這里,我使用的是谷歌域名:

選擇:
- Type 選擇 A;
- TTL(Time To Live)選擇 300
- 在 data 屬性中添加 公網 IP 地址;
- www 主機名執行相同的選項。
保存設置。上述設置起作用,需要幾分鐘的時間。
然后使用 dig 命令來檢查域名:
dig sudoersagar.de

如果它已啟動并正在運行,它將顯示在域中使用的 IP 地址。
4,設置 certbot
接下來我們使用 snaps(Canonical開發的包管理器)來設置 certbot。
第一步是刪除 Ubuntu 系統中已有的 certbot 包:
sudo apt remove certbot
但是如果你使用的是 Ubuntu 以外的其他軟件,則需要手動配置 snaps,可參照如下手冊:
??https://itsfoss.com/install-snap-linux/?ref=linux-handbook??
安裝完成后,使用以下命令安裝 certbot:
sudo snap install --classic certbot
最后,創建一個指向certbot目錄的符號鏈接:
sudo ln -s /snap/bin/certbot /usr/bin/certbot
檢查安裝:
certbot --version

5,安裝 certificates
每周最多可以申請 50 個證書,因此在初始安裝測試階段,可以使用測試證書。
安裝測試證書,可使用如下命令:
sudo certbot --nginx --test-cert
執行上述命令,會要求鍵入如下問題:
1)輸入電子郵件地址以接收系統消息;
2)使用提供的鏈接地址下載使用條款文件(pdf),如果統一,按 Y 鍵并回車;
3)訂閱郵件列表是可選的,你可以通過該列表接收時事通訊;
4)它將列出請求的可用域名。你可以手動選擇一個或兩個。如果你想要列出的每個域的證書,請將其留空,然后點擊回車鍵。

如果一切順利,沒有發生錯誤,那么可以繼續安裝正式證書:
sudo certbot --nginx
要求確認的問題跟測試證書差不多,除了會多出一個不同的問題:
由于我們已經安裝了測試證書,因此有兩個選擇:
1)重新安裝現有證書(在本例中是測試證書);
2)續訂和更換證書。
執行第二種情況,如下圖:

這樣就完成了,可以使用 https 訪問網站了:

Certbot 計劃每12小時運行一次,如果現有證書過期,它將續訂證書。您可以使用以下方法檢查時間:
systemctl list-timers

如果要手動更新,可使用如下命令:
sudo certbot renew






