Nginx服務(wù)器配置https安全協(xié)議的實(shí)現(xiàn)
一、簡(jiǎn)介
HTTP是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議,是一個(gè)客戶端和服務(wù)器端請(qǐng)求和應(yīng)答的標(biāo)準(zhǔn)(TCP),用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳輸協(xié)議,它可以使瀏覽器更加高效,使網(wǎng)絡(luò)傳輸減少。
HTTPS是以網(wǎng)絡(luò)安全為目標(biāo)的HTTP通道,簡(jiǎn)單地講就是HTTP的安全版,即HTTP中加入了SSL層,HTTPS的安全基礎(chǔ)就是SSL,因此加密的詳細(xì)內(nèi)容就需要SSL。如我們經(jīng)常訪問(wèn)的百度。
二、https和http區(qū)別
https協(xié)議需要到ca申請(qǐng)證書(shū),一般免費(fèi)證書(shū)較少,大多需要一定的費(fèi)用;
http是超文本傳輸協(xié)議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協(xié)議;
http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443;
http的連接很簡(jiǎn)單,是無(wú)狀態(tài)的;https協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的,可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比http協(xié)議安全。
三、https協(xié)議優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
- 使用HTTPS協(xié)議可認(rèn)證用戶和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶機(jī)和服務(wù)器;
- HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,要比http協(xié)議安全,可防止數(shù)據(jù)在傳輸過(guò)程中不被竊取、改變,確保數(shù)據(jù)的完整性;
- HTTPS是現(xiàn)行架構(gòu)下最安全的解決方案,雖然不是絕對(duì)安全,但它大幅增加了中間人攻擊的成本。
缺點(diǎn)
- HTTPS協(xié)議握手階段比較費(fèi)時(shí),會(huì)使頁(yè)面的加載時(shí)間延長(zhǎng)近50%,增加10%到20%的耗電;
- HTTPS連接緩存不如HTTP高效,會(huì)增加數(shù)據(jù)開(kāi)銷(xiāo)和功耗,甚至已有的安全措施也會(huì)因此而受到影響;
- SSL證書(shū)需要錢(qián),功能越強(qiáng)大的證書(shū)費(fèi)用越高,個(gè)人網(wǎng)站、小網(wǎng)站沒(méi)有必要一般不會(huì)用;
- SSL證書(shū)通常需要綁定IP,不能在同一IP上綁定多個(gè)域名,IPv4資源不可能支撐這個(gè)消耗;
- HTTPS協(xié)議的加密范圍也比較有限,在黑客攻擊、拒絕服務(wù)攻擊、服務(wù)器劫持等方面幾乎起不到什么作用。最關(guān)鍵的是,SSL證書(shū)的信用鏈體系并不安全,特別是在某些國(guó)家可以控制CA根證書(shū)的情況下,中間人攻擊一樣可行。
四、nginx中配置https
0. nginx配置HTTPS前置條件
- 服務(wù)器上已經(jīng)安裝nginx服務(wù),已經(jīng)具備http訪問(wèn);
- nginx服務(wù)器是否已經(jīng)安裝ssl模塊得支持;
- 是否已經(jīng)擁有ssl證書(shū),如果沒(méi)有可以去阿里云或者騰訊云免費(fèi)申請(qǐng);
1. 證書(shū)申請(qǐng)
證書(shū)申請(qǐng)前往阿里云SSL證書(shū)申請(qǐng),選擇免費(fèi)證書(shū)申請(qǐng)即可
刷新頁(yè)面
2. nginx SSL模塊是否支持
查看nginx是否安裝http_ssl_module模塊
./nginx -V
如果看到我上圖標(biāo)記得 configure arguments: --with-http_ssl_module, 則已安裝(可以直接跳過(guò)nginx安裝ssl支持步驟,進(jìn)入 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 接下來(lái)執(zhí)行命令編譯
使用 make 命令編譯(使用make install會(huì)重新安裝nginx),此時(shí)當(dāng)前目錄會(huì)出現(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說(shuō)明ssl模塊已安裝)。
./nginx -V nginx version: nginx/1.18.0 … configure arguments: –with-http_ssl_module
4. ssl 證書(shū)部署
下載申請(qǐng)好的 ssl 證書(shū)文件壓縮包到本地并解壓(這里是用的 pem 與 key 文件,文件名可以更改)。 在 nginx 目錄新建 cert 文件夾存放證書(shū)文件。
cd /usr/local/nginx mkdir cert
將我們申請(qǐng)得這兩個(gè)文件上傳至服務(wù)器的 cert 目錄里。
5. 解壓縮證書(shū)
然后我們打開(kāi)瀏覽器的默認(rèn)下載位置,解壓已下載的Nginx服務(wù)器證書(shū)壓縮包文件。解壓后我們將會(huì)獲得以下文件:
www.javaqf.com.key www.javaqf.com.pem
6. 在Nginx服務(wù)器上安裝證書(shū)
編輯 /usr/local/nginx/conf/nginx.conf 配置文件:
配置 https server。 注釋掉之前的 http server 配置,新增 https server:
#以下屬性中,以ssl開(kāi)頭的屬性表示與證書(shū)配置有關(guān)。 server { listen 443 ssl; #配置HTTPS的默認(rèn)訪問(wèn)端口為443。 #如果未在此處配置HTTPS的默認(rèn)訪問(wèn)端口,可能會(huì)造成Nginx無(wú)法啟動(dòng)。 #如果您使用Nginx 1.15.0及以上版本,請(qǐng)使用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; #表示使用的加密套件的類(lèi)型。 ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS協(xié)議的類(lèi)型,您需要自行評(píng)估是否配置TLSv1.1協(xié)議。 ssl_prefer_server_ciphers on; location / { root html; #Web網(wǎng)站程序存放目錄。 index index.html index.htm; } }
7. 接入流程(最終個(gè)人本地配置示例)
這里我們需要將協(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; } }
最后我們就可以在瀏覽器中通過(guò)https協(xié)議進(jìn)行訪問(wèn)了,比如:
https://www.你的域名.com/
8. 查看端口使用
netstat -lntp
執(zhí)行看到以下結(jié)果就說(shuō)明我們成功了
[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. 配置非域名訪問(wèn)報(bào)404
server { ... if ($host != '域名') { return 404; } ... }
2. 配置企微Others2域名驗(yàn)證
server { ... location /企微文件名稱(chēng).txt { alias 企微文件放置文件/企微文件名稱(chēng).txt; } ... }
3.將 http 重定向 https
server { listen 80; server_name somnus.test.com; #將請(qǐng)求轉(zhuǎn)成https rewrite ^(.*)$ https://$host$1 permanent; ... }
到此這篇關(guān)于Nginx服務(wù)器配置https安全協(xié)議的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Nginx配置https內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Linux下nginx配置https協(xié)議訪問(wèn)的方法
- Nexus使用nginx代理實(shí)現(xiàn)支持HTTPS協(xié)議
- Nginx接收Http協(xié)議請(qǐng)求轉(zhuǎn)發(fā)使用Https協(xié)議的問(wèn)題
- nginx將https協(xié)議反向代理到http協(xié)議請(qǐng)求上的實(shí)現(xiàn)
- 如何實(shí)現(xiàn)Nginx同一端口同時(shí)支持http與https協(xié)議
- nginx將https協(xié)議反向代理到http協(xié)議請(qǐng)求上
- Nginx內(nèi)網(wǎng)環(huán)境開(kāi)啟https雙協(xié)議的實(shí)現(xiàn)
相關(guān)文章
在Nginx中實(shí)現(xiàn)URL重寫(xiě)與重定向
Nginx 的 **URL 重寫(xiě)(Rewrite)**功能允許你根據(jù)請(qǐng)求的 URL 動(dòng)態(tài)地修改請(qǐng)求路徑或進(jìn)行重定向,本文將詳細(xì)介紹如何在 Nginx 中實(shí)現(xiàn) URL 重寫(xiě),并給出一些常見(jiàn)的實(shí)際場(chǎng)景,需要的朋友可以參考下2025-01-01權(quán)限問(wèn)題導(dǎo)致Nginx 403 Forbidden錯(cuò)誤的解決方法
這篇文章主要介紹了權(quán)限問(wèn)題導(dǎo)致Nginx 403 Forbidden錯(cuò)誤的解決方法,本文中導(dǎo)致 403 Forbidden錯(cuò)誤的原因是配置文件中沒(méi)有指明一個(gè)用戶,需要的朋友可以參考下2014-08-08如何修改Nginx版本名稱(chēng)偽裝任意web server
這篇文章主要介紹了修改Nginx版本名稱(chēng)偽裝任意web server的方法,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧2016-08-08nginx中url地址重寫(xiě)的實(shí)現(xiàn)
本文主要介紹了nginx中url地址重寫(xiě)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03Nginx前端頁(yè)面刷新后出現(xiàn)404的原因與解決方案
這篇文章主要來(lái)為大家詳細(xì)介紹一下Nginx前端頁(yè)面刷新后出現(xiàn)404 Not Found的原因與對(duì)應(yīng)的解決方案,有需要的小伙伴可以根據(jù)情況參考一下2025-03-03nginx 某些url只能由特定網(wǎng)段訪問(wèn)
在一些場(chǎng)景中,我們需要根據(jù)客戶端的IP地址或網(wǎng)段對(duì)訪問(wèn)進(jìn)行控制,在Nginx中針對(duì)某些URL只允許特定網(wǎng)段訪問(wèn),本文就來(lái)介紹一下如何實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09Nginx常用配置以及代理轉(zhuǎn)發(fā)操作詳解
這篇文章主要給大家介紹了關(guān)于Nginx常用配置以及代理轉(zhuǎn)發(fā)的相關(guān)資料,nginx一般被用來(lái)做反向代理,將請(qǐng)求轉(zhuǎn)發(fā)到應(yīng)用服務(wù)器上,比如tomcat的應(yīng)用,需要的朋友可以參考下2023-09-09