如何使用自籤CA配置HTTPS加密反向代理訪問?

Linux資源站發表於2020-10-01
導讀隨著網際網路的發展,很多公司和個人越來越重視網路的安全性,越來越多的公司採用HTTPS協議來代替了HTTP協議。

如何使用自籤CA配置HTTPS加密反向代理訪問?如何使用自籤CA配置HTTPS加密反向代理訪問?

作者個人研發的在高併發場景下,提供的簡單、穩定、可擴充套件的延遲訊息佇列框架,具有精準的定時任務和延遲佇列處理功能。自開源半年多以來,已成功為十幾家中小型企業提供了精準定時排程方案,經受住了生產環境的考驗。為使更多童鞋受益,現給出開源框架地址:https://github.com/sunshinelyz/mykit-delay

寫在前面

隨著網際網路的發展,很多公司和個人越來越重視網路的安全性,越來越多的公司採用HTTPS協議來代替了HTTP協議。為何說HTTPS協議比HTTP協議安全呢?小夥伴們自行百度吧!我就不說了。今天,我們就一起來聊聊如何使用自籤CA配置Nginx的HTTPS加密反向代理。咳咳,小夥伴們快上車。

如果這篇文章對你有所幫助,請文末留言,點個贊,給個在看和轉發,大家的支援是我持續創作的最大動力!

Nginx實現HTTPS

出於安全訪問考慮,採用的CA是本機Openssl自簽名生成的,因此無法通過網際網路工信Root CA驗證,所以會出現該網站不受信任或安全證書無效的提示,直接跳過,直接訪問即可!

HTTPS的原理和訪問過程

伺服器必要條件有兩個:一個伺服器私鑰 KEY檔案,一張與伺服器域名匹配的CA證書(公鑰,根據私鑰key生成)

訪問過程

(1)客戶端瀏覽器通過https協議訪問伺服器的443埠,並獲得伺服器的證書(公鑰);客戶端瀏覽器這時候會去找一些網際網路可信的RootCA(權威證書頒發機構)驗證當前獲取到的證書是否合法有效,PS:這些RootCA是隨作業系統一起預設安裝在了系統裡面的;

(2)如果RootCA驗證通過,表示該證書是可信的,並且若證書中標註的伺服器名稱與當前訪問的伺服器URL地址一致,就會直接使用該證書中包含的公鑰解密伺服器通過自己的KEY(私鑰)加密後傳輸過來的網頁內容,從而正常顯示頁面內容;

(3)如果RootCA驗證不通過,說明該證書是未獲得合法的RootCA簽名和授權,因此也就無法證明當前所訪問的伺服器的權威性,客戶端瀏覽器這時候就會顯示一個警告,提示使用者當前訪問的伺服器身份無法得到驗證,詢問使用者是否繼續瀏覽!(通常自簽名的CA證書就是這種情況)

如何使用自籤CA配置HTTPS加密反向代理訪問?如何使用自籤CA配置HTTPS加密反向代理訪問?

這裡需要注意,驗證CA的有效性,只是證明當前伺服器的身份是否合法有效,是否具有公信力以及身份唯一性,防止其他人仿冒該網站;但並不會影響到網頁的加密功能,儘管CA證書無法得到權威證明,但是它所包含的公鑰和伺服器上用於加密頁面的私鑰依然是匹配的一對,所以伺服器用自己的私鑰加密的網頁內容,客戶端瀏覽器依然是可以用這張證書來解密,正常顯示網頁內容,所以當使用者點選“繼續瀏覽此網站(不推薦)”時,網頁就可以開啟了;

自簽名CA證書生成

1.用Openssl隨機生成伺服器金鑰,和證書申請檔案CSR

如何使用自籤CA配置HTTPS加密反向代理訪問?如何使用自籤CA配置HTTPS加密反向代理訪問?

2.自己給自己簽發證書

在伺服器命令行輸入如下命令辦法證書。

#opensslx509 -req -days 3650 -in moonfly.net.csr -signkeymoonfly.net.key -outmoonfly.net.crt  

-days 3650 證書的有效期,自己給自己頒發證書,想有多久有效期,就弄多久,我一下弄了10年的有效期;
-inmoonfly.net.csr指定CSR檔案
-signkeymoonfly.net.key指定伺服器的私鑰key檔案
-outmoonfly.net.crt 設定生成好的證書檔名

一條命令,自己給自己壓鋼印的身份證 moonfly.net.crt 就誕生了!

注:其實嚴格來講,這裡生成的只是一張RootCA,並不是嚴格意義上的伺服器證書ServerCA,真正的ServerCA是需要利用這張RootCA再給伺服器簽署辦法出來的證書才算;不過我們這裡只講如何實現網頁的SSL加密,所以就直接使用RootCA了,也是能正常實現加密功能的!

Nginx啟用HTTPS

如何使用自籤CA配置HTTPS加密反向代理訪問?如何使用自籤CA配置HTTPS加密反向代理訪問?

配置檔案修改完畢後,用nginx -t 測試下配置無誤,就reload一下nginx服務,檢查443埠是否在監聽:

如何使用自籤CA配置HTTPS加密反向代理訪問?如何使用自籤CA配置HTTPS加密反向代理訪問?

配置完畢,https已經在工作了,現在可以通過https訪問網站了Linux就該這麼學

相關文章