本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種基于Nginx的雙向認(rèn)證方法及裝置。
背景技術(shù):
隨著Internet的快速發(fā)展,網(wǎng)頁(yè)應(yīng)用也在迅速增加,Nginx作為一款高性能的HTTP和反向代理服務(wù)器,具有占有內(nèi)存少,并發(fā)能力強(qiáng)的特點(diǎn),被大量網(wǎng)站使用,如京東、新浪、網(wǎng)易、騰訊、淘寶等。但是,在Nginx作為反向代理tomcat實(shí)際應(yīng)用過程中,由于目前大量的使用tomcat的web服務(wù)器未使用安全套接層(Secure Sockets Layer,SSL)加密傳輸協(xié)議,導(dǎo)致Nginx與客戶端通信時(shí),傳輸數(shù)據(jù)沒有被加密,數(shù)據(jù)易被第三者惡意截獲。另外,惡意客戶端及web服務(wù)器也越來(lái)愈多,常會(huì)出現(xiàn)惡意客戶端訪問web服務(wù)器導(dǎo)致服務(wù)器性能下降或客戶端遭到惡意web攻擊。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種基于Nginx的雙向認(rèn)證方法及裝置,用于實(shí)現(xiàn)服務(wù)器與客戶端雙向認(rèn)證,保證數(shù)據(jù)通信、服務(wù)器和客戶端的安全性。
本發(fā)明提供一種基于Nginx的雙向認(rèn)證方法,包括:
建立證書頒發(fā)機(jī)構(gòu);
使用所述證書頒發(fā)機(jī)構(gòu),簽發(fā)服務(wù)器的證書和客戶端的證書并存儲(chǔ);
根據(jù)所述服務(wù)器的證書和客戶端的證書,配置Nginx的安全套接層SSL支持。
本發(fā)明實(shí)施例的一些有益效果可以包括:
本發(fā)明提供的基于Nginx的雙向認(rèn)證方法,在建立證書頒發(fā)機(jī)構(gòu)后,簽發(fā)服務(wù)器的證書和客戶端的證書,并根據(jù)所述服務(wù)器的證書和客戶端的證書,配置Nginx的安全套接層SSL支持,使得Nginx與客戶端通信時(shí),傳輸數(shù)據(jù)均經(jīng)過加密,不僅能夠?qū)崿F(xiàn)服務(wù)器與客戶端雙向認(rèn)證,而且能夠保證服務(wù)器和客戶端數(shù)據(jù)通信的安全性。
在一個(gè)實(shí)施例中,所述建立證書頒發(fā)機(jī)構(gòu),包括:
建立證書頒發(fā)機(jī)構(gòu)的目錄結(jié)構(gòu);
生成證書頒發(fā)機(jī)構(gòu)的證書的公鑰加密算法RSA密鑰對(duì),并存儲(chǔ)在所述證書頒發(fā)機(jī)構(gòu)的目錄中;
根據(jù)所述證書頒發(fā)機(jī)構(gòu)的證書的RSA密鑰對(duì),生成所述證書頒發(fā)機(jī)構(gòu)的證書請(qǐng)求;
對(duì)所述證書頒發(fā)機(jī)構(gòu)的證書請(qǐng)求進(jìn)行自簽名,生成所述證書頒發(fā)機(jī)構(gòu)的證書并儲(chǔ)存。
該實(shí)施例中,建立證書頒發(fā)機(jī)構(gòu)的目錄結(jié)構(gòu),并生成證書頒發(fā)機(jī)構(gòu)的證書的RSA密鑰對(duì),隨后根據(jù)證書頒發(fā)機(jī)構(gòu)的證書請(qǐng)求對(duì)CA進(jìn)行自簽名,由于CA擁有一個(gè)證書,網(wǎng)上的公眾用戶通過驗(yàn)證CA的簽字從而信任CA,任何人都可以得到CA的證書,CA在判明服務(wù)器和客戶端申請(qǐng)者的身份后,可以為其簽發(fā)證書,實(shí)現(xiàn)服務(wù)器和客戶端的雙向認(rèn)證。
在一個(gè)實(shí)施例中,所述使用所述證書頒發(fā)機(jī)構(gòu),簽發(fā)服務(wù)器的證書,包括:
生成服務(wù)器的證書的RSA密鑰對(duì)并存儲(chǔ);
根據(jù)所述服務(wù)器的證書的RSA密鑰對(duì),生成服務(wù)器的證書請(qǐng)求;
使用所述證書頒發(fā)機(jī)構(gòu),對(duì)所述服務(wù)器的證書請(qǐng)求進(jìn)行簽名,生成服務(wù)器的證書。
該實(shí)施例中,在建立證書頒發(fā)機(jī)構(gòu)后,簽發(fā)服務(wù)器的證書,則客戶端可以根據(jù)CA的公鑰對(duì)服務(wù)器證書上的簽字進(jìn)行驗(yàn)證,一旦驗(yàn)證通過,則認(rèn)為服務(wù)器是合法的,從而達(dá)到對(duì)服務(wù)器進(jìn)行認(rèn)證的目的。
在一個(gè)實(shí)施例中,所述使用所述證書頒發(fā)機(jī)構(gòu),簽發(fā)客戶端的證書,包括:
生成客戶端的證書的RSA密鑰對(duì);
根據(jù)所述客戶端的證書的RSA密鑰對(duì),生成客戶端的證書請(qǐng)求;
使用所述證書頒發(fā)機(jī)構(gòu),對(duì)所述客戶端的證書請(qǐng)求進(jìn)行簽名,生成客戶端的證書。
該實(shí)施例中,在建立證書頒發(fā)機(jī)構(gòu)后,簽發(fā)客戶端的證書,則服務(wù)器可以根據(jù)CA的公鑰對(duì)客戶端證書上的簽字進(jìn)行驗(yàn)證,一旦驗(yàn)證通過,則認(rèn)為客戶端是合法的,從而達(dá)到對(duì)客戶端進(jìn)行認(rèn)證的目的。
在一個(gè)實(shí)施例中,所述根據(jù)所述服務(wù)器的證書和客戶端的證書,配置Nginx的SSL支持,包括:
將Nginx配置文件中的ssl_certificate屬性設(shè)置為所述服務(wù)器的證書,將ssl_client_certificate屬性設(shè)置為所述客戶端的證書,將ssl_certificate_key屬性設(shè)置為所述服務(wù)器的證書的RSA密鑰對(duì)。
該實(shí)施例中,通過配置Nginx的安全套接層SSL支持,使得Nginx與客戶端通信時(shí),傳輸數(shù)據(jù)均經(jīng)過加密,保證數(shù)據(jù)通信、服務(wù)器和客戶端的安全性。
本發(fā)明提供一種基于Nginx的雙向認(rèn)證裝置,包括:
創(chuàng)建模塊,用于建立證書頒發(fā)機(jī)構(gòu);
簽發(fā)模塊,用于使用所述創(chuàng)建模塊建立的證書頒發(fā)機(jī)構(gòu),簽發(fā)服務(wù)器的證書和客戶端的證書并存儲(chǔ);
配置模塊,用于根據(jù)所述簽發(fā)模塊簽發(fā)的服務(wù)器的證書和客戶端的證書,配置Nginx的安全套接層SSL支持。
在一個(gè)實(shí)施例中,所述創(chuàng)建模塊包括:
目錄創(chuàng)建子模塊,用于建立證書頒發(fā)機(jī)構(gòu)的目錄結(jié)構(gòu);
第一密鑰對(duì)生成子模塊,用于生成證書頒發(fā)機(jī)構(gòu)的證書的公鑰加密算法RSA密鑰對(duì),并存儲(chǔ)在所述目錄創(chuàng)建子模塊建立的證書頒發(fā)機(jī)構(gòu)的目錄中;
第一請(qǐng)求子模塊,用于根據(jù)所述第一密鑰對(duì)生成子模塊生成的證書頒發(fā)機(jī)構(gòu)的證書的RSA密鑰對(duì),生成所述證書頒發(fā)機(jī)構(gòu)的證書請(qǐng)求;
第一簽名子模塊,用于對(duì)所述第一請(qǐng)求子模塊生成的證書頒發(fā)機(jī)構(gòu)的證書請(qǐng)求進(jìn)行自簽名,生成所述證書頒發(fā)機(jī)構(gòu)的證書并儲(chǔ)存。
在一個(gè)實(shí)施例中,所述簽發(fā)模塊包括:
第二密鑰對(duì)生成子模塊,用于生成服務(wù)器/客戶端的證書的RSA密鑰對(duì)并存儲(chǔ);
第二請(qǐng)求子模塊,用于根據(jù)所述第二密鑰對(duì)生成子模塊生成的服務(wù)器/客戶端的證書的RSA密鑰對(duì),生成服務(wù)器/客戶端的證書請(qǐng)求;
第二簽名子模塊,用于使用所述創(chuàng)建模塊建立的證書頒發(fā)機(jī)構(gòu),對(duì)所述第二請(qǐng)求子模塊生成的服務(wù)器/客戶端的證書請(qǐng)求進(jìn)行簽名,生成服務(wù)器/客戶端的證書并存儲(chǔ)。
在一個(gè)實(shí)施例中,所述配置模塊,具體用于將Nginx配置文件中的ssl_certificate屬性設(shè)置為所述服務(wù)器的證書,將ssl_client_certificate屬性設(shè)置為所述客戶端的證書,將ssl_certificate_key屬性設(shè)置為所述服務(wù)器的證書的RSA密鑰對(duì)。
本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過在所寫的說明書、權(quán)利要求書、以及附圖中所特別指出的結(jié)構(gòu)來(lái)實(shí)現(xiàn)和獲得。
下面通過附圖和實(shí)施例,對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。
附圖說明
附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實(shí)施例一起用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的限制。在附圖中:
圖1為本發(fā)明實(shí)施例中一種基于Nginx的雙向認(rèn)證方法的流程圖;
圖2為步驟101的實(shí)施方法流程圖;
圖3為使用所述證書頒發(fā)機(jī)構(gòu)簽發(fā)服務(wù)器的證書的流程圖;
圖4為使用所述證書頒發(fā)機(jī)構(gòu)簽發(fā)客戶端的證書的流程圖;
圖5為本發(fā)明實(shí)施例一中一種基于Nginx的雙向認(rèn)證方法的流程圖;
圖6為本發(fā)明實(shí)施例提供的一種基于Nginx的雙向認(rèn)證裝置結(jié)構(gòu)示意圖;
圖7為本發(fā)明實(shí)施例提供的另一種基于Nginx的雙向認(rèn)證裝置結(jié)構(gòu)示意圖;
圖8為本發(fā)明實(shí)施例提供的另一種基于Nginx的雙向認(rèn)證裝置結(jié)構(gòu)示意圖。
具體實(shí)施方式
以下結(jié)合附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行說明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實(shí)施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。
圖1為本發(fā)明實(shí)施例中一種基于Nginx的雙向認(rèn)證方法的流程圖。如圖1所示,該方法包括以下步驟S101-S103:
S101:建立證書頒發(fā)機(jī)構(gòu)(Certification Authority,CA)。
其中,CA也擁有一個(gè)證書(內(nèi)含公鑰和私鑰),網(wǎng)上的公眾用戶通過驗(yàn)證CA的簽字從而信任CA,任何人都可以得到CA的證書(含公鑰),用以驗(yàn)證它所簽發(fā)的證書。另外,CA在判明服務(wù)器和客戶端申請(qǐng)者的身份后,可以為其簽發(fā)證書。
S102:使用所述證書頒發(fā)機(jī)構(gòu),簽發(fā)服務(wù)器的證書和客戶端的證書并存儲(chǔ)。
其中,如果客戶端/服務(wù)器想得到一份屬于自己的證書,可先向CA提出申請(qǐng)。在CA判明其身份后,便為他分配一個(gè)公鑰,并且CA將該公鑰與客戶端/服務(wù)器的身份信息綁在一起,并為之簽字后,便形成證書發(fā)給客戶端/服務(wù)器。
S103:根據(jù)所述服務(wù)器的證書和客戶端的證書,配置Nginx的安全套接層SSL支持。
其中,配置Nginx的安全套接層SSL支持后,如果客戶端/服務(wù)端想鑒別服務(wù)器/客戶端的真?zhèn)?,可以用CA的公鑰對(duì)對(duì)端證書上的簽字進(jìn)行驗(yàn)證,一旦驗(yàn)證通過,該證書就被認(rèn)為是有效并合法的,對(duì)應(yīng)的證書擁有者即為合法的,從而達(dá)到相互認(rèn)證的目的。
優(yōu)選地,S103包括:將Nginx配置文件中的ssl_certificate屬性設(shè)置為所述服務(wù)器的證書,將ssl_client_certificate屬性設(shè)置為所述客戶端的證書,將ssl_certificate_key屬性設(shè)置為所述服務(wù)器的證書的RSA密鑰對(duì)。
本發(fā)明實(shí)施例提供的基于Nginx的雙向認(rèn)證方法,在建立證書頒發(fā)機(jī)構(gòu)后,簽發(fā)服務(wù)器的證書和客戶端的證書,并根據(jù)所述服務(wù)器的證書和客戶端的證書,配置Nginx的安全套接層SSL支持,使得Nginx與客戶端通信時(shí),傳輸數(shù)據(jù)均經(jīng)過加密,不僅能夠?qū)崿F(xiàn)服務(wù)器與客戶端雙向認(rèn)證,而且能夠保證數(shù)據(jù)通信、服務(wù)器和客戶端的安全性。
在一個(gè)實(shí)施例中,如圖2所示,步驟S101可實(shí)施為以下步驟S201-S204:
S201:建立證書頒發(fā)機(jī)構(gòu)的目錄結(jié)構(gòu)。
例如,此步驟可以通過以下命令實(shí)現(xiàn):
#切換到openssl目錄
cd/etc/pki
#初始化
mkdir-p CA/{private,newcerts}
touch CA/index.txt
echo 01>CA/serial
S202:生成證書頒發(fā)機(jī)構(gòu)的證書的RSA密鑰對(duì),并存儲(chǔ)在所述證書頒發(fā)機(jī)構(gòu)的目錄中。
此步驟中,需生成CA證書的RSA密鑰對(duì),并放在private目錄下,實(shí)現(xiàn)命令可以如下:
openssl genrsa-des3-out CA/private/cakey.pem 2048
其中,genrsa用于生成RSA密鑰對(duì)的openSSL命令;-des3表示使用3-DES對(duì)稱加密算法加密密鑰對(duì);-out CA/private/cakey.pem表示將生成的RSA密鑰對(duì)cakey.pem保存在CA/private/目錄中;2048表示RSA模數(shù)位數(shù),在一定程度上表征了密鑰強(qiáng)度。
S203:根據(jù)所述證書頒發(fā)機(jī)構(gòu)的證書的RSA密鑰對(duì),生成所述證書頒發(fā)機(jī)構(gòu)的證書請(qǐng)求。
此步驟中,需生成CA證書的證書請(qǐng)求,實(shí)現(xiàn)命令可以如下:
openssl req-new-inform PEM-outform PEM-days 3650-key CA/private/cakey.pem-out careq.pem
其中,req用于生成證書請(qǐng)求的openSSL命令;-new生成一個(gè)新的證書請(qǐng)求;-days 3650表示從生成之時(shí)算起,證書時(shí)效為3650天;-key CA/private/cakey.pem指定CA/private/cakey.pem為證書所使用的密鑰對(duì)文件;-out careq.pem令生成的證書請(qǐng)求保存到文件careq.pem中。
S204:對(duì)所述證書頒發(fā)機(jī)構(gòu)的證書請(qǐng)求進(jìn)行自簽名,生成所述證書頒發(fā)機(jī)構(gòu)的證書并儲(chǔ)存。
此步驟中,需對(duì)證書請(qǐng)求自簽名,生成CA證書并放在CA目錄下,實(shí)現(xiàn)命令可以如下:
openssl ca-selfsign-keyform PEM-in careq.pem-out CA/cacert.pem
其中,ca用于執(zhí)行CA相關(guān)操作的openSSL命令;-selfsign使用對(duì)證書請(qǐng)求進(jìn)行簽名的密鑰對(duì)簽發(fā)證書;-in careq.pem指定careq.pem為證書請(qǐng)求文件;-out CA/cacert.pem,指定將生成的CA證書cacert.pem保存在CA目錄中。
在一個(gè)實(shí)施例中,如圖3所示,步驟S102中使用所述證書頒發(fā)機(jī)構(gòu),簽發(fā)服務(wù)器的證書的具體實(shí)施方法可以包括如下步驟S301-S303:
S301:生成服務(wù)器的證書的RSA密鑰對(duì)并存儲(chǔ);
S302:根據(jù)所述服務(wù)器的證書的RSA密鑰對(duì),生成服務(wù)器的證書請(qǐng)求;
S303:使用所述證書頒發(fā)機(jī)構(gòu),對(duì)所述服務(wù)器的證書請(qǐng)求進(jìn)行簽名,生成服務(wù)器的證書。
例如,可以通過以下命令來(lái)實(shí)現(xiàn)圖3所示的方法:
#生成服務(wù)器的RSA密鑰對(duì)
Openssl genrsa-des3-out serverkey.pem
#生成服務(wù)器證書請(qǐng)求
opensslreq-new-inform PEM-outform PEM-days 3650-key serverkey.pem-out serverreq.pem
#使用CA簽發(fā)服務(wù)器證書
opensslca-keyform PEM-in serverreq.pem-out servercert.pem
本發(fā)明實(shí)施例提供的基于Nginx的雙向認(rèn)證方法,在建立證書頒發(fā)機(jī)構(gòu)后,簽發(fā)服務(wù)器的證書,則客戶端可以根據(jù)CA的公鑰對(duì)服務(wù)器證書上的簽字進(jìn)行驗(yàn)證,一旦驗(yàn)證通過,則認(rèn)為服務(wù)器是合法的,從而達(dá)到對(duì)服務(wù)器進(jìn)行認(rèn)證的目的。
在一個(gè)實(shí)施例中,如圖4所示,步驟S102中使用所述證書頒發(fā)機(jī)構(gòu),簽發(fā)客戶端的證書的具體方法可以包括如下步驟S401-S403:
S401:生成客戶端的證書的RSA密鑰對(duì);
S402:根據(jù)所述客戶端的證書的RSA密鑰對(duì),生成客戶端的證書請(qǐng)求;
S403:使用所述證書頒發(fā)機(jī)構(gòu),對(duì)所述客戶端的證書請(qǐng)求進(jìn)行簽名,生成客戶端的證書。
例如,可以通過以下命令來(lái)實(shí)現(xiàn)圖4所示的方法:
#生成用戶的RSA密鑰對(duì)
opensslgenrsa-out clientkeynopass.pem
#生成用戶證書請(qǐng)求
opensslreq-new-inform PEM-outform PEM-days 3650-key clientkeynopass.pem-out clientreq.pem
#使用CA簽發(fā)用戶證書
opensslca-keyform PEM-in clientreq.pem-out clientcert.pem
本發(fā)明實(shí)施例提供的基于Nginx的雙向認(rèn)證方法,在建立證書頒發(fā)機(jī)構(gòu)后,簽發(fā)客戶端的證書,則服務(wù)器可以根據(jù)CA的公鑰對(duì)客戶端證書上的簽字進(jìn)行驗(yàn)證,一旦驗(yàn)證通過,則認(rèn)為客戶端是合法的,從而達(dá)到對(duì)客戶端進(jìn)行認(rèn)證的目的。
下面通過具體實(shí)施例來(lái)說明本發(fā)明實(shí)施例提供的基于Nginx的雙向認(rèn)證方法。
實(shí)施例一
圖5為本發(fā)明實(shí)施例一中一種基于Nginx的雙向認(rèn)證方法的流程圖。如圖5所示,包括以下步驟S501-S508:
S501:建立證書頒發(fā)機(jī)構(gòu)的目錄結(jié)構(gòu);
S502:生成證書頒發(fā)機(jī)構(gòu)的證書的RSA密鑰對(duì),并存儲(chǔ)在所述證書頒發(fā)機(jī)構(gòu)的目錄中;
S503:根據(jù)所述證書頒發(fā)機(jī)構(gòu)的證書的RSA密鑰對(duì),生成所述證書頒發(fā)機(jī)構(gòu)的證書請(qǐng)求;
S504:對(duì)所述證書頒發(fā)機(jī)構(gòu)的證書請(qǐng)求進(jìn)行自簽名,生成所述證書頒發(fā)機(jī)構(gòu)的證書并儲(chǔ)存;
S505:生成服務(wù)器/客戶端的證書的RSA密鑰對(duì)并存儲(chǔ);
S506:根據(jù)服務(wù)器/客戶端的證書的RSA密鑰對(duì),生成服務(wù)器/客戶端的證書請(qǐng)求;
S507:使用所述證書頒發(fā)機(jī)構(gòu),對(duì)所述服務(wù)器/客戶端的證書請(qǐng)求進(jìn)行簽名,生成服務(wù)器/客戶端的證書并存儲(chǔ);
S508:根據(jù)所述服務(wù)器的證書和客戶端的證書,配置Nginx的SSL支持。
其中,在nginx代理tomcat實(shí)現(xiàn)雙向https加密的情況下,可將nginx的配置文件配置如下:
在tomcat代碼里獲取到項(xiàng)目路徑:
<Valve className="org.apache.catalina.valves.RemoteIpValve"protocolHeader="X-Forwarded-Proto"protocolHeaderHttpsValue="https"remoteIpHeader="X-Forwarded-For"/>
啟動(dòng)tomcat和nginx,訪問XXXXX(域名),自動(dòng)跳轉(zhuǎn)為https,并訪問了tomcat項(xiàng)目的首頁(yè)。
對(duì)應(yīng)于上述實(shí)施例提供的一種基于Nginx的雙向認(rèn)證方法,本發(fā)明實(shí)施例還提供一種基于Nginx的雙向認(rèn)證裝置,如圖6所示,包括:
創(chuàng)建模塊11,用于建立證書頒發(fā)機(jī)構(gòu);
簽發(fā)模塊12,用于使用創(chuàng)建模塊11建立的證書頒發(fā)機(jī)構(gòu),簽發(fā)服務(wù)器的證書和客戶端的證書并存儲(chǔ);
配置模塊13,用于根據(jù)簽發(fā)模塊12簽發(fā)的服務(wù)器的證書和客戶端的證書,配置Nginx的安全套接層SSL支持。
圖6所示裝置,可以用于執(zhí)行圖1所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
圖7為本發(fā)明實(shí)施例提供的另一種基于Nginx的雙向認(rèn)證裝置示意圖,如圖7所示,本實(shí)施例的裝置在圖6所示系統(tǒng)的基礎(chǔ)上,進(jìn)一步的,創(chuàng)建模塊11可包括:
目錄創(chuàng)建子模塊111,用于建立證書頒發(fā)機(jī)構(gòu)的目錄結(jié)構(gòu);
第一密鑰對(duì)生成子模塊112,用于生成證書頒發(fā)機(jī)構(gòu)的證書的公鑰加密算法RSA密鑰對(duì),并存儲(chǔ)在目錄創(chuàng)建子模塊111建立的證書頒發(fā)機(jī)構(gòu)的目錄中;
第一請(qǐng)求子模塊113,用于根據(jù)第一密鑰對(duì)生成子模塊112生成的證書頒發(fā)機(jī)構(gòu)的證書的RSA密鑰對(duì),生成所述證書頒發(fā)機(jī)構(gòu)的證書請(qǐng)求;
第一簽名子模塊114,用于對(duì)第一請(qǐng)求子模塊113生成的證書頒發(fā)機(jī)構(gòu)的證書請(qǐng)求進(jìn)行自簽名,生成所述證書頒發(fā)機(jī)構(gòu)的證書并儲(chǔ)存。
圖7所示裝置,可以用于執(zhí)行圖2所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
圖8為本發(fā)明實(shí)施例提供的另一種基于Nginx的雙向認(rèn)證裝置示意圖,如圖8所示,本實(shí)施例的裝置在圖6所示系統(tǒng)的基礎(chǔ)上,進(jìn)一步的,簽發(fā)模塊12可包括:
第二密鑰對(duì)生成子模塊121,用于生成服務(wù)器/客戶端的證書的RSA密鑰對(duì)并存儲(chǔ);
第二請(qǐng)求子模塊122,用于根據(jù)第二密鑰對(duì)生成子模塊121生成的服務(wù)器/客戶端的證書的RSA密鑰對(duì),生成服務(wù)器/客戶端的證書請(qǐng)求;
第二簽名子模塊123,用于使用創(chuàng)建模塊11建立的證書頒發(fā)機(jī)構(gòu),對(duì)第二請(qǐng)求子模塊122生成的服務(wù)器/客戶端的證書請(qǐng)求進(jìn)行簽名,生成服務(wù)器/客戶端的證書并存儲(chǔ)。
圖7所示裝置,可以用于執(zhí)行圖3或圖4所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
在另一個(gè)實(shí)施例中,配置模塊13,具體用于將Nginx配置文件中的ssl_certificate屬性設(shè)置為所述服務(wù)器的證書,將ssl_client_certificate屬性設(shè)置為所述客戶端的證書,將ssl_certificate_key屬性設(shè)置為所述服務(wù)器的證書的RSA密鑰對(duì)。
本發(fā)明提供的基于Nginx的雙向認(rèn)證裝置,建立證書頒發(fā)機(jī)構(gòu),采用所述證書頒發(fā)機(jī)構(gòu)簽發(fā)服務(wù)器的證書和客戶端的證書,能夠?qū)崿F(xiàn)服務(wù)器與客戶端雙向認(rèn)證,此外,該裝置根據(jù)所述服務(wù)器的證書和客戶端的證書,配置Nginx的安全套接層SSL支持,使得Nginx與客戶端通信時(shí),傳輸數(shù)據(jù)均經(jīng)過加密,能夠保證數(shù)據(jù)通信、服務(wù)器和客戶端的安全性。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器和光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。