新聞中心
HTTPS證書其實(shí)一種一種傳輸協(xié)議。HTTP協(xié)議傳輸?shù)臄?shù)據(jù)都是未加密的,這就意味著用戶填寫的密碼、賬號、交易記錄等機(jī)密信息都是明文,隨時可能被泄露、竊取、篡改,從而被黑客加以利用,因此使用HTTP協(xié)議傳輸隱私信息非常不安全。

專業(yè)領(lǐng)域包括網(wǎng)站設(shè)計制作、成都網(wǎng)站制作、成都做商城網(wǎng)站、微信營銷、系統(tǒng)平臺開發(fā), 與其他網(wǎng)站設(shè)計及系統(tǒng)開發(fā)公司不同,成都創(chuàng)新互聯(lián)公司的整合解決方案結(jié)合了幫做網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營銷的理念,并將策略和執(zhí)行緊密結(jié)合,為客戶提供全網(wǎng)互聯(lián)網(wǎng)整合方案。
1、先說說Nginx-HTTPS加密技術(shù)
超文本傳輸安全協(xié)議(HTTPS)是以安全為目標(biāo)的HTTP通道,簡單來說就是HTTP安全版。https由兩個部分組成:HTTP+SSL/TLS,在http基礎(chǔ)上加上了一層加密信息模塊,服務(wù)端和客戶端的信息插損胡都會通過TLS進(jìn)行加密,傳輸?shù)臄?shù)據(jù)都是加密后的數(shù)據(jù)。
為了解決HTTP協(xié)議的這些缺陷,需要使用另一種協(xié)議:HTTPS。為了數(shù)據(jù)傳輸?shù)陌踩?,HTTPS在http的基礎(chǔ)上加了SSL協(xié)議,SSL依靠證書驗(yàn)證身份,并為瀏覽器和服務(wù)器之間通信加密。
SSL證書是一種數(shù)字證書,使用Secure Socket Layer協(xié)議在瀏覽器和web服務(wù)器之間建立一條安全通道,從而實(shí)現(xiàn)數(shù)據(jù)信息在客戶端和服務(wù)器之間的加密傳輸,保證雙方傳遞信息的安全性,不可被第三方竊聽,而且用戶可以通過服務(wù)器證書驗(yàn)證所訪問網(wǎng)站是否真實(shí)可靠。
加密的HTTPS和HTTP的區(qū)別:超文本傳輸協(xié)議HTTP協(xié)議被用于在web瀏覽器和網(wǎng)站服務(wù)器之間傳遞信息,HTTP協(xié)議以明文方式發(fā)送內(nèi)容,不提供任何方式的加密數(shù)據(jù),如果攻擊者截取了web瀏覽器和網(wǎng)站服務(wù)器之間的傳輸報文,就可以直接讀取其中信息,因此,http協(xié)議不適合傳輸一些銘感信息。HTTPS加密,解密,驗(yàn)證完成過程如圖所示:
首先客戶端發(fā)送請求,服務(wù)端接受到請求之后并申請生成公私秘鑰,同時將公鑰證書發(fā)送給客戶端,客戶端收到之后并通過TLS進(jìn)行解析驗(yàn)證,如果證書沒有問題就會在客戶端生成一個加密隨機(jī)值,將隨機(jī)值發(fā)送給服務(wù)端,服務(wù)端接收到之后,用自己的私鑰解密,從而得到這個隨機(jī)值,然后通過這個隨機(jī)值對內(nèi)容進(jìn)行對稱加密。服務(wù)端將用私鑰加密后的信息發(fā)送給客戶端,最后,客戶端用之前生成的私鑰來解密服務(wù)器端發(fā)過來的信息,獲取解密后的內(nèi)容。
1)客戶端向服務(wù)端發(fā)起HTTPS請求,用戶在瀏覽器輸入https網(wǎng)址,然后連接到Nginx server的443端口2)服務(wù)端采用https協(xié)議有一套數(shù)字證書,該證書可以自行配置,也可以向證書管理組織去申請,該證書其本質(zhì)是公鑰和私鑰3)將公鑰傳送給客戶端,證書包含了很多信息,例如,證書的頒發(fā)機(jī)構(gòu),過期時間等等4)客戶端解析證書,由客戶端的TLS完成,首先會驗(yàn)證公鑰是否有效,比如頒發(fā)的機(jī)構(gòu),過期時間等,如果發(fā)生異常,則會彈出警告信息,提示證書存在問題,如果證書沒有問題,就會隨機(jī)生成數(shù)值,然后用證書對該隨機(jī)數(shù)值進(jìn)行加密5)將證書加密后的隨機(jī)值傳送到服務(wù)器,讓服務(wù)器獲取該隨機(jī)值,后續(xù)客戶端和服務(wù)端可以通過該隨機(jī)值來進(jìn)行加密解密6)服務(wù)端用私鑰解密后,得到了客戶端傳過來的隨機(jī)值,然后把內(nèi)容通過該值進(jìn)行了對稱加密7)服務(wù)端將私鑰加密后的信息發(fā)給客戶端8)客戶端用之前生成的私鑰來解密服務(wù)端發(fā)送過來的信息,獲取解密后的內(nèi)容。
2、關(guān)于SSL證書
互聯(lián)網(wǎng)的安全通信,是建立在SSL/TLS協(xié)議之上,SSL/TLS協(xié)議的基本思路是采用公鑰加密法,也就是,客戶端先向服務(wù)器端索取公鑰,然后用公鑰加密信息,服務(wù)器收到密文后,用自己的私鑰解密。通過這種加解密機(jī)制,可以保障所有信息都是加密傳播,無法竊聽,同時,傳輸具有校驗(yàn)機(jī)制,一旦信息被篡改,可以立刻發(fā)現(xiàn),最后,通過身份證書機(jī)制,可以防止身份被冒充。由此可知,SSL證書主要有兩個功能:加密和身份認(rèn)證。
目前市面上的SSL證書都是通過第三方SSL證書機(jī)構(gòu)頒發(fā)的,常見可靠的第三方 SSL證書頒發(fā)機(jī)構(gòu)有DigiCert、GeoTrust、GlobalSign、Comodo等。
根據(jù)不同使用環(huán)境,SSL證書可分為如下幾種:
企業(yè)級別:EV(Extended Validation)、OV(Organization Validation) ,個人級別:IV(Identity Validation)、DV(Domain Validation)。
其中 EV、OV、IV 需要付費(fèi),企業(yè)用戶推薦使用EV或OV證書,個人用戶推薦使用IV證書,DV證書雖有免費(fèi)的可用,但它是最低端的SSL證書。它不顯示單位名稱,也不能證明網(wǎng)站的真實(shí)身份,只能驗(yàn)證域名所有權(quán),僅起到加密傳輸信息的作用,適合個人網(wǎng)站或非電商網(wǎng)站。
3、使用OpenSSL生成私鑰文件和CSR文件
Nginx配置HTTPS并不復(fù)雜,主要有兩個步驟:簽署第三方可信任的 SSL證書和配置 HTTPS,下面依次介紹。
要配置HTTPS需要用到一個私鑰文件(以.key結(jié)尾)和一個證書文件(以.crt結(jié)尾) ,而證書文件是由第三方證書頒發(fā)機(jī)構(gòu)簽發(fā)的,要讓第三方證書頒發(fā)機(jī)構(gòu)簽發(fā)證書文件,還需要給他們提供一個證書簽署請求文件(以.csr結(jié)尾)。下面簡單介紹下私鑰文件和csr文件。
私鑰文件:以.key結(jié)尾的一個文件,由證書申請者生成,它是證書申請者的私鑰文件,和證書里面的公鑰配對使用,在 HTTPS 握手通訊過程中需要使用私鑰去解密客戶端發(fā)來的經(jīng)過證書公鑰加密的隨機(jī)數(shù)信息,它是HTTPS加密通訊過程非常重要的文件,在配置HTTPS的時候要用到。CSR文件:CSR全稱是Cerificate Signing Request,即證書簽署請求文件,此文件里面包含申請者的DN(Distinguished Name,標(biāo)識名)和公鑰信息,此文件由證書申請者生成,同時需要提供給第三方證書頒發(fā)機(jī)構(gòu)。證書頒發(fā)機(jī)構(gòu)拿到CSR文件后,使用其根證書私鑰對證書進(jìn)行加密并生成CRT證書文件,CRT文件里面包含證書加密信息以及申請者的DN及公鑰信息,最后,第三方證書頒發(fā)機(jī)構(gòu)會將CRT文件發(fā)給證書申請者,這樣就完成了證書文件的申請過程。
在申請SSL證書之前,證書申請者需要先生成一個私鑰文件和一個CSR文件,可通過openssl命令來生成這兩個文件,操作如下:
[root@iZ23sl33esbZ ~]# openssl req -new -newkey rsa:2048 -sha256 -nodes -out iivey.csr -keyout iivey.key -subj "/C=CN/ST=beijing/L=beijing/O=iivey Inc./OU=Web Security/CN=iivey.com"
上面這個命令會生成一個CRS文件iivey.csr和私鑰文件iivey.key。其中,相關(guān)字段含義如下:
C字段:即Country,表示單位所在國家,為兩位數(shù)的國家縮寫,如CN表示中國? ST字段: State/Province,單位所在州或省? L字段: Locality,單位所在城市/或縣區(qū)? O字段: Organization,此網(wǎng)站的單位名稱 OU字段: Organization Unit,下屬部門名稱;也常常用于顯示其他證書相關(guān)信息,如證書類型,證書產(chǎn)品名稱或身份驗(yàn)證類型或驗(yàn)證內(nèi)容等? CN字段:Common Name,網(wǎng)站的域名。
接著,將生成的CSR文件提供給CA機(jī)構(gòu),簽署成功后,CA機(jī)構(gòu)就會發(fā)給我們一個CRT證書文件,假定這個文件是iivey.crt,在獲得SSL證書文件后,就可以在Nginx配置文件里配置HTTPS了。
4、Nginx下配置SSL證書
要開啟HTTPS服務(wù),其實(shí)就是在Nginx上開啟一個443監(jiān)聽端口,下面是HTTPS服務(wù)在Nginx下的配置方式,這里僅列出了server段的配置:
server
{
listen 443;
server_name www.iivey.com;
index index.php index.html;
root /data/webhtdocs/iivey;
ssl on;
ssl_certificate iivey.crt;
ssl_certificate_key iivey.key;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-Xss-Protection 1;
}
簡單介紹下上面每個配置選項(xiàng)的含義:
ssl on:表示啟用SSL功能。
ssl_certificate:用來指定CRT文件的路徑,可以是相對路徑,也可以是絕對路徑,本例是相對路徑,iivey.crt文件放在和nginx.conf同級目錄下。
ssl_certificate_key:用來指定秘鑰文件的路徑,可以是相對路徑,也可以是絕對路徑,本例是相對路徑,iivey.key文件放在和nginx.conf同級目錄下。
ssl_prefer_server_ciphers on:設(shè)置協(xié)商加密算法時,優(yōu)先使用我們服務(wù)端的加密套件,而不是客戶端瀏覽器的加密套件。
ssl_protocols:此指令用于啟動特定的加密協(xié)議,這里設(shè)置為“TLSv1 TLSv1.1 TLSv1.2”,TLSv1.1與TLSv1.2要確保openssl版本大于等于openssl1.0.1 ,SSLv3也可以使用,但是有不少被攻擊的漏洞,所以現(xiàn)在很少使用了。
ssl_ciphers:選擇加密套件和加密算法,不同的瀏覽器所支持的套件和順序可能會有不同。這里選擇默認(rèn)即可。
add_header X-Frame-Options DENY:這是個增強(qiáng)安全性的選項(xiàng),表示減少點(diǎn)擊劫持。
add_header X-Content-Type-Options nosniff:同樣是增強(qiáng)安全性的選項(xiàng),表示禁止服務(wù)器自動解析資源類型。
add_header X-Xss-Protection 1:同樣是增強(qiáng)安全性的選項(xiàng),表示防止XSS攻擊。
5、驗(yàn)證HTTPS功能
Nginx的https配置完成后,需要測試下配置是否正常,這里提供兩種方式,第一種方式是直接通過瀏覽器訪問https服務(wù),這里使用火狐瀏覽器進(jìn)行測試,如果https配置正常的話,應(yīng)該會直接打開頁面,而不會出現(xiàn)如下界面:
出現(xiàn)這個界面,說明https沒有配置成功,需要檢查https配置是否正確。而在打開https頁面后,可能還會出現(xiàn)一種情況,如下圖所示:
這個現(xiàn)象是能夠打開https界面,但是瀏覽器地址欄左邊的小鎖是灰色,并且有個黃色的感嘆號,這說明這個網(wǎng)站的頁面中可能引用了第三方網(wǎng)站的圖片、js、css等資源文件,https認(rèn)為頁面有引用第三方網(wǎng)站資源的情況是不安全的,所以才出現(xiàn)了警告提示。解決這個問題很簡單,將頁面上所有引用第三方網(wǎng)站的資源文件下載到本地,然后通過本地路徑進(jìn)行引用即可。
修改所有資源文件到本地服務(wù)器后,再次通過https方式進(jìn)行訪問,瀏覽器地址欄左邊的小鎖自動變成綠色,并且感嘆號消失,如下圖所示:
至此,nginx下配置https服務(wù)已經(jīng)正常運(yùn)行。
在瀏覽器下可以查看證書信息(證書廠商、證書機(jī)構(gòu)、證書有效期等),點(diǎn)擊瀏覽器地址欄的綠鎖,選擇查看證書,即可查看證書詳細(xì)信息,如下圖所示:
驗(yàn)證SSL證書狀態(tài)還有另外一個方法,那就是通過提供的在線網(wǎng)站進(jìn)行驗(yàn)證,讀者可以通過https://myssl.com/網(wǎng)站或https://www.ssllabs.com/ssltest/網(wǎng)站進(jìn)行在線測試,這些網(wǎng)站可以更詳細(xì)的測試SSL證書的狀態(tài)、安全性、兼容性等各方面的狀態(tài)。
分享標(biāo)題:Nginx配置HTTPS安全證書具體方法
文章出自:http://m.fisionsoft.com.cn/article/dhscopi.html


咨詢
建站咨詢
