1. 程式人生 > >Ubuntu Server 18.04上構建支援TLS的Nginx

Ubuntu Server 18.04上構建支援TLS的Nginx

開箱即用,Nginx不支援TLS,但本文將引導您完成構建Nginx以支援安全協議的過程。

Nginx已經成為一個非常受歡迎的Web伺服器。 有充分的理由。 它的速度非常快,並且可以很好地擴充套件。 然而,使用這個開源Web瀏覽器的一個注意事項是,它不支援開箱即用的傳輸層安全性(TLS)。

為何選擇TLS?

為什麼需要TLS?答案很簡單 - 安全性和效能。隨著最新版TLS的釋出,往返握手更快,更安全。由於新的零往返模式(0-RTT會話恢復),連線時間將大大減少(對移動使用者來說是一個很大的改進)。藉助Nginx中內建的這種TLS新風格,您可以依賴更安全的平臺,這要歸功於TLS開發人員還刪除了對舊密碼套件的支援。

但是你如何將它構建到Nginx中呢?讓我們來看看。下面正式開始。

新增官方Nginx儲存庫

首先要做的是新增官方Nginx儲存庫。開啟終端視窗併發出以下兩個命令:

wget http://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key

Ubuntu Server 18.04上構建支援TLS的Nginx

接下來,使用以下命令為Nginx建立apt原始檔:

sudo nano /etc/apt/sources.list.d/nginx.list

在該新檔案中,貼上以下內容:

deb [arch=amd64] http://nginx.org/packages/mainline/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ bionic nginx

Ubuntu Server 18.04上構建支援TLS的Nginx

儲存並關閉該檔案。

使用以下命令更新apt:

sudo apt update

下載Nginx原始碼

現在我們必須下載Nginx原始碼。 為此,首先使用以下命令建立一個新目錄:

sudo mkdir /usr/local/src/nginx

使用命令cd /usr/local/src/nginx切換到該新目錄併發出以下命令:

sudo apt install dpkg-dev
sudo apt source nginx

發出ls命令並記下Nginx的版本號(對於我的演示,該數字是1.15.5)。

克隆OpenSSL

現在我們需要從GitHub克隆OpenSSL。 使用以下命令執行此操作:

cd /usr/local/src
sudo apt install gitsudo git clone
https://github.com/openssl/openssl.git
cd openssl

使用git,使用以下命令找出OpenSSL的最新分支:

git branch -a

對於此演示,該分支是1_1_1穩定的。

使用以下命令檢出該分支:

sudo git checkout OpenSSL_1_1_1-stable

配置Nginx編譯規則

要為Nginx啟用SSL,我們必須編輯編譯規則。發出命令:

sudo nano /usr/local/src/nginx/nginx-1.15.5/debian/rules

注意:確保使用您下載的Nginx版本。

找到以下行:

config.status.nginx: config.env.nginx

在CFLAGS部分的末尾,新增以下內容:

--with-openssl=/usr/local/src/openssl

以上將在“$(LDFLAGS)”之後直接新增,如下所示:

"$(LDFLAGS)" --with-openssl=/usr/local/src/openssl

儲存並關閉該檔案。

編譯Nginx

在我們構建Nginx之前,我們必須防止構建錯誤。發出命令:

sudo nano /usr/local/src/nginx/nginx-1.15.5/auto/cc/gcc

找到並註釋掉在下一行的開頭新增一個#符號:

CFLAGS="$CFLAGS -Werror"

搶先防止構建錯誤。

儲存並關閉該檔案。

現在我們開始編譯Nginx。使用以下命令切換到Nginx源目錄:

cd /usr/local/src/nginx/nginx-1.15.5

使用以下命令構建Nginx依賴項:

sudo apt build-dep nginx

最後,使用以下命令構建Nginx:

sudo dpkg-buildpackage -b -uc -us

上面的命令大約需要10-20分鐘,所以要麼坐下來觀看樂趣,要麼照顧其他任務。

安裝Nginx

我們現在可以使用以下命令安裝支援TLS的Nginx:

cd /usr/local/src/nginx/

sudo dpkg -i nginx_1.15.5-1~bionic_amd64.deb

注意:如果您已安裝Nginx,則需要使用命令sudo apt remove nginx nginx-common nginx-full刪除它。

命令完成後,發出以下命令以確保構建包含OpenSSL:

sudo nginx -V

您應該看到包含OpenSSL。

OpenSSL已經進入Nginx。

恭喜,TLS現已進入Nginx。下次我們將介紹如何在Nginx伺服器塊中啟用此功能,以便您可以開始使用Nginx提供啟用TLS的站點。