亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Nginx HTTPS實現(xiàn)原理及配置實踐

 更新時間:2023年09月14日 11:49:28   作者:Jiangxl~  
本文主要介紹了Nginx HTTPS實現(xiàn)原理及配置實踐,詳細的介紹了HTTPS原理,實現(xiàn)及其HTTPS單臺配置實踐,集群配置、優(yōu)化等,具有一定的參考價值,感興趣的可以了解一下

1.HTTPS基本概述

1.1.為何需要HTTPS

因為HTTP采用的是明文傳輸數(shù)據(jù),那么在傳輸(賬號密碼、交易信息等敏感數(shù)據(jù))時不安全。容易遭到篡改
如果使用HTTPS協(xié)議,數(shù)據(jù)在傳輸過程中是加密的,能夠有效避免網(wǎng)站傳輸時信息泄露

1.2.什么是HTTPS

HTTPS安全的超文本傳輸協(xié)議,我們現(xiàn)在大部分站點都是通過HTTPS來實現(xiàn)站點數(shù)據(jù)安全。
早期網(wǎng)景公司設(shè)計了SSL(Secure Socket Layer)安全套接層協(xié)議,主要對HTTP協(xié)議傳輸?shù)臄?shù)據(jù)進行加密。那如何將站點變成安全的HTTPS站點呢?我們需要了解SSL(Secure Socket Layer)協(xié)議。
而現(xiàn)在很多時候我們使用的是TLS(Transport Layer Security)傳輸層安全協(xié)議來實現(xiàn)的加密與解密

1.3.TLS如何實現(xiàn)加密

TLS/SSL是如何實現(xiàn)HTTP明文消息被加密的,TLS/SSL工作在OSI七層模型中,應(yīng)用層與傳輸層之間。
1.提供數(shù)據(jù)安全:保證數(shù)據(jù)不會被泄露
2.提供數(shù)據(jù)的完整性:保證數(shù)據(jù)在傳輸過程中不會被篡改
3.對應(yīng)用層交給傳輸層的數(shù)據(jù)進行加密與解密。

在這里插入圖片描述

2.HTTPS實現(xiàn)原理

2.1.加密模型-對稱加密

對稱加密:兩個想通訊的人持有相同的秘鑰,進行加密與解密。如下:

  • bob將原始文檔通過秘鑰加密生成一個密文文檔。
  • alice拿到這個密文文檔以后,它可以用這把秘鑰還原為原始的明文文檔。

對稱加密究竟是如何實現(xiàn)的,我們可以以RC4這樣一個對稱加密序列算法來看一下。

  • 加密:秘鑰序列+明文=密文
  • 解密:秘鑰序列+密文=明文

在這里插入圖片描述

2.2.加密模型-非對稱加密

非對稱加密:它根據(jù)一個數(shù)學原理,創(chuàng)建一對秘鑰(公鑰和私鑰)公鑰加密,私鑰解密;

  • 私鑰:私鑰自己使用,不對外開放。
  • 公鑰:公鑰給大家使用,對外開放。

比如:alice有一對公鑰和私鑰,他可以將公鑰發(fā)布給任何人。假設(shè)Bob是其中一個,當Bob要傳遞一份加密文檔給alice,那么Bob就可以用alice的公鑰進行加密,alice收到加密文檔后通過自己的私鑰進行解密,獲取原始文檔。

注意:alice必須知道Bob就是Bob,也就是它收到的信息必須是Bob發(fā)來的,那么這個信任問題,在多方通訊的過程中,必須有一個公信機構(gòu)來驗收雙方的身份,那么這個機構(gòu)就是CA機構(gòu)。

在這里插入圖片描述

2.3.身份驗證機構(gòu)-CA

通訊雙方是如何驗證雙方的身份?
CA架構(gòu)是可信任組織架構(gòu),主要用來頒發(fā)證書及驗證證書。那CA機構(gòu)又是如何申請和頒發(fā)證書的呢?

我們首先需要申請證書,需要進行登記,登記我是誰,我是什么組織,我想做什么,到了登記機構(gòu)在通過CSR發(fā)給CA,CA中心通過后,CA中心會生成一對公鑰和私鑰,那么公鑰會在CA證書鏈中保存,公鑰和私鑰證書訂閱人拿到后,會將其部署的WEB服務(wù)器上。
1.當瀏覽器訪問我們的https站點時,它會去請求我們的證書
2.Nginx會將我們的公鑰證書回傳給瀏覽器
3.瀏覽器會去驗證我們的證書是否是合法的、是否是有效的
4.CA機構(gòu)會將過期的證書放置在CRL服務(wù)器,那么CRL服務(wù)的驗證效率是非常差的,所以CA又推出了OCSP響應(yīng)程序性能還不是很高。
5.Nginx會有一個OCSP的開頭,當我們開啟后,Nginx會主動上OCSP上查詢,這樣大量的客戶端直接從Nginx獲取,證書是否有效。

2.4.HTTPS通訊原理

HTTPS加密過程,HTTPS采用混合加密算法,即對稱加密、和非對稱加密
通信前準備工作:申請域名對應(yīng)的證書,并將其部署在Nginx服務(wù)器中。
1)第一步客戶端向服務(wù)端發(fā)送Client Hello消息,這個消息里包含了一個客戶端生成的隨機數(shù)Random1、客戶端支持的加密套件和客戶端支持TLS協(xié)議版本等信息
2)服務(wù)端會向客戶端發(fā)送Server Hello消息,返回自己的公鑰證書,挑選一個合適的加密套件、另外還會生成一份隨機數(shù)Random2推送給客戶端。至此客戶端和服務(wù)端都擁有了兩個隨機數(shù)(Random1+Random2)
3)客戶端收到服務(wù)端傳來的公鑰證書后,先從CA驗證該證書的合法性(CA公鑰去解密公鑰證書),驗證通過后取出證書中的服務(wù)端公鑰,再生成一個隨機數(shù)Random3,再用服務(wù)端公鑰非對稱加密Random3.
4)服務(wù)端用自己的私鑰解出客戶端生成的Random3。至此,客戶端和服務(wù)端都擁有Random1+Random2+Random3,兩邊根據(jù)同樣的算法生成一份秘鑰,握手結(jié)束后的應(yīng)用層數(shù)據(jù)都是使用這個秘鑰進行對稱加密。

3.HTTPS擴展知識

3.1.HTTPS證書類型

在這里插入圖片描述

3.2.HTTPS購買建議

保護1個域名 www.wzx.net
保護5個域名 www images cdn test m
通配符域名 *.wzx.net

3.3.HTTPS顏色標識

Https不支持續(xù)費,證書到期需要重新申請新并進行替換。
Https不支持三級域名解析,如test.m.wzx.net *.m.wzx.net
Https顯示綠色,說明整個網(wǎng)站的url都是https的,并且都是安全的
Https顯示黃色,說明網(wǎng)站代碼中有部分URL地址是Http不安全協(xié)議的
Https顯示紅色,要么證書是假的,要么證書已經(jīng)過期

4.HTTPS單臺配置實踐

4.1.配置SSL語法

#官方示例
worker_processes auto;
http {
    ...
    server {
            listen            443 ssl;
            keepalive_timeout 70;
            ssl_protocols     TLSv1 TLSv1.1 TLSv1.2;
            ssl_ciphers       AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
            ssl_certificate   /usr/local/nginx/conf/cert.pem;
            ssl_certificate_key /usr/local/nginx/conf/cert.key;
            ssl_session_cache shared:SSL:10m;
            ssl_session_timeout  10m;
            ...
    } 
}

4.2.創(chuàng)建SSL證書

1.創(chuàng)建證書存儲目錄

[root@nginx1 ~]# mkdir -p /etc/nginx/ssl_key
[root@nginx1 ~]# cd /etc/nginx/ssl_key/

2.使用openssl命令充當CA權(quán)威機構(gòu)創(chuàng)建證書(類似黑戶)

[root@nginx1 /etc/nginx/ssl_key]# openssl genrsa -idea -out server.key 2048
Generating RSA private key, 2048 bit long modulus
.................................................................................................................................................................................................+++
.........................+++
e is 65537 (0x10001)
#記住配置密碼,我這里是123456
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:

3.生成自簽證書,同時去掉私鑰的密碼

[root@nginx1 /etc/nginx/ssl_key]# openssl req -days 36500 -x509 -sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt
Generating a 2048 bit RSA private key
..............................................+++
.............+++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:WH
Locality Name (eg, city) [Default City]:WH
Organization Name (eg, company) [Default Company Ltd]:hhhh
Organizational Unit Name (eg, section) []:hhhh
Common Name (eg, your name or your server's hostname) []:s.wzx.net
Email Address []:wzx@qq.com
#req  --->用于創(chuàng)建新的證書
#new  --->表示創(chuàng)建的是新證書
#x509 --->表示定義證書的格式為標準格式
#key  --->表示調(diào)用的私鑰文件信息
#out  --->表示輸出證書文件信息
#days --->表示證書的有效期
[root@nginx1 /etc/nginx/ssl_key]# ls
server.crt  server.key

4.3.配置SSL場景

[root@nginx1 /etc/nginx/conf.d]# vim s.wzx.net.conf
server {
        listen 443 ssl;
        server_name s.wzx.net;
        ssl on;
        ssl_certificate /etc/nginx/ssl_key/server.crt;
        ssl_certificate_key ssl_key/server.key;
        location / {
                root /code4;
                index index.html;
        }
}

準備對應(yīng)的站點目錄,并重啟Nginx服務(wù)
[root@nginx1 /etc/nginx/conf.d]# mkdir /code4
[root@nginx1 /etc/nginx/conf.d]# echo "https...." >/code4/index.html
[root@nginx1 /etc/nginx/conf.d]# systemctl restart nginx

4.4.訪問驗證SSL

瀏覽器輸入https://s.wzx.net訪問,由于該證書非第三方權(quán)威機構(gòu)頒發(fā),而是我們自己簽發(fā)的,所以瀏覽器會警告

在這里插入圖片描述

4.5.強制跳轉(zhuǎn)Https

如果用戶忘記在瀏覽器地址欄輸入https://協(xié)議那么將不會跳轉(zhuǎn)至https站點;
所以建議新增如下配置,將用戶訪問http請求強制跳轉(zhuǎn)https

[root@nginx1 /etc/nginx/conf.d]# vim s.wzx.net.conf
server {
        listen 443 ssl;
        server_name s.wzx.net;
        ssl on;
        ssl_certificate /etc/nginx/ssl_key/server.crt;
        ssl_certificate_key ssl_key/server.key;
        location / {
                root /code4;
                index index.html;
        }
}
server {
        listen 80;
        server_name s.wzx.net;
        return 302 https://$server_name$request_uri;
}
[root@nginx1 /etc/nginx/conf.d]# systemctl restart nginx

5.HTTPS集群配置實踐

5.1.環(huán)境準備

主機名IP主機名
db-nfs192.168.146.176nginx-proxy
nginx2192.168.146.175nginx-web01
nginx1192.168.146.101nginx-web02

5.2.配置應(yīng)用節(jié)點

#配置所有后端節(jié)點,監(jiān)控80端口即可;

[root@nginx1 /etc/nginx/conf.d]# vim s.wzx.net.conf
server {
        listen 80;
        server_name s.wzx.net;
        root /code/wordpress;
        location / {
                index index.html;
        }
}
root@nginx1 /etc/nginx/conf.d]# systemctl restart nginx

5.3.配置負載均衡

1.創(chuàng)建ssl證書

[root@db-nfs ~]# mkdir /etc/nginx/ssl_key -p
[root@db-nfs ~]# cd /etc/nginx/ssl_key/
[root@db-nfs /etc/nginx/ssl_key]# openssl genrsa -idea -out server.key 2048
[root@db-nfs /etc/nginx/ssl_key]# openssl req -days 36500 -x509 -sha256 \
> -nodes -newkey rsa:2048 -keyout server.key -out server.crt

2.nginx負載均衡配置文件如下

[root@db-nfs /etc/nginx/ssl_key]# vim /etc/nginx/conf.d/proxy.conf
upstream site {
        server 192.168.146.101:80 max_fails=2 fail_timeout=10s;
        server 192.168.146.175:80 max_fails=2 fail_timeout=10s;
}
server {
        listen 443;
        server_name s.oldxu.net;
        ssl on;
        ssl_certificate ssl_key/server.crt;
        ssl_certificate ssl_key/server.key;
        location / {
                proxy_pass http://site;
                include proxy_params;
        }
}
server {
        listen 80;
        server_name s.oldxu.net;
        return 302 https://$server_name$request_uri;
}

6.HTTPS場景配置實踐

6.1.場景實踐-1

模擬銀行網(wǎng)站場景
1.用戶訪問網(wǎng)站主站,使用http協(xié)議提供訪問。
2.當用戶點擊登陸時,則網(wǎng)站會跳轉(zhuǎn)至一個新的域名,并使用的是https提供安全訪問。
1.主頁展示 http://yh.wzx.net(提供網(wǎng)頁瀏覽)
2.模擬登錄 http://yh.wzx.net/login (相當于點擊了登錄的按鈕)
3.登錄頁面 http://star.oldxu.net (提供安全登錄)

1.配置http://star.wzx.net

[root@nginx1 ~]# vim /etc/nginx/conf.d/star.wzx.net.conf
server {
        listen 443 ssl;
        server_name star.wzx.net;
        ssl_certificate ssl_key/server.crt;
        ssl_certificate_key ssl_key/server.key;
        root /code/login;
        location / {
                index index.html;
        }
}
[root@nginx1 ~]# mkdir /code/login
[root@nginx1 /code/login]# echo "login......." > index.html
[root@nginx1 /code/login]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@nginx1 /code/login]# systemctl restart nginx

2.配置http://yh.wzx.net(主頁頁面)

[root@nginx2 ~]# vim /etc/nginx/conf.d/yh.wzx.net.conf
server {
        listen 80;
        server_name yh.wzx.net;
        root /code;
        location / {
                index index.html;
        }
        location /login {
                return 302 https://star.wzx.net;
        }
}
[root@nginx2 ~]# mkdir /code
[root@nginx2 ~]# echo "yh" >/code/index.html
[root@nginx2 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@nginx2 ~]# systemctl restart nginx

6.2.場景實踐-2

需求:希望用戶訪問網(wǎng)站的所有url走https協(xié)議,但訪問s.wzx.net/abc時走http協(xié)議

[root@db-nfs /etc/nginx/conf.d]# cat proxy_agent.wzx.net.conf
upstream webs {
        server 192.168.146.101:80;
        server 192.168.146.175:80;
}
server {
        listen 443 ssl;
        ssl_certificate ssl_key/server.crt;
        ssl_certificate ssl_key/server.key;
        server_name agent.wzx.net;
        location / {
                proxy_pass http://webs;
                include proxy_params;
        }
}
server {
        listen 80;
        server_name agent.wzx.net;
        if ($request_uri !~* "^/abc") {
                return 302 https://$http_host$request_uri;
        }
        location / {
                proxy_pass http://webs;
                include proxy_params;
        }
}

7.HTTPS優(yōu)化配置實踐

7.1.優(yōu)化基本概述

SSL的運行計算需要消耗額外的CPU資源,SSL通訊過程中【握手】階段的運算最占用CPU資源,有如下幾個方面可以進行調(diào)整與優(yōu)化。
1.設(shè)置worker進程數(shù)設(shè)置為等于CPU處理器的核心數(shù)。worker_processes auto
2.啟用keepalive長連接,一個連接發(fā)送更多個請求
3.啟動shared回話緩存,所有worker工作進程之間共享的緩存,避免進行多次SSL【握手】
4.禁用builtin內(nèi)置于的緩存,僅能供一個worker工作進程使用,使用shared緩存即禁止builtin

7.2.優(yōu)化配置實例

worker_processes auto;
http {
    ...
    server {
        listen 443 ssl;
        server_name www.example.com;
        ssl_certificate www.example.com.crt;
        ssl_certificate_key www.example.com.key;
        ssl_protocols TLSv1.2;
        ssl_prefer_server_ciphers on;
        #Nginx決定使用哪些協(xié)議與瀏覽器進行通訊
        keepalived_timeout 70;
        #設(shè)置長連接
        #默認不開啟session_cache: a握手后,關(guān)閉瀏覽器,再次訪問,需要重新握手;
        #建立握手后如果連接斷開,在session_timeout時間內(nèi)再次連接,無需再次建立握手,可直接復用之間緩存的連接
        ssl_session_cache shared:SSL:10m;
        #1M緩存空間能存儲4000個會話數(shù)量;
        ssl_session_timeout 1440m;
        #配置會話超時時間(默認5分鐘)
    }
}

 到此這篇關(guān)于Nginx HTTPS實現(xiàn)原理及配置實踐的文章就介紹到這了,更多相關(guān)Nginx HTTPS實現(xiàn)及配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 教你使用Nginx限制百度蜘蛛頻繁抓取的問題

    教你使用Nginx限制百度蜘蛛頻繁抓取的問題

    這篇文章主要介紹了使用Nginx限制百度蜘蛛頻繁抓取的問題,百度蜘蛛對網(wǎng)站的抓取頻率高和抓取量驟增導致服務(wù)器負載高,經(jīng)常收到警告信息,每分鐘允許百度蜘蛛抓取200次,超過頻率限制的返回503,對Nginx限制蜘蛛頻繁抓取相關(guān)知識感興趣的朋友一起看看吧
    2022-01-01
  • Nginx的配置文件結(jié)構(gòu)和各種配置指令

    Nginx的配置文件結(jié)構(gòu)和各種配置指令

    Nginx是一款高性能的Web服務(wù)器和反向代理服務(wù)器,常常被用作Web服務(wù)器、負載均衡器、反向代理和緩存服務(wù)器等,本文將詳細介紹Nginx的配置文件結(jié)構(gòu)和各種配置指令,幫助你理解和正確配置Nginx?服務(wù)器
    2024-03-03
  • Nginx基于漏桶算法配置限流詳解

    Nginx基于漏桶算法配置限流詳解

    這篇文章主要為大家介紹了Nginx基于漏桶算法配置限流詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • Nginx服務(wù)器的安裝與一些基本配置總結(jié)

    Nginx服務(wù)器的安裝與一些基本配置總結(jié)

    這篇文章主要介紹了Nginx服務(wù)器的安裝與一些基本配置總結(jié),包括靜態(tài)化與負載均衡等重要設(shè)置的方法記錄,需要的朋友可以參考下
    2015-11-11
  • nginx反向代理后無限重定向的問題解決方法

    nginx反向代理后無限重定向的問題解決方法

    這篇文章主要為大家介紹了nginx反向代理后無限重定向的問題解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • Jenkins實現(xiàn)集群化管理以及流水線項目配置

    Jenkins實現(xiàn)集群化管理以及流水線項目配置

    這篇文章主要為大家介紹了Jenkins基本概念,配置實現(xiàn)集群化管理以及配置流水線項目的實現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • nginx前綴匹配的實現(xiàn)

    nginx前綴匹配的實現(xiàn)

    在nginx的配置文件中,很容易的看到location的模塊,本文主要介紹了nginx前綴匹配的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-04-04
  • Nginx如何設(shè)置域名轉(zhuǎn)發(fā)到服務(wù)器指定的端口

    Nginx如何設(shè)置域名轉(zhuǎn)發(fā)到服務(wù)器指定的端口

    這篇文章主要介紹了Nginx如何設(shè)置域名轉(zhuǎn)發(fā)到服務(wù)器指定的端口,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • Windows環(huán)境實現(xiàn)Nginx配置及開機自啟動

    Windows環(huán)境實現(xiàn)Nginx配置及開機自啟動

    本文主要介紹了Windows環(huán)境實現(xiàn)Nginx配置及開機自啟動,通過兩種方式可以實現(xiàn)nginx的開機自啟動,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • nginx 多個location轉(zhuǎn)發(fā)任意請求或訪問靜態(tài)資源文件的實現(xiàn)

    nginx 多個location轉(zhuǎn)發(fā)任意請求或訪問靜態(tài)資源文件的實現(xiàn)

    這篇文章主要介紹了nginx 多個location轉(zhuǎn)發(fā)任意請求或訪問靜態(tài)資源文件的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11

最新評論