Nginx系列:https配置

點(diǎn)擊上方「藍(lán)字」關(guān)注我們

有HTTP了,為什么需要HTTPS
主要原因是HTTP數(shù)據(jù)傳輸時(shí)沒(méi)有對(duì)數(shù)據(jù)進(jìn)行加密,所以導(dǎo)致數(shù)據(jù)不安全。而HTTPS在HTTP上加了一層,對(duì)數(shù)據(jù)進(jìn)行加密,這樣就保證了數(shù)據(jù)的安全性。防止傳輸?shù)臄?shù)據(jù)過(guò)程中被不法分子盜用、劫持、篡改,而導(dǎo)致數(shù)據(jù)信息的泄露。
HTTPS協(xié)議的實(shí)現(xiàn)
對(duì)傳輸內(nèi)容進(jìn)行加密以及身份驗(yàn)證
對(duì)稱加密:加密秘鑰和解密秘鑰是一樣的

非對(duì)稱加密:加密密鑰與解密密鑰是不一樣的,但是是成對(duì)的。

?HTTPS加密協(xié)議原理

中間人偽造客戶端和服務(wù)端:(中間人可以偽裝成客戶端和服務(wù)端,中間人可以對(duì)數(shù)據(jù)進(jìn)行劫持,不安全)

?
HTTPS的CA簽名證書:(服務(wù)端和客戶端通過(guò)實(shí)現(xiàn)約定好的證書進(jìn)行認(rèn)證,都會(huì)對(duì)證書進(jìn)行校驗(yàn),所以中間人沒(méi)法劫持?jǐn)?shù)據(jù),故安全)
?
?
0x01:先驗(yàn)證Nginx安裝情況
在【Nginx系列:Nginx源碼安裝】?文章中,知道安裝Nginx時(shí),必須首先安裝openssl openssl-devel依賴 模塊,而這兩個(gè)模塊就是HTTPS需要用戶的類庫(kù);所以毫無(wú)疑問(wèn)安裝Nginx時(shí),Linux系統(tǒng)肯定安裝了這兩個(gè)模塊;
Nginx的https需要安裝with-stream_ssl_preread_module目錄,在nginx的源碼目錄執(zhí)行以下命令,可以看出nginx默認(rèn)并不會(huì)安裝stream_ssl_preread_module模塊的,需要重新編譯安裝一下
cat?auto/options?|?grep?YES??|?grep?ssl
安裝一下stream_ssl_preread_module模塊
./configure?--prefix=/usr/local/nginx?--user=nginx?\
?--group=nginx?--with-http_secure_link_module?\
--with-http_stub_status_module?--with-stream_ssl_preread_module
--with-http_ssl_modulemake
cd?objs/
mv?nginx?/usr/local/nginx/sbin/
0x02:生成秘鑰和CA證書
生成key秘鑰
先進(jìn)入Nginx的安裝目錄,然后生成一個(gè)目錄,存放密鑰和CA證書
cd?/usr/local/nginx/conf/
mkdir?httpsKeys
cd?httpsKeys
先看下openssl命令的基本用法
基本語(yǔ)法:
openssl?genrsa?[args]?[numbits]說(shuō)明:
args1?對(duì)生成的私鑰文件是否要使用加密算法進(jìn)行對(duì)稱加密:?
????-des?:?CBC模式的DES加密?
????-des3?:?CBC模式的3DES加密?
????-aes128?:?CBC模式的AES128加密?
????-aes192?:?CBC模式的AES192加密?
????-aes256?:?CBC模式的AES256加密?
args2?對(duì)稱加密密碼
????-passout?passwords
????其中passwords為對(duì)稱加密(des、3des、aes)的密碼(使用這個(gè)參數(shù)就省去了console交互提示輸入密碼的環(huán)節(jié))?
args3?輸出文件
????-out?file?:?輸出證書私鑰文件?
[numbits]:?密鑰長(zhǎng)度,理解為私鑰長(zhǎng)度?
使用如下命令生成key秘鑰
openssl?genrsa?-idea?-out?jesonc.key?2048

執(zhí)行以上命令需要輸入密鑰key的密碼,這里使用密碼:admin,最終在當(dāng)前目錄生成一個(gè)jesonc.key的密鑰文件。
生成證書簽名請(qǐng)求文件(csr文件)
根據(jù)密鑰文件jesonc.key生成證書簽名請(qǐng)求文件jesonc.csr
openssl?req?-new?-key?jesonc.key?-out?jesonc.csr

執(zhí)行命令的過(guò)程中需要根據(jù)提示輸入一些相關(guān)的信息,最終會(huì)在當(dāng)前目錄生成jesonc.csr文件。
生成證書簽名文件(CA文件)
生成證書簽名文件(CA文件),有效期設(shè)置為10年,這個(gè)有效期根據(jù)自己的要求設(shè)置。
openssl?x509?-req?-days?3650?-in?jesonc.csr?\
-signkey?jesonc.key?-out?jesonc.crt
0x03:nginx配置https
Nginx配置HTTPS的基本語(yǔ)法如下
ssl開關(guān):
配置語(yǔ)法:listen?443?ssl;??#?1.1版本后這樣寫
ssl證書文件
配置語(yǔ)法:ssl_certificate file;
默認(rèn)狀態(tài):-
配置方法:http、serverssl密碼文件
配置語(yǔ)法:ssl_certificate_key file;
默認(rèn)狀態(tài):ssl off;
配置方法:http、server
在server模塊添加如下配置
????????listen???????443 ssl;
????????server_name??localhost;
???????
????????ssl_session_cache???shared:SSL:10m;
????????ssl_session_timeout?10m;
????????ssl_certificate?/usr/local/nginx/conf/httpsKeys/jesonc.crt;?#?證書路徑
????????ssl_certificate_key?/usr/local/nginx/conf/httpsKeys/jesonc.key;?#?請(qǐng)求認(rèn)證?key?的路徑

啟動(dòng)Nginx

啟動(dòng)Nginx時(shí)需要輸入密碼,這是因?yàn)?strong style="font-family: Verdana, Arial, Helvetica, sans-serif;font-size: 15px;text-align: start;white-space: normal;">生成證書簽名請(qǐng)求文件(csr文件)在A?challenge?password時(shí)我輸入了密碼。這個(gè)密碼可以不輸入。
驗(yàn)證是否可以訪問(wèn),雖然目前自簽名的證書已經(jīng)不能使用;但是nginx的HTTPS大致是這樣配置的。

參考:?https://www.cnblogs.com/crazymagic/p/11042333.html

掃碼二維碼
獲取更多精彩
Java樂(lè)園

