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