加密隧道技術

? ? ? ? 在現在的互聯網上傳輸數據,首要考慮的就是安全。這關乎到你的隱私,個人信息,財產安全等等重大問題。如果你的程序本身傳輸的信息沒有加密,也可以通過其他輔助方式讓你的通信加密。一些工具的就是為了解決這樣的場景的,即數據先通過源端代理,讓你的所有通信數據都加密,然后到達目的后再使用目的端代理進行解密后轉發給目標進程。即加密隧道的簡單示意圖如下所示:

? ? ? ?加密隧道的始末即為源端代理和目的端代理。其中數據發送進程和源端代理可以是同在一個主機的不同進程,也可以是分屬不同的主機。目的端代理和數據接收進程也一樣。如果你也不希望你的數據有任何的明文信息在互聯網上傳輸,你就可以使用加密隧道技術。當然,如果你的數據發送進程和數據接收進程之間的網絡通信本身就是加密的,那就不用借助中間的代理環節。

? ? ? ? 這種獨立于應用本身的加密隧道技術,有一個很明顯的優點是它對收發數據的雙方完全透明,收發數據的雙方不需要任何的變更。另外收發數據的應用因為不用處理加解密數據,應用本身的開發的難度和復雜度也會降低,間接達到解耦的目的。

加密隧道的應用? ? ? ??

????????這種加密隧道的一個典型應用是是對http代理的數據進行加密。http代理本身是可以既代理http協議數據,也可以代理https數據的,但是http代理協議的頭部還是明文傳輸的。比如你的瀏覽器需要通過http代理訪問www.bing.com,那么,瀏覽器發給http代理的協議數據是下面這樣的:

Ncat: Connection from 192.168.56.1:51472.
CONNECT www.bing.com:443 HTTP/1.1
Host: www.bing.com:443
Proxy-Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0

? ? ? ? 你會發現這完全是明文傳輸,只要在中間傳輸的環節截獲你這個報文,就知道你要訪問的是哪個網址,如果你要訪問的地址被認為非法,那么你的報文會直接被丟棄。上面的http頭部和普通的http頭部有點區別的就是使用的CONNECT方法,這個方法指示代理服務器,讓其代理訪問目標主機。所以這種也稱為CONNECT代理。

? ? ? ? 此時就可以使用加密隧道技術,把處于瀏覽器到代理服務器之間的數據都加密傳輸。 例如可以在本地局域網的網關部署一個加密隧道源端代理,在http代理服務器機器上或者在其局域網內部署一個加密隧道的目的端代理,目的代理解密后的數據全部轉發給http代理服務器。那樣我們瀏覽器的數據就不會在因特網上明文傳輸了。

加密隧道技術的實現

? ? ? 這種獨立于應用本身的加密隧道技術,還是有不少的。

1、stunnel

????????第一種加密隧道技術,當選stunel。stunnel應該能達到企業級的應用標準,stunnel的設計初衷就是為了單純的建立加密隧道,當然可以覆蓋所有場景。stunnel這個我目前還在使用。具體的應用可以參考我的另一篇博文:stunnel 配置(contos7 windows) - 知乎 (zhihu.com)

2、nginx建立加密隧道

????????nginx作為網關,我們做IT的一般都知道。完全能滿足企業級的應用需求。同時支持高并發和高可靠性。我們用ngixn建立加密隧道也很簡單,下面介紹一下使用nginx建立加密隧道的配置

(1)nginx源端代理(客戶端)

????????配置文件nginx.conf如下:

user root;
worker_processes  4;events {worker_connections  100000;
}stream {server {listen 9999;  # 監聽9999端口proxy_pass 2.2.2.2:9999;  # 將流量加密后轉發到2.2.2.2:9999proxy_ssl on;  # 啟用SSL代理#proxy_ssl_verify on;  # 啟用SSL驗證,這里不驗證上游服務的證書,默認是off不驗證#proxy_ssl_trusted_certificate ../certs/ca.crt;  # 指定可信的CA證書,既然不驗證服務端證書,這里也就不需要CA證書proxy_ssl_protocols TLSv1.2 TLSv1.3;  # 指定SSL協議版本proxy_ssl_session_reuse on;  # 啟用SSL會話復用proxy_ssl_certificate ../certs/client.crt;  # 客戶端SSL證書proxy_ssl_certificate_key ../certs/client.key;  # 客戶端SSL證書私鑰proxy_ssl_verify_depth 2;  # SSL驗證深度}
}

? ? ? ? 上面的客戶端和服務端配置,需要自己生成各種證書,如果有現成的就可以拿來用。上面作為客戶端的nginx配置沒有校驗服務端的證書,如果要更高的安全要求可以加上。?

?(2)nginx目的端代理(服務端)

?????????服務端的配置nginx.conf如下:

#user  nobody;
user root;
worker_processes  4;events {worker_connections  65535;
}stream {server {listen 9999 ssl;  # 監聽8080端口并啟用SSLserver_name ssl-tunnel-server;ssl_certificate ../certs/server.crt;  # SSL證書路徑ssl_certificate_key ../certs/server.key;  # SSL證書私鑰路徑ssl_client_certificate ../certs/ca.crt;  # 指定可信的CA證書ssl_verify_client on;  # 啟用客戶端SSL驗證,那么就需要配置ca證書,就是上面的ssl_client_certificate指定的ca證書proxy_pass 127.0.0.1:4433;  # 將流量代理到本地端口}
}

????????

3、ssh加密隧道?

? ? ? ? 我們常用的ssh命令,很多人都只是用來做遠程登錄工具的。其實它還有一個作用是給我們建立一條加密隧道,從而讓我們通過這條加密隧道,安全的訪問遠程主機。并且ssh加密隧道的建立不需要我們做任何額外的配置,只需要一條命令就能完成。命令如下:

ssh -f -L 0.0.0.0:9999:113.104.189.18:6379 root@1.1.1.1 -N -g

-f是讓ssh命令能在后臺運行,直到有連接到來才轉入前臺運行

-L后面跟本地監聽端口以及將數據轉發到達的遠程主機的ip端口,即兩組ip端口,即local_ip:local_port:remote_ip:remote_port的格式,如果本地綁定任意ip,0.0.0.0也可以不寫出來,只用9999:113.104.189.18:6379.其中remote_ip:port是想訪問的任意遠程主機ip和端口,也可以是ssh服務器端所在主機的ip端口

-N 是告訴遠程主機,只負責轉發隧道數據,不執行任何命令。沒有這個參數,ssh對端收到后一般是要執行這個命令的,也就是正常的遠程shell的功能。

-g 參數,是為了使當前ssh隧道能被除本機外的進程使用,沒有該選項,默認只有本地數據包可以通過該隧道,也是一種安全機制,防止在非授權的情況下被其他主機使用

root@1.1.1.1是遠程主機的ip和用戶名,也可以在后面用":port"添加端口,默認都是22端口。

假設ssh客戶端所在主機的ip是192.169.56.2,則執行完成后建立的加密隧道示意圖如下:

????????數據發送主機和ssh客戶端主機可以是在同一臺,數據接收主機和ssh服務端主機也可以是同一臺 。圖中用***表示的是系統隨機分配的端口。這時候你會發現這個ssh隧道還有一個很好的用處,就是能繞過防火墻。假如ssh服務端主機防火墻只開放了22端口(這個是ssh端口,一般服務器都會開放),但是你要訪問該主機的其他端口,怎么辦,用這個ssh隧道,就能做一個端口轉發,將22端口的數據轉發給其他端口,比如80端口。

? ? ? ? 用ssh建立加密隧道,只是用作暫時的,一旦某個時候連接斷開后,就不會重連了,需要重新執行這個命令。這就不能作為提供長久通道的服務,這就是有很大的局限性

????????另外VPN也可以作為加密隧道,其實VPN本身和外部的通信就是加密的,我們可以借助這個加密通道做任何事而不用擔心被別人窺探到。比如你瀏覽器訪問的任何地址,如果你都是通過VPN服務器作為出口的話,別人即使在中途截獲了你的請求數據,只知道是這臺VPN服務器訪問了某個網址,而無法得知是這個VPN網絡中的哪一個用戶,因為明文的http頭部信息只能在VPN服務器到目標網址之間被截獲,而不可能在你的主機到VPN服務器之間被截獲。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/716682.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716682.shtml
英文地址,請注明出處:http://en.pswp.cn/news/716682.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

之前續寫抖音開發者接入字節小游戲的緩存一下,現在說一下在 Windows 或者 Mac 如何用終端更換路徑?

window: 比方說你的 window 目錄下是這個路徑: 第一:E:\project\Q1\trunk\client\src,然后你想切換到下一個路徑的話,你可以這樣子操作: 第二:E:\project\Q1\trunk\client\src> cd .\usersetting 然后回車,這里不會計較大小寫 第三:你就可以在這個目錄下執行你的腳本:E:…

學習大數據,所必需的java基礎(7)

文章目錄 File類File 的靜態成員File的構造方法File的獲取方法相對路徑和絕對路徑File的創建方法File類中的刪除方法File的遍歷方法 字節流IO流介紹以及輸入輸出以及流向的介紹IO流的流向IO流分類IO流分類 OutputStream中的子類FileOutoutStream的介紹以及方法的簡單介紹InputS…

服務器中如何檢查端口是否開放

有多種方法可以檢測服務器端口是否開放。以下是一些常用的方法: 1. Telnet 命令: 使用 Telnet 命令來測試端口的可達性。在命令提示符或終端中執行以下命令: telnet your_server_ip your_port_number 如果連接成功,表示端口是…

C++ //練習 10.22 重寫統計長度小于等于6 的單詞數量的程序,使用函數代替lambda。

C Primer(第5版) 練習 10.22 練習 10.22 重寫統計長度小于等于6 的單詞數量的程序,使用函數代替lambda。 環境:Linux Ubuntu(云服務器) 工具:vim 代碼塊 /********************************…

PDF標準詳解(二)——PDF 對象

上一篇文章我們介紹了一個PDF文檔應該包含的最基本的結構,并且手寫了一個最簡單的 “Hello World” 的PDF文檔。后面我們介紹新的PDF標準給出示例時將以這個文檔為基礎,而不再給出完整的文檔示例,小伙伴想自己測試可以根據上一節的文檔來進行…

分布式ID選型對比(3)

redis自增 一, 引入依賴: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.6.5</version> </dependency> 二, 配置信息: spring:redis:# 地…

YOLOv8有效漲點,添加GAM注意力機制,使用Wise-IoU有效提升目標檢測效果

目錄 摘要 基本原理 通道注意力機制 空間注意力機制 GAM代碼實現 Wise-IoU WIoU代碼實現 yaml文件編寫 完整代碼分享&#xff08;含多種注意力機制&#xff09; 摘要 人們已經研究了各種注意力機制來提高各種計算機視覺任務的性能。然而&#xff0c;現有方法忽視了…

【C/C++隨筆】static 的用法和作用

「前言」所有文章已經分類好&#xff0c;放心食用 「歸屬專欄」C語言 | C嘎嘎 「主頁鏈接」個人主頁 「筆者」楓葉先生(fy) static 的用法和作用&#xff1f;&#xff1f;&#xff1f; static作用&#xff1a; 作用1修改存儲方式&#xff1a;用 static 修飾的變量存儲在靜態區…

項目解決方案: 實時視頻拼接方案介紹(中)

目 錄 1.實時視頻拼接概述 2.適用場景 3.系統介紹 4. 拼接方案介紹 4.1基于4K攝像機的拼接方案 4.2采用1080P平臺3.0 橫向拼接 4.2.1系統架構 4.2.2系統功能 4.2.3方案特色 4.2.4適用場景 4.2.5設備選型 4.3縱橫兼顧&#xff0c;豎屏拼接 4.3.1系統…

如何使用ArcGIS Pro創建最低成本路徑

雖然兩點之間直線最短&#xff0c;但是在實際運用中&#xff0c;還需要考慮地形、植被和土地利用類型等多種因素&#xff0c;需要加權計算最低成本路徑&#xff0c;這里為大家介紹一下計算方法&#xff0c;希望能對你有所幫助。 數據來源 教程所使用的數據是從水經微圖中下載…

十四、計算機視覺-形態學梯度

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 一、梯度的概念二、梯度的應用三、梯度如何實現 一、梯度的概念 形態學梯度&#xff08;Morphological Gradient&#xff09;是數字圖像處理中的一種基本操作&…

MATLAB中回調定義

目錄 指定回調的方法 回調函數語法 傳遞額外輸入參數 將回調定義為默認值 指定回調的方法 要使用回調屬性&#xff0c;將回調代碼賦予該屬性。使用以下技術之一&#xff1a; 引用函數執行的函數句柄。 包含函數句柄和其他參數的元胞數組 計算為有效 MATLAB 表達式的字符向…

pytorch 圖像的卷積操作

目錄 1.卷積核基本參數說明 2.卷積相關操作說明 3.卷積操作示例 1.卷積核基本參數說明 pytorch進行圖像卷積操作之前&#xff0c;需要把圖像素格式進行分離&#xff0c;比如一個圖像為rgb格式&#xff0c;把R&#xff0c;G,B取出來作為一個ndarray&#xff0c;前文講過&#…

Linux 下 socket 編程介紹及 TCP 客戶端與服務端創建示例

目錄 socket 編程接口TCP 服務端TCP 客戶端更多內容 本文介紹了 Linux 下的 socket 編程&#xff0c;及總結了使用 socket 接口實現 TCP 服務端和客戶端的示例代碼。 socket 編程接口 socket() 函數&#xff1a;用于創建一個新的 socket 描述符&#xff1a; int socket(int …

Linux內核MMC框架

1.mmc的概念 1.MMC MultiMedia Card&#xff0c;多媒體存儲卡&#xff0c; 但后續泛指一個接口協定&#xff08;一種卡式&#xff09;&#xff0c;能符合這接口的內存器都可稱作mmc儲存體,工作電壓&#xff1a;高電壓為2.7&#xff5e;3.6 V&#xff0c;低電壓為1.65&#xf…

【微服務】微服務中常用認證加密方案總結

目錄 一、前言 二、登錄認證安全問題 3.1 認證方式選擇 三、常用的加密方案 3.1 MD5加密算法 3.1.1 md5特點 3.1.2 md5原理 3.1.3 md5使用場景 3.2 AES加密算法 3.2.1 AES簡介 3.2.2 AES加解原理 3.2.3 AES算法優缺點 3.2.4 AES算法使用場景 3.3 RSA加密算法 3.3…

Flutter Dio進階:使用Flutter Dio攔截器實現高效的API請求管理和身份驗證刷新

Flutter筆記 使用Flutter Dio攔截器實現高效的API請求管理和身份驗證刷新 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article…

金融業被網絡攻擊了怎么辦,如何治理和風險控制?

近年來&#xff0c;網絡罪犯的人數和復雜程度都在增加&#xff0c;網絡罪犯的目標鎖定變得更具策略性&#xff0c;更加專注于最大效率和獲利。隨著有關全球網絡犯罪的數據持續涌入&#xff0c;可以看出金融服務企業已然成為頭號鎖定目標。雖然金融服務企業在網絡安全人員、工具…

圖論例題解析

1.圖論基礎概念 概念 &#xff08;注意連通非連通情況&#xff0c;1節點&#xff09; 無向圖&#xff1a; 度是邊的兩倍&#xff08;沒有入度和出度的概念&#xff09; 1.完全圖&#xff1a; 假設一個圖有n個節點&#xff0c;那么任意兩個節點都有邊則為完全圖 2.連通圖&…

【MySQL】SQL 優化

MySQL - SQL 優化 1. 在 MySQL 中&#xff0c;如何定位慢查詢&#xff1f; 1.1 發現慢查詢 現象&#xff1a;頁面加載過慢、接口壓力測試響應時間過長&#xff08;超過 1s&#xff09; 可能出現慢查詢的場景&#xff1a; 聚合查詢多表查詢表數據過大查詢深度分頁查詢 1.2 通…