免備案空間主機(jī)寧波seo自然優(yōu)化技術(shù)
0. 引言
之前我們講到nginx的一大核心作用就是實(shí)現(xiàn)企業(yè)安全防護(hù),而實(shí)現(xiàn)安全防護(hù)的原理就是通過部署https證書,以此實(shí)現(xiàn)參數(shù)加密訪問,從而加強(qiáng)企業(yè)網(wǎng)站的安全能力。
nginx作為各類服務(wù)的統(tǒng)一入口,只需要在入口處部署一個(gè)證書,就能夠?qū)崿F(xiàn)各類后臺(tái)服務(wù)的統(tǒng)一https加密
1. https協(xié)議簡(jiǎn)介
1.1 為什么要用https?
首先我們要知道http有什么問題,為什么要用https請(qǐng)求,http協(xié)議使用明文傳輸參數(shù),這就導(dǎo)致參數(shù)傳遞過程中有被第三方截取到數(shù)據(jù)信息的風(fēng)險(xiǎn)(https用參數(shù)加密來解決),同時(shí)傳輸過程數(shù)據(jù)被截取,還可能被篡改(https用簽名來保證數(shù)據(jù)完整性),下游也不知道收到的數(shù)據(jù)是不是原始數(shù)據(jù),也就是不知道數(shù)據(jù)到底是誰(shuí)發(fā)送的,有沒有被改過(https用密鑰對(duì)、非對(duì)稱驗(yàn)簽解決)。
基于以上的情況,在企業(yè)生產(chǎn)系統(tǒng)中,我們都建議使用https協(xié)議進(jìn)行接口請(qǐng)求、數(shù)據(jù)傳輸
1.2 什么是ssl證書?
SSL證書是一種數(shù)字證書,它用于在互聯(lián)網(wǎng)上提供安全的通信方式。它類似于現(xiàn)實(shí)生活中的各種證件,如駕駛證、護(hù)照和營(yíng)業(yè)執(zhí)照的電子副本。SSL證書的主要作用是在客戶端瀏覽器和Web服務(wù)器之間建立一條加密的安全通道,以保護(hù)數(shù)據(jù)傳輸?shù)陌踩?/p>
SSL證書的申請(qǐng)和頒發(fā)過程由受信任的數(shù)字證書頒發(fā)機(jī)構(gòu)(CA)負(fù)責(zé),比如國(guó)內(nèi)的阿里云。在頒發(fā)證書之前,CA會(huì)驗(yàn)證申請(qǐng)者的身份以及其對(duì)所申請(qǐng)域名的控制權(quán)。驗(yàn)證通過后,CA會(huì)簽發(fā)SSL證書,證書包含內(nèi)容:
- 密鑰對(duì)
- 頒發(fā)者和使用者的信息
- 證書的相關(guān)信息
1.3 https協(xié)議和ssl證書是什么關(guān)系
SSL(Secure Sockets Layer)和HTTPS(HTTP Secure)之間的關(guān)系是緊密相連的。HTTPS是一種安全的網(wǎng)絡(luò)通信協(xié)議,它是在HTTP(Hypertext Transfer Protocol)協(xié)議的基礎(chǔ)上,通過SSL協(xié)議提供了數(shù)據(jù)加密、數(shù)據(jù)完整性驗(yàn)證和服務(wù)器身份驗(yàn)證的功能。因此,可以說HTTPS是HTTP協(xié)議的安全版本,而SSL是實(shí)現(xiàn)HTTPS安全性的關(guān)鍵技術(shù)。
具體來說,HTTPS協(xié)議在傳輸數(shù)據(jù)時(shí)會(huì)使用SSL加密技術(shù),確保數(shù)據(jù)在傳輸過程中不被竊聽和篡改。此外,SSL證書用于驗(yàn)證服務(wù)器的身份,這有助于防止中間人攻擊和欺騙性網(wǎng)站。用戶可以通過查看瀏覽器地址欄中的綠色鎖圖標(biāo)或HTTPS字樣來確認(rèn)當(dāng)前連接是安全的。
所以我們是通過部署ssl證書,來實(shí)現(xiàn)https協(xié)議的。
2. 證書的頒布
2.1 第三方頒布
比如使用的阿里云的域名,就可以在阿里云申請(qǐng)證書,免費(fèi)的是一年有效期,一年后要進(jìn)行重新申請(qǐng)和部署,不然證書過期,就會(huì)影響接口調(diào)用,原本支持的https協(xié)議就會(huì)失效了。也有付費(fèi)的,一般付費(fèi)的可以使用好幾年。
2.2 自簽證書
這里我為了給大家演示,就使用自簽證書,所謂自簽證書就是自己利用第三方工具生成的證書,一樣具備加密的功能,只是沒有第三方的認(rèn)證
簽發(fā)證書步驟:
1、安裝openssl工具,使用該工具簽發(fā)證書
# 安裝
yum install openssl -y
2、生成密鑰對(duì)
# 創(chuàng)建并進(jìn)入密鑰目錄,后續(xù)證書就生成在該目錄下
mkdir /etc/nginx/pki
cd /etc/nginx/pki
# 指定權(quán)限
umask 077;
# 生成RSA私鑰并指定長(zhǎng)度
openssl genrsa -out private.pem 4096
# 根據(jù)私鑰生成公鑰
openssl rsa -in private.pem -pubout -out public.pem
執(zhí)行成功后,會(huì)發(fā)現(xiàn)目錄下多出了一個(gè)私鑰和公鑰文件
3、生成自簽證書
# openssl req -new -x509 -key 私鑰 -out 證書名 -days 證書有效期
openssl req -new -x509 -key private.pem -out ca.crt -days 36500
# 依次輸入國(guó)家、省份、城市、公司、部門、域名、郵箱地址
4、查看目錄下多出一個(gè)證書文件ca.crt
3. nginx部署ssl證書
官網(wǎng)文檔:https://nginx.org/en/docs/http/configuring_https_servers.html
1、修改配置,指定證書路徑
server {listen 443 ssl;server_name www.wu.com;root /html/wu;index index.html;# 指定證書和私鑰ssl_certificate /etc/nginx/pki/ca.crt; # 指定證書路徑,如果是第三方頒發(fā)的也會(huì)有這個(gè)文件,復(fù)制到指定目錄下就行ssl_certificate_key /etc/nginx/pki/private.pem; # 私鑰文件location / {proxy_pass: http://192.168.244.41:8083;proxy_set_header HOST $host;proxy_http_version 1.1;} }
2、同時(shí)配置http請(qǐng)求跳轉(zhuǎn)https
server {listen 80;server_name www.wu.com;root /html/wu;index index.html;location / {rewrite (.*) https://192.168.244.41:8083/$uri redirect; # 這里ip端口可以替換為你的域名}}
3、訪問測(cè)試:
首先我們直接通過https訪問ip, 可以看到可以正常訪問到,但是證書顯示是無效的
這是因?yàn)樽C書是我們自己頒發(fā)的,并不是認(rèn)證的第三方的,所以無效,但是可以看到證書本身的內(nèi)容已經(jīng)正常顯示,我們?cè)诒镜刈鲆恍y(cè)試時(shí)可以采用自頒發(fā)證書的形式,生產(chǎn)上還是要用正規(guī)的第三方頒發(fā)。
4. 總結(jié)
如上我們就完成了nginx ssl證書的部署,可以看到單純看證書的部署并不難,關(guān)鍵大家要體會(huì)到證書的含義和作用