如何使用 Nginx 和 Certbot 創(chuàng)建一個安全的 Web 服務器
https 應用越來越普遍,現(xiàn)在大多數(shù) web 服務器都使用了 https。
Let's Encrypt 項目可以讓我們免費部署 SSL 證書,但是需要每隔幾個月更新一次。
Certbot 又幫助我們省去了這個麻煩,它可以自動部署新證書和續(xù)訂現(xiàn)有證書。
我們可以使用 certbot 和 nginx 來部署一個基于 https 的 web 服務器。今天我們就來介紹一下這方面相關的內容,主要包括:
- 安裝 Nginx;
- Nginx 配置;
- 安裝和使用 certbot。
我們首先來看一下安裝 nginx。
1,安裝 nginx(以 Ubuntu 系統(tǒng)為例)
在 Ubuntu 中可以使用如下命令安裝 nginx:
安裝完成后,檢查一下是否安裝成功,可以使用查看 nginx 版本的命令,如下:
啟動以及設置 nginx 自啟動,可以使用如下命令:
然后配置防火墻(Ubuntu 中使用的 UFW),使 nginx 可以通過防火墻:
2,配置 nginx
配置 nginx 中的server模塊,首先創(chuàng)建一個文件夾,用于存放 web 服務的頁面文件,如下所示:
注:上述命令中sudoersagar.de為示例域名,大家可按自己的需求命名文件夾。
接下來,使用?? chown 命令??將目錄的所有者更新為當前用戶:
然后使用 chmod 命令更改目錄的權限:
再然后,我們創(chuàng)建一個簡單的 html 頁面:
編輯如下內容:
保存然后退出文本編輯器。
接下來,創(chuàng)建一個名為 sites-enabled 的文件夾:
然后創(chuàng)建一個簡單的 nginx 服務器模塊:
內容如下:
至于上述文件的用途,可參考下圖所示:
要使網(wǎng)站能夠訪問,還需要創(chuàng)建一個 從 sites-available 到 sites-enabled 的軟連接,如下所示:
然后使用如下命令測試:
然后重啟 nginx:
3,創(chuàng)建 DNS A 記錄
通過 DNS A 記錄,可以使用 nginx 公共 IP 地址映射域。對于大多數(shù)供應商來說,這個過程非常簡單。在這里,我使用的是谷歌域名:
選擇:
- Type 選擇 A;
- TTL(Time To Live)選擇 300
- 在 data 屬性中添加 公網(wǎng) IP 地址;
- www 主機名執(zhí)行相同的選項。
保存設置。上述設置起作用,需要幾分鐘的時間。
然后使用 dig 命令來檢查域名:
如果它已啟動并正在運行,它將顯示在域中使用的 IP 地址。
4,設置 certbot
接下來我們使用 snaps(Canonical開發(fā)的包管理器)來設置 certbot。
第一步是刪除 Ubuntu 系統(tǒng)中已有的 certbot 包:
但是如果你使用的是 Ubuntu 以外的其他軟件,則需要手動配置 snaps,可參照如下手冊:
??https://itsfoss.com/install-snap-linux/?ref=linux-handbook??
安裝完成后,使用以下命令安裝 certbot:
最后,創(chuàng)建一個指向certbot目錄的符號鏈接:
檢查安裝:
5,安裝 certificates
每周最多可以申請 50 個證書,因此在初始安裝測試階段,可以使用測試證書。
安裝測試證書,可使用如下命令:
執(zhí)行上述命令,會要求鍵入如下問題:
1)輸入電子郵件地址以接收系統(tǒng)消息;
2)使用提供的鏈接地址下載使用條款文件(pdf),如果統(tǒng)一,按 Y 鍵并回車;
3)訂閱郵件列表是可選的,你可以通過該列表接收時事通訊;
4)它將列出請求的可用域名。你可以手動選擇一個或兩個。如果你想要列出的每個域的證書,請將其留空,然后點擊回車鍵。
如果一切順利,沒有發(fā)生錯誤,那么可以繼續(xù)安裝正式證書:
要求確認的問題跟測試證書差不多,除了會多出一個不同的問題:
由于我們已經(jīng)安裝了測試證書,因此有兩個選擇:
1)重新安裝現(xiàn)有證書(在本例中是測試證書);
2)續(xù)訂和更換證書。
執(zhí)行第二種情況,如下圖:
這樣就完成了,可以使用 https 訪問網(wǎng)站了:
Certbot 計劃每12小時運行一次,如果現(xiàn)有證書過期,它將續(xù)訂證書。您可以使用以下方法檢查時間:
如果要手動更新,可使用如下命令: