Nginx服務(wù)器配置https安全協(xié)議的實現(xiàn)
一、簡介
HTTP是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議,是一個客戶端和服務(wù)器端請求和應(yīng)答的標(biāo)準(zhǔn)(TCP),用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳輸協(xié)議,它可以使瀏覽器更加高效,使網(wǎng)絡(luò)傳輸減少。
HTTPS是以網(wǎng)絡(luò)安全為目標(biāo)的HTTP通道,簡單地講就是HTTP的安全版,即HTTP中加入了SSL層,HTTPS的安全基礎(chǔ)就是SSL,因此加密的詳細內(nèi)容就需要SSL。如我們經(jīng)常訪問的百度。
二、https和http區(qū)別
https協(xié)議需要到ca申請證書,一般免費證書較少,大多需要一定的費用;
http是超文本傳輸協(xié)議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協(xié)議;
http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443;
http的連接很簡單,是無狀態(tài)的;https協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的,可進行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比http協(xié)議安全。
三、https協(xié)議優(yōu)缺點
優(yōu)點
- 使用HTTPS協(xié)議可認(rèn)證用戶和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶機和服務(wù)器;
- HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,要比http協(xié)議安全,可防止數(shù)據(jù)在傳輸過程中不被竊取、改變,確保數(shù)據(jù)的完整性;
- HTTPS是現(xiàn)行架構(gòu)下最安全的解決方案,雖然不是絕對安全,但它大幅增加了中間人攻擊的成本。
缺點
- HTTPS協(xié)議握手階段比較費時,會使頁面的加載時間延長近50%,增加10%到20%的耗電;
- HTTPS連接緩存不如HTTP高效,會增加數(shù)據(jù)開銷和功耗,甚至已有的安全措施也會因此而受到影響;
- SSL證書需要錢,功能越強大的證書費用越高,個人網(wǎng)站、小網(wǎng)站沒有必要一般不會用;
- SSL證書通常需要綁定IP,不能在同一IP上綁定多個域名,IPv4資源不可能支撐這個消耗;
- HTTPS協(xié)議的加密范圍也比較有限,在黑客攻擊、拒絕服務(wù)攻擊、服務(wù)器劫持等方面幾乎起不到什么作用。最關(guān)鍵的是,SSL證書的信用鏈體系并不安全,特別是在某些國家可以控制CA根證書的情況下,中間人攻擊一樣可行。
四、nginx中配置https
0. nginx配置HTTPS前置條件
- 服務(wù)器上已經(jīng)安裝nginx服務(wù),已經(jīng)具備http訪問;
- nginx服務(wù)器是否已經(jīng)安裝ssl模塊得支持;
- 是否已經(jīng)擁有ssl證書,如果沒有可以去阿里云或者騰訊云免費申請;
1. 證書申請
證書申請前往阿里云SSL證書申請,選擇免費證書申請即可
刷新頁面
2. nginx SSL模塊是否支持
查看nginx是否安裝http_ssl_module模塊
./nginx -V
如果看到我上圖標(biāo)記得 configure arguments: --with-http_ssl_module, 則已安裝(可以直接跳過nginx安裝ssl支持步驟,進入 nginx.conf 配置)。
3. nginx安裝
3.1 nginx官網(wǎng)地址
這里下載nginx-1.18.0穩(wěn)定版tar.gz
3.2 下載tar包到服務(wù)器目錄
cd /home/somnus wget http://nginx.org/download/nginx-1.18.0.tar.gz
3.3 解壓安裝包
tar -zxvf nginx-1.18.0.tar.gz
3.4 配置ssl模塊
cd nginx-1.18.0 ./configure --prefix=/usr/local/nginx --with-http_ssl_module
3.5 接下來執(zhí)行命令編譯
使用 make 命令編譯(使用make install會重新安裝nginx),此時當(dāng)前目錄會出現(xiàn) objs 文件夾。用新的 nginx 文件覆蓋當(dāng)前的 nginx 文件。
3.6 命令拷貝復(fù)制
cp ./objs/nginx /usr/local/nginx/sbin/
3.7 再次查看安裝的模塊(configure arguments: --with-http_ssl_module說明ssl模塊已安裝)。
./nginx -V nginx version: nginx/1.18.0 … configure arguments: –with-http_ssl_module
4. ssl 證書部署
下載申請好的 ssl 證書文件壓縮包到本地并解壓(這里是用的 pem 與 key 文件,文件名可以更改)。 在 nginx 目錄新建 cert 文件夾存放證書文件。
cd /usr/local/nginx mkdir cert
將我們申請得這兩個文件上傳至服務(wù)器的 cert 目錄里。
5. 解壓縮證書
然后我們打開瀏覽器的默認(rèn)下載位置,解壓已下載的Nginx服務(wù)器證書壓縮包文件。解壓后我們將會獲得以下文件:
www.javaqf.com.key www.javaqf.com.pem
6. 在Nginx服務(wù)器上安裝證書
編輯 /usr/local/nginx/conf/nginx.conf 配置文件:
配置 https server。 注釋掉之前的 http server 配置,新增 https server:
#以下屬性中,以ssl開頭的屬性表示與證書配置有關(guān)。 server { listen 443 ssl; #配置HTTPS的默認(rèn)訪問端口為443。 #如果未在此處配置HTTPS的默認(rèn)訪問端口,可能會造成Nginx無法啟動。 #如果您使用Nginx 1.15.0及以上版本,請使用listen 443 ssl代替listen 443和ssl on。 server_name yourdomain; root html; index index.html index.htm; ssl_certificate ../cert/cert-file-name.pem; ssl_certificate_key ../cert/cert-file-name.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #表示使用的加密套件的類型。 ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS協(xié)議的類型,您需要自行評估是否配置TLSv1.1協(xié)議。 ssl_prefer_server_ciphers on; location / { root html; #Web網(wǎng)站程序存放目錄。 index index.html index.htm; } }
7. 接入流程(最終個人本地配置示例)
這里我們需要將協(xié)議更改為HTTPS配置文件,我的配置如下所示:
server { listen 443 ssl; server_name www.javaqf.com; root html; index index.html index.htm; ssl_certificate /usr/local/nginx/ca/www.javaqf.com.pem; ssl_certificate_key /usr/local/nginx/ca/www.javaqf.com.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; location / { root /usr/share/nginx/html; index index.html index.htm; } }
最后我們就可以在瀏覽器中通過https協(xié)議進行訪問了,比如:
https://www.你的域名.com/
8. 查看端口使用
netstat -lntp
執(zhí)行看到以下結(jié)果就說明我們成功了
[root@centos7 certs]# netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3322/nginx: master tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2310/sshd tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 3322/nginx: master
五、nginx中其他配置https
1. 配置非域名訪問報404
server { ... if ($host != '域名') { return 404; } ... }
2. 配置企微Others2域名驗證
server { ... location /企微文件名稱.txt { alias 企微文件放置文件/企微文件名稱.txt; } ... }
3.將 http 重定向 https
server { listen 80; server_name somnus.test.com; #將請求轉(zhuǎn)成https rewrite ^(.*)$ https://$host$1 permanent; ... }
到此這篇關(guān)于Nginx服務(wù)器配置https安全協(xié)議的實現(xiàn)的文章就介紹到這了,更多相關(guān)Nginx配置https內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
權(quán)限問題導(dǎo)致Nginx 403 Forbidden錯誤的解決方法
這篇文章主要介紹了權(quán)限問題導(dǎo)致Nginx 403 Forbidden錯誤的解決方法,本文中導(dǎo)致 403 Forbidden錯誤的原因是配置文件中沒有指明一個用戶,需要的朋友可以參考下2014-08-08Nginx前端頁面刷新后出現(xiàn)404的原因與解決方案
這篇文章主要來為大家詳細介紹一下Nginx前端頁面刷新后出現(xiàn)404 Not Found的原因與對應(yīng)的解決方案,有需要的小伙伴可以根據(jù)情況參考一下2025-03-03Nginx常用配置以及代理轉(zhuǎn)發(fā)操作詳解
這篇文章主要給大家介紹了關(guān)于Nginx常用配置以及代理轉(zhuǎn)發(fā)的相關(guān)資料,nginx一般被用來做反向代理,將請求轉(zhuǎn)發(fā)到應(yīng)用服務(wù)器上,比如tomcat的應(yīng)用,需要的朋友可以參考下2023-09-09