如何使用自簽CA配置HTTPS加密反向代理訪問?看了這篇我會了??!
作者個人研發(fā)的在高并發(fā)場景下,提供的簡單、穩(wěn)定、可擴展的延遲消息隊列框架,具有精準(zhǔn)的定時任務(wù)和延遲隊列處理功能。自開源半年多以來,已成功為十幾家中小型企業(yè)提供了精準(zhǔn)定時調(diào)度方案,經(jīng)受住了生產(chǎn)環(huán)境的考驗。為使更多童鞋受益,現(xiàn)給出開源框架地址:https://github.com/sunshinelyz/mykit-delay
寫在前面
隨著互聯(lián)網(wǎng)的發(fā)展,很多公司和個人越來越重視網(wǎng)絡(luò)的安全性,越來越多的公司采用HTTPS協(xié)議來代替了HTTP協(xié)議。為何說HTTPS協(xié)議比HTTP協(xié)議安全呢?小伙伴們自行百度吧!我就不說了。今天,我們就一起來聊聊如何使用自簽CA配置Nginx的HTTPS加密反向代理。咳咳,小伙伴們快上車。
如果這篇文章對你有所幫助,請文末留言,點個贊,給個在看和轉(zhuǎn)發(fā),大家的支持是我持續(xù)創(chuàng)作的最大動力!
Nginx實現(xiàn)HTTPS
出于安全訪問考慮,采用的CA是本機Openssl自簽名生成的,因此無法通過互聯(lián)網(wǎng)工信Root CA驗證,所以會出現(xiàn)該網(wǎng)站不受信任或安全證書無效的提示,直接跳過,直接訪問即可!
HTTPS的原理和訪問過程
服務(wù)器必要條件
- 一個服務(wù)器私鑰 KEY文件
- 一張與服務(wù)器域名匹配的CA證書(公鑰,根據(jù)私鑰key生成)
訪問過程
(1)客戶端瀏覽器通過https協(xié)議訪問服務(wù)器的443端口,并獲得服務(wù)器的證書(公鑰);客戶端瀏覽器這時候會去找一些互聯(lián)網(wǎng)可信的RootCA(權(quán)威證書頒發(fā)機構(gòu))驗證當(dāng)前獲取到的證書是否合法有效,PS:這些RootCA是隨操作系統(tǒng)一起預(yù)設(shè)安裝在了系統(tǒng)里面的;
(2)如果RootCA驗證通過,表示該證書是可信的,并且若證書中標(biāo)注的服務(wù)器名稱與當(dāng)前訪問的服務(wù)器URL地址一致,就會直接使用該證書中包含的公鑰解密服務(wù)器通過自己的KEY(私鑰)加密后傳輸過來的網(wǎng)頁內(nèi)容,從而正常顯示頁面內(nèi)容;
(3)如果RootCA驗證不通過,說明該證書是未獲得合法的RootCA簽名和授權(quán),因此也就無法證明當(dāng)前所訪問的服務(wù)器的權(quán)威性,客戶端瀏覽器這時候就會顯示一個警告,提示用戶當(dāng)前訪問的服務(wù)器身份無法得到驗證,詢問用戶是否繼續(xù)瀏覽!(通常自簽名的CA證書就是這種情況)
這里需要注意,驗證CA的有效性,只是證明當(dāng)前服務(wù)器的身份是否合法有效,是否具有公信力以及身份唯一性,防止其他人仿冒該網(wǎng)站;但并不會影響到網(wǎng)頁的加密功能,盡管CA證書無法得到權(quán)威證明,但是它所包含的公鑰和服務(wù)器上用于加密頁面的私鑰依然是匹配的一對,所以服務(wù)器用自己的私鑰加密的網(wǎng)頁內(nèi)容,客戶端瀏覽器依然是可以用這張證書來解密,正常顯示網(wǎng)頁內(nèi)容,所以當(dāng)用戶點擊“繼續(xù)瀏覽此網(wǎng)站(不推薦)”時,網(wǎng)頁就可以打開了;
自簽名CA證書生成
1.用Openssl隨機生成服務(wù)器密鑰,和證書申請文件CSR
2.自己給自己簽發(fā)證書
在服務(wù)器命令行輸入如下命令辦法證書。
- #opensslx509 -req -days 3650 -in moonfly.net.csr -signkeymoonfly.net.key -outmoonfly.net.crt
- -days 3650 證書的有效期,自己給自己頒發(fā)證書,想有多久有效期,就弄多久,我一下弄了10年的有效期;
- -inmoonfly.net.csr指定CSR文件
- -signkeymoonfly.net.key指定服務(wù)器的私鑰key文件
- -outmoonfly.net.crt 設(shè)置生成好的證書文件名
一條命令,自己給自己壓鋼印的身份證 moonfly.net.crt 就誕生了!
注:其實嚴格來講,這里生成的只是一張RootCA,并不是嚴格意義上的服務(wù)器證書ServerCA,真正的ServerCA是需要利用這張RootCA再給服務(wù)器簽署辦法出來的證書才算;不過我們這里只講如何實現(xiàn)網(wǎng)頁的SSL加密,所以就直接使用RootCA了,也是能正常實現(xiàn)加密功能的!
Nginx啟用HTTPS
配置文件修改完畢后,用nginx -t 測試下配置無誤,就reload一下nginx服務(wù),檢查443端口是否在監(jiān)聽:
配置完畢,https已經(jīng)在工作了,現(xiàn)在可以通過https訪問網(wǎng)站了
本文轉(zhuǎn)載自微信公眾號「 冰河技術(shù)」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系 冰河技術(shù)公眾號。