欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Nginx實(shí)現(xiàn)HTTPS雙向驗(yàn)證的方法

 更新時(shí)間:2016年06月30日 10:30:15   作者:qw87112  
這篇文章主要介紹了使用Nginx實(shí)現(xiàn)HTTPS雙向驗(yàn)證的方法,涉及到單向驗(yàn)證和雙向驗(yàn)證的區(qū)別介紹,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧

https單向驗(yàn)證應(yīng)用廣泛想必大家都很熟悉,我已經(jīng)在一篇博文中分享過(guò),這次來(lái)看看Nginx如何實(shí)現(xiàn)雙向驗(yàn)證。

單向驗(yàn)證與雙向驗(yàn)證的區(qū)別:

單向驗(yàn)證: 指客戶端驗(yàn)證服務(wù)器端證書,服務(wù)器并不需要驗(yàn)證客戶端證書。

雙向驗(yàn)證:指客戶端驗(yàn)證服務(wù)器端證書,而服務(wù)器也需要通過(guò)CA的公鑰證書來(lái)驗(yàn)證客戶端證書。

詳細(xì)的握手過(guò)程:

單向驗(yàn)證

瀏覽器發(fā)送一個(gè)連接請(qǐng)求給安全服務(wù)器。

1、服務(wù)器將自己的證書,以及同證書相關(guān)的信息發(fā)送給客戶瀏覽器。

2、客戶瀏覽器檢查服務(wù)器送過(guò)來(lái)的證書是否是由自己信賴的CA中心所簽發(fā)的。如果是,就繼續(xù)執(zhí)行協(xié)議;如果不是,客戶瀏覽器就給客戶一個(gè)警告消息:警告客戶這個(gè)證書不是可以信賴的詢問(wèn)客戶是否需要繼續(xù)。

3、接著客戶瀏覽器比較證書里的消息,例如域名和公鑰,與服務(wù)器剛剛發(fā)送的相關(guān)消息是否一致,如果是一致的,客戶瀏覽器認(rèn)可這個(gè)服務(wù)器的合法身份。

4、瀏覽器隨機(jī)產(chǎn)生一個(gè)用于后面通訊的“通話密鑰”,然后用服務(wù)器的公鑰對(duì)其加密,然后將加密后的“預(yù)主密碼”傳給服務(wù)器。

5、服務(wù)器從客戶發(fā)送過(guò)來(lái)的密碼方案中,選擇一種加密程度最高的密碼方案,用服務(wù)器的私鑰加密后通知瀏覽器。

6、瀏覽器針對(duì)這個(gè)密碼方案,接著用服務(wù)器的公鑰加過(guò)密后發(fā)送給服務(wù)器。

7、服務(wù)器接收到瀏覽器送過(guò)來(lái)的消息,用自己的私鑰解密,獲得。

8、服務(wù)器、瀏覽器接下來(lái)的通訊都是用對(duì)稱密碼方案,使用相同的對(duì)稱密鑰。

雙向驗(yàn)證

1、瀏覽器發(fā)送一個(gè)連接請(qǐng)求給安全服務(wù)器。

2、服務(wù)器將自己的證書,以及同證書相關(guān)的信息發(fā)送給客戶瀏覽器。

3、客戶瀏覽器檢查服務(wù)器送過(guò)來(lái)的證書是否是由自己信賴的CA中心所簽發(fā)的。如果是,就繼續(xù)執(zhí)行協(xié)議;如果不是,客戶瀏覽器就給客戶一個(gè)警告消息:警告客戶這個(gè)證書不是可以信賴的詢問(wèn)客戶是否需要繼續(xù)。

4、接著客戶瀏覽器比較證書里的消息,例如域名和公鑰,與服務(wù)器剛剛發(fā)送的相關(guān)消息是否一致,如果是一致的,客戶瀏覽器認(rèn)可這個(gè)服務(wù)器的合法身份。

5、服務(wù)器要求客戶的身份認(rèn)證,用戶可以建立一個(gè)隨機(jī)數(shù)然后對(duì)其進(jìn)行數(shù)字簽名,將這個(gè)含有簽名的隨機(jī)數(shù)和客戶自己的證書以及加密過(guò)的“預(yù)主密碼”一起傳給服務(wù)器。

6、服務(wù)器必須檢驗(yàn)客戶證書和簽名隨機(jī)數(shù)的合法性,具體的合法性驗(yàn)證過(guò)程包括:客戶的證書使用日期是否有效,為客戶提供證書的CA 是否可靠,發(fā)行CA 的公鑰能否正確解開客戶證書的發(fā)行CA的數(shù)字簽名,檢查客戶的證書是否在證書廢止列表(CRL)中。檢驗(yàn)如果沒(méi)有通過(guò),通訊立刻中斷;如果驗(yàn)證通過(guò),服務(wù)器將用自己的私鑰解開加密的“預(yù)主密碼”,然后執(zhí)行一系列步驟來(lái)產(chǎn)生主通訊密碼(客戶端也將通過(guò)同樣的方法產(chǎn)生相同的主通訊密碼)。

7、客戶瀏覽器告訴服務(wù)器自己所能夠支持的通訊對(duì)稱密碼方案。

8、服務(wù)器從客戶發(fā)送過(guò)來(lái)的密碼方案中,選擇一種加密程度最高的密碼方案,用客戶的公鑰加過(guò)密后通知瀏覽器。

9、瀏覽器針對(duì)這個(gè)密碼方案,選擇一個(gè)通話密鑰,接著用服務(wù)器的公鑰加過(guò)密后發(fā)送給服務(wù)器。

10、服務(wù)器接收到瀏覽器送過(guò)來(lái)的消息,用自己的私鑰解密,獲得通話密鑰。

11、服務(wù)器、瀏覽器接下來(lái)的通訊都是用對(duì)稱密碼方案,使用相同的對(duì)稱密鑰。

一、自建CA,簽署證書

#openssl配置文件路徑
vim/etc/pki/tls/openssl.cnf
#下面只列出配置文件中和自建CA有關(guān)的幾個(gè)關(guān)鍵指令
dir=/etc/pki/CA#CA的工作目錄
database=$dir/index.txt#簽署證書的數(shù)據(jù)記錄文件
new_certs_dir=$dir/newcerts#存放新簽署證書的目錄
serial=$dir/serial#新證書簽署號(hào)記錄文件
certificate=$dir/ca.crt#CA的證書路徑
private_key=$dir/private/cakey.pem#CA的私鑰路徑

使用openssl制作CA的自簽名證書

#切換到CA的工作目錄
cd/etc/pki/CA
#制作CA私鑰
(umask077;opensslgenrsa-outprivate/cakey.pem2048)
#制作自簽名證書
opensslreq-new-x509-keyprivate/cakey.pem-outca.crt
#生成數(shù)據(jù)記錄文件,生成簽署號(hào)記錄文件,給文件一個(gè)初始號(hào)。
touchindex.txt
touchserial
echo'01'>serial
#自建CA完成

準(zhǔn)備服務(wù)器端證書

#制作服務(wù)器端私鑰
(umask077;opensslgenrsa-outserver.key1024)
#制作服務(wù)器端證書申請(qǐng)指定使用sha512算法簽名(默認(rèn)使用sha1算法)
opensslreq-new-keyserver.key-sha512-outserver.csr
#簽署證書
opensslca-inserver.csr-outserver.crt-days3650

準(zhǔn)備客戶端證書

#制作客戶端私鑰
(umask077;opensslgenrsa-outkehuduan.key1024)
#制作客戶端證書申請(qǐng)
opensslreq-new-keykehuduan.key-outkehuduan.csr
#簽署證書
opensslca-inkehuduan.csr-outkehuduan.crt-days3650

注意事項(xiàng):

1、制作證書時(shí)會(huì)提示輸入密碼,設(shè)置密碼可選,服務(wù)器證書和客戶端證書密碼可以不相同。

2、服務(wù)器證書和客戶端證書制作時(shí)提示輸入省份、城市、域名信息等,需保持一致。

3、以下信息根證書需要和客戶端證書匹配,否則可能出現(xiàn)簽署問(wèn)題。

countryName = match stateOrProvinceName = match organizationName = match organizationalUnitName = match

如何指定簽署證書的簽名算法

<strong>opensslreqxx
-[digest]Digesttosignwith(seeopenssldgst-hforlist)</strong>

查看使用的簽名算法:

<strong>#使用-sha256指定算法
opensslreq-new-keyserver.key-sha256-outserver.csr</strong>

二、提供Nginx配置文件

<strong>server{
listen443;
server_namepro.server.com;
ssion;
ssi_silent_errorson;
ssi_typestext/shtml;
sslon;
ssl_certificate/data/server/nginx/ssl/self/server.crt;
ssl_certificate_key/data/server/nginx/ssl/self/server.key;
ssl_client_certificate/data/server/nginx/ssl/self/ca/ca.crt;
ssl_verify_clienton;
ssl_protocolsTLSv1TLSv1.1TLSv1.2;
ssl_ciphersECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-RC4-SHA:!ECDHE-RSA-RC4-SHA:ECDH-ECDSA-RC4-SHA:ECDH-RSA-RC4-SHA:ECDHE-RSA-AES256-SHA:!RC4-SHA:HIGH:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!CBC:!EDH:!kEDH:!PSK:!SRP:!kECDH;
ssl_prefer_server_ciphersOn;
indexindex.htmlindex.htmindex.php;
root/data/www;
location~.*\.(php|php5)?$
{
#fastcgi_passunix:/tmp/php-cgi.sock;
fastcgi_pass127.0.0.1:9000;
fastcgi_indexindex.php;
includefastcgi.conf;
}
location~.*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires30d;
}
location~.*\.(js|css)?$
{
expires1h;
}
###thisistouseopenwebsitelianjielikeonapache##
location/{
if(!-e$request_filename){
rewrite^(.*)$/index.php?s=$1last;
break;
}
keepalive_timeout0;
}
location~/.svn/{
denyall;
}
###end##
include/data/server/nginx/conf/rewrite/test.conf;
access_log/log/nginx/access/access.log;
}</strong>

客戶端證書格式轉(zhuǎn)換

<strong>#將文本格式的證書轉(zhuǎn)換成可以導(dǎo)入瀏覽器的證書
opensslpkcs12-export-clcerts-inclient.crt-inkeyclient.key-outclient.p12</strong>

三、將證書導(dǎo)入瀏覽器,這里以Chrome為例

1、在瀏覽器窗口右上角找到設(shè)置

2、在設(shè)置窗口中找到高級(jí)設(shè)置

3、找到管理證書

4、點(diǎn)擊導(dǎo)入證書,然后選擇證書路徑就可以了

5、在導(dǎo)入證書之后就可以正常訪問(wèn)到服務(wù)器數(shù)據(jù)了

6、如果沒(méi)有成功導(dǎo)入客戶端證書就訪問(wèn)服務(wù)器的話,那么服務(wù)器驗(yàn)證客戶端證書這步就會(huì)失敗,然后返回如下錯(cuò)誤

由于用的是自簽證書不被公有CA信任,所以https那里會(huì)有紅叉。

以上所述是小編給大家介紹的使用Nginx實(shí)現(xiàn)HTTPS雙向驗(yàn)證的方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Nginx通過(guò)用戶IP獲取所在國(guó)家及地理位置的實(shí)現(xiàn)方法

    Nginx通過(guò)用戶IP獲取所在國(guó)家及地理位置的實(shí)現(xiàn)方法

    Nginx是一款高性能、輕量級(jí)的Web服務(wù)器和反向代理服務(wù)器,今天講解Nginx十分常用的功能之一,通過(guò)IP獲取用戶所在的國(guó)家,一般廣泛應(yīng)用在各類需要定位的網(wǎng)站上面,來(lái)定位用戶首次訪問(wèn)的國(guó)家,通過(guò)IP解析庫(kù)GeoLite2-Country來(lái)實(shí)現(xiàn)功能,需要的朋友可以參考下
    2023-10-10
  • Nginx基礎(chǔ)入門之gzip配置指南

    Nginx基礎(chǔ)入門之gzip配置指南

    眾所周知隨著nginx的發(fā)展,越來(lái)越多的網(wǎng)站使用nginx,因此nginx的優(yōu)化變得越來(lái)越重要,所以下面這篇文章主要給大家介紹了關(guān)于Nginx基礎(chǔ)入門之gzip配置的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-08-08
  • nginx+iis實(shí)現(xiàn)簡(jiǎn)單的負(fù)載均衡

    nginx+iis實(shí)現(xiàn)簡(jiǎn)單的負(fù)載均衡

    這篇文章主要為大家詳細(xì)介紹了nginx+iis實(shí)現(xiàn)一個(gè)簡(jiǎn)單的負(fù)載均衡的方法,感興趣的小伙伴們可以參考一下
    2016-03-03
  • Nginx?upstream使用教程

    Nginx?upstream使用教程

    本文主要介紹了Nginx?upstream使用教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Nginx配置解決NetCore的跨域問(wèn)題

    Nginx配置解決NetCore的跨域問(wèn)題

    跨域資源共享(CORS)標(biāo)準(zhǔn)新增了一組?HTTP?首部字段,允許服務(wù)器聲明哪些源站有權(quán)限訪問(wèn)哪些資源,這篇文章主要介紹了Nginx配置解決NetCore的跨域問(wèn)題,需要的朋友可以參考下
    2022-07-07
  • nginx實(shí)現(xiàn)一個(gè)域名配置多個(gè)laravel項(xiàng)目的方法示例

    nginx實(shí)現(xiàn)一個(gè)域名配置多個(gè)laravel項(xiàng)目的方法示例

    這篇文章主要介紹了nginx實(shí)現(xiàn)一個(gè)域名配置多個(gè)laravel項(xiàng)目的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • nginx提示:500 Internal Server Error錯(cuò)誤解決辦法

    nginx提示:500 Internal Server Error錯(cuò)誤解決辦法

    這篇文章主要介紹了 nginx提示:500 Internal Server Error錯(cuò)誤解決辦法的相關(guān)資料,這里提供了解決該問(wèn)題的詳細(xì)步驟,希望能幫助到大家,需要的朋友可以參考下
    2017-08-08
  • nginx配置代理多個(gè)前端資源

    nginx配置代理多個(gè)前端資源

    本文主要介紹了nginx配置代理多個(gè)前端資源,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 詳解Nginx配置文件

    詳解Nginx配置文件

    Nginx是lgor Sysoev為俄羅斯訪問(wèn)量第二的rambler.ru站點(diǎn)設(shè)計(jì)開發(fā)的,Nginx功能豐富,可作為HTTP服務(wù)器,也可作為反向代理服務(wù)器,郵件服務(wù)器。這篇文章主要介紹了Nginx配置文件,需要的朋友參考下
    2017-01-01
  • nginx修改默認(rèn)端口方法圖文詳解

    nginx修改默認(rèn)端口方法圖文詳解

    我們都知道nginx 默認(rèn)使用80端口,有時(shí)候我們希望nginx運(yùn)行在其他端口,下面這篇文章主要給大家介紹了關(guān)于nginx修改默認(rèn)端口的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09

最新評(píng)論