如何使用自籤CA配置HTTPS加密反向代理訪問?
導讀 | 隨著網際網路的發展,很多公司和個人越來越重視網路的安全性,越來越多的公司採用HTTPS協議來代替了HTTP協議。 |
作者個人研發的在高併發場景下,提供的簡單、穩定、可擴充套件的延遲訊息佇列框架,具有精準的定時任務和延遲佇列處理功能。自開源半年多以來,已成功為十幾家中小型企業提供了精準定時排程方案,經受住了生產環境的考驗。為使更多童鞋受益,現給出開源框架地址: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的有效性,只是證明當前伺服器的身份是否合法有效,是否具有公信力以及身份唯一性,防止其他人仿冒該網站;但並不會影響到網頁的加密功能,儘管CA證書無法得到權威證明,但是它所包含的公鑰和伺服器上用於加密頁面的私鑰依然是匹配的一對,所以伺服器用自己的私鑰加密的網頁內容,客戶端瀏覽器依然是可以用這張證書來解密,正常顯示網頁內容,所以當使用者點選“繼續瀏覽此網站(不推薦)”時,網頁就可以開啟了;
自簽名CA證書生成
1.用Openssl隨機生成伺服器金鑰,和證書申請檔案CSR
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
配置檔案修改完畢後,用nginx -t 測試下配置無誤,就reload一下nginx服務,檢查443埠是否在監聽:
配置完畢,https已經在工作了,現在可以通過https訪問網站了Linux就該這麼學
相關文章
- 如何用nginx配置https加密訪問?NginxHTTP加密
- nginx的https和http共存反向代理配置NginxHTTP
- nginx反向代理配置如何去除字首Nginx
- mac環境下配置nginx反向代理,https協議MacNginxHTTP協議
- 前端使用Nuxt框架,配置本地https訪問前端UX框架HTTP
- Nginx 配置:反向代理Nginx
- Nginx 配置反向代理Nginx
- apache配置反向代理Apache
- haproxy反向代理環境部署(http和https代理)HTTP
- Nginx之路--配置正向代理、反向代理Nginx
- Nginx正向代理和反向代理配置Nginx
- Docker安裝Redmine並使用Nginx反向代理為httpsDockerNginxHTTP
- nginx 進行 https 反向代理 nextcloud 後 APP 不能訪問的解決辦法NginxHTTPCloudAPP
- history 模式反向代理配置模式
- Apache反向代理的配置Apache
- 寶塔反向代理配置
- nginx 專案配置 https 訪問NginxHTTP
- WebSphere配置https協議訪問WebHTTP協議
- nginx配置https協議訪問NginxHTTP協議
- docker 安裝 wordpress,通過nginx反向代理,繫結域名,配置httpsDockerNginxHTTP
- 如何使用海外HTTP代理訪問外網?如何設定海外HTTP代理?HTTP
- 思科路由器反向訪問控制列表配置路由器
- nginx反向代理配置去除字首Nginx
- tomcat 配置nginx 反向代理TomcatNginx
- 配置Nginx反向代理TomcatNginxTomcat
- Nginx配置VUE專案Https訪問NginxVueHTTP
- HTTPS訪問:weblogic下配置SSLHTTPWeb
- Nginx-05-nginx 反向代理是什麼?windows 下如何配置使用 nginxNginxWindows
- nginx 反向代理 swoole 使用Nginx
- Nginx採用https加密訪問後出現的問題NginxHTTP加密
- yapi 的 nginx 反向代理配置文字APINginx
- 基於Apache搭建HTTP HTTPS 正向代理 反向代理伺服器ApacheHTTP伺服器
- gitlab-ce使用nginx做反向代理的方式啟用httpsGitlabNginxHTTP
- 反向代理是如何工作的?
- ADFS4.0 使用nginx做反向代理訪問報502錯的解決方法Nginx
- docker 安裝 nginx 並配置反向代理DockerNginx
- 請問使用 nginx 進行反向代理 Laravel 專案的時候如何 保障 Laravel 專案下靜態資源的訪問 ?NginxLaravel
- nginx配置ssl實現https訪問 小白文NginxHTTP