網站首頁 編程語言 正文
背景
HTTP
超文本傳輸協議,是一個基于請求與響應,無狀態的,應用層的協議,?;赥CP/IP協議傳輸數據,互聯網上應用最為廣泛的一種網絡協議,所有的WWW文件都必須遵守這個標準。設計HTTP的初衷是為了提供一種發布和接收HTML頁面的方法。
優點
- 支持客戶/服務器模式
- 簡單快速:服務器當客戶端請求服務時,只需傳送請求方法和路徑
- 靈活: HTTP 允許任何類型的數據對象的傳輸
- 無連接:限制每次連接只處理一個請求。服務器處理完客戶的請求,并收到客戶的應答后,即斷開連接。采用這種方式可以節省傳輸時間。
- 無狀態:協議對于事務處理沒有記憶能力,服務器不知道客戶端是什么狀態。我們給服務器發送 HTTP 請求之后,服務器根據請求,會給我們發送數據過來,但是,發送完,不會記錄任何信息。HTTP 是一個無狀態協議,這意味著每個請求都是獨立的,Keep-Alive 沒能改變這個結果。
缺點
- HTTP協議傳輸數據,都是通過明文的方式在互聯網上傳遞(如賬號、密碼、身份信息、瀏覽器記錄和交易記錄)
- 任何人都可以輕松攔截、竊取或篡改數據,可能造成你的隱私數據泄露(中間人攻擊)
HTTPS
HTTPS (全稱:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全為目標的 HTTP 通道,在HTTP的基礎上通過傳輸加密和身份認證保證了傳輸過程的安全性 [1] 。HTTPS 在HTTP 的基礎下加入SSL,HTTPS 的安全基礎是 SSL,因此加密的詳細內容就需要 SSL。 HTTPS 存在不同于 HTTP 的默認端口及一個加密/身份驗證層(在 HTTP與 TCP 之間)。這個系統提供了身份驗證與加密通訊方法。它被廣泛用于萬維網上安全敏感的通訊,例如交易支付等方面 。
原理圖如下:
簡單來說,https是在http的基礎上添加了證書來驗證安全性,客戶端拿到了https的證書會向證書服務器去驗證證書的真偽,這樣就可避免中間人攻擊。在向證書服務器驗證證書后,客戶端就能拿到服務器的公鑰,同時客戶端也會生成這次自己的私鑰和公鑰,在請求傳輸的過程中會使用服務器公鑰將數據和客戶端公鑰進行加密,這種加密是非對稱加密的(很難破解),服務器擁有私鑰可以將數據進行解密。服務器返回數據時會使用客戶端的公鑰進行加密,這樣只有客戶端才能使用私鑰解密數據。這個過程是安全的。
配置過程
這里我使用的是nginx服務器配置域名htpps(配置SSL證書)
域名證書申請
我是使用騰訊云購買的域名:sunbt.ltd
國內服務器使用域名時需要備案,這里我默認都已經備案
進入騰訊的SSL證書管理頁面,申請對應的域名證書
下載對應的證書,這里我選擇NGINX版本的
編輯nginx.conf文件
將證書解壓放到服務器對應位置上
添加如下內容:
server { #SSL 訪問端口號為 443 listen 443 ssl; #填寫綁定證書的域名 server_name www.sunbt.ltd; #證書文件名稱 ssl_certificate /usr/local/nginx/conf/ssl/www.sunbt.ltd_bundle.crt; #私鑰文件名稱 ssl_certificate_key /usr/local/nginx/conf/ssl/www.sunbt.ltd.key; ssl_session_timeout 5m; #請按照以下協議配置 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #請按照以下套件配置,配置加密套件,寫法遵循 openssl 標準。 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location @router { rewrite ^.*$ /index.html last; } location / { root /usr/local/nginx/html/web/blog; # /vue/dist/ 打包后的dist目錄 try_files $uri $uri/ @router; # 指向下面的 @router否則會出現 404 index index.html index.htm; } }
讓http請求跳轉到https
修改配置如下:
server { listen 80; #填寫綁定證書的域名 server_name cloud.tencent.com; #把http的域名請求轉成https return 301 https://$host$request_uri; }
原文鏈接:https://blog.csdn.net/qq_36213352/article/details/123620208
相關推薦
- 2022-11-27 C語言三種函數調用約定_cdecl與_stdcall及_fastcall詳細講解_C 語言
- 2022-06-08 FreeRTOS實時操作系統在Cortex-M3上的移植過程_操作系統
- 2022-08-17 C語言超全面講解字符串函數_C 語言
- 2023-02-25 Golang嵌入資源文件實現步驟詳解_Golang
- 2022-03-22 Linux系統中.bash_profile文件詳解_Linux
- 2022-07-03 Go?的入口函數和包初始化的使用_Golang
- 2022-04-26 ASP.NET?Core?MVC中Required與BindRequired用法與區別介紹_基礎應用
- 2022-05-07 react?源碼中位運算符的使用詳解_React
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支