開(kāi)箱即用,Nginx不支持TLS,但本文將引導(dǎo)您完成構(gòu)建Nginx以支持安全協(xié)議的過(guò)程。
Nginx已經(jīng)成為一個(gè)非常受歡迎的Web服務(wù)器。 有充分的理由。 它的速度非常快,并且可以很好地?cái)U(kuò)展。 然而,使用這個(gè)開(kāi)源Web瀏覽器的一個(gè)注意事項(xiàng)是,它不支持開(kāi)箱即用的傳輸層安全性(TLS)。
可以在支持TLS的地方構(gòu)建Nginx。我將帶你完成這樣做的過(guò)程。我將在Ubuntu Server 18.04/Ubuntu 18.10上演示。該過(guò)程完全從命令行處理,不超過(guò)30分鐘的時(shí)間既可以完成。
為何選擇TLS?
為什么需要TLS?答案很簡(jiǎn)單 – 安全性和性能。隨著最新版TLS的發(fā)布,往返握手更快,更安全。由于新的零往返模式(0-RTT會(huì)話(huà)恢復(fù)),連接時(shí)間將大大減少(對(duì)移動(dòng)用戶(hù)來(lái)說(shuō)是一個(gè)很大的改進(jìn))。借助Nginx中內(nèi)置的這種TLS新風(fēng)格,您可以依賴(lài)更安全的平臺(tái),這要?dú)w功于TLS開(kāi)發(fā)人員還刪除了對(duì)舊密碼套件的支持。
但是你如何將它構(gòu)建到Nginx中呢?讓我們來(lái)看看。下面正式開(kāi)始。
添加官方Nginx存儲(chǔ)庫(kù)
首先要做的是添加官方Nginx存儲(chǔ)庫(kù)。打開(kāi)終端窗口并發(fā)出以下兩個(gè)命令:
wget http://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
接下來(lái),使用以下命令為Nginx創(chuàng)建apt源文件:
sudo nano /etc/apt/sources.list.d/nginx.list
在該新文件中,粘貼以下內(nèi)容:
deb [arch=amd64] http://nginx.org/packages/mainline/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ bionic nginx
保存并關(guān)閉該文件。
使用以下命令更新apt:
sudo apt update
下載Nginx源代碼
現(xiàn)在我們必須下載Nginx源代碼。 為此,首先使用以下命令創(chuàng)建一個(gè)新目錄:
sudo mkdir /usr/local/src/nginx
使用命令cd /usr/local/src/nginx切換到該新目錄并發(fā)出以下命令:
sudo apt install dpkg-dev
sudo apt source nginx
發(fā)出ls命令并記下Nginx的版本號(hào)(對(duì)于我的演示,該數(shù)字是1.15.5)。
克隆OpenSSL
現(xiàn)在我們需要從GitHub克隆OpenSSL。 使用以下命令執(zhí)行此操作:
cd /usr/local/src
sudo apt install gitsudo git clone
https://github.com/openssl/openssl.git
cd openssl
使用git,使用以下命令找出OpenSSL的最新分支:
git branch -a
對(duì)于此演示,該分支是1_1_1穩(wěn)定的。
使用以下命令檢出該分支:
sudo git checkout OpenSSL_1_1_1-stable
配置Nginx編譯規(guī)則
要為Nginx啟用SSL,我們必須編輯編譯規(guī)則。發(fā)出命令:
sudo nano /usr/local/src/nginx/nginx-1.15.5/debian/rules
注意:確保使用您下載的Nginx版本。
找到以下行:
config.status.nginx: config.env.nginx
在CFLAGS部分的末尾,添加以下內(nèi)容:
–with-openssl=/usr/local/src/openssl
以上將在“$(LDFLAGS)”之后直接添加,如下所示:
“$(LDFLAGS)” –with-openssl=/usr/local/src/openssl
保存并關(guān)閉該文件。
編譯Nginx
在我們構(gòu)建Nginx之前,我們必須防止構(gòu)建錯(cuò)誤。發(fā)出命令:
sudo nano /usr/local/src/nginx/nginx-1.15.5/auto/cc/gcc
找到并注釋掉在下一行的開(kāi)頭添加一個(gè)#符號(hào):
CFLAGS=”$CFLAGS -Werror”
搶先防止構(gòu)建錯(cuò)誤。
保存并關(guān)閉該文件。
現(xiàn)在我們開(kāi)始編譯Nginx。使用以下命令切換到Nginx源目錄:
cd /usr/local/src/nginx/nginx-1.15.5
使用以下命令構(gòu)建Nginx依賴(lài)項(xiàng):
sudo apt build-dep nginx
最后,使用以下命令構(gòu)建Nginx:
sudo dpkg-buildpackage -b -uc -us
上面的命令大約需要10-20分鐘,所以要么坐下來(lái)觀看樂(lè)趣,要么照顧其他任務(wù)。
安裝Nginx
我們現(xiàn)在可以使用以下命令安裝支持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刪除它。
命令完成后,發(fā)出以下命令以確保構(gòu)建包含OpenSSL:
sudo nginx -V
您應(yīng)該看到包含OpenSSL。
OpenSSL已經(jīng)進(jìn)入Nginx。
恭喜,TLS現(xiàn)已進(jìn)入Nginx。下次我們將介紹如何在Nginx服務(wù)器塊中啟用此功能,以便您可以開(kāi)始使用Nginx提供啟用TLS的站點(diǎn)。