1. 程式人生 > >NGINX配置HTTPS加密反向代理訪問–自籤CA

NGINX配置HTTPS加密反向代理訪問–自籤CA

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

HTTPS的原理和訪問過程:

伺服器必要條件:

一個伺服器私鑰 KEY檔案

一張與伺服器域名匹配的CA證書(公鑰,根據私鑰key生成)

訪問過程:

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

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

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

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

自簽名CA證書生成

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

2,自己給自己簽發證書

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

-days 3650    證書的有效期,自己給自己頒發證書,想有多久有效期,就弄多久,我一下弄了10年的有效期;

-inmoonfly.net.csr 指定CSR檔案

-signkey moonfly.net.key  指定伺服器的私鑰key檔案

-outmoonfly.net.crt  設定生成好的證書檔名

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

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

NGINX配置啟用HTTPS並配置加密反向代理

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

配置完畢,https已經在工作了,現在可以通過https訪問網站了