Traffic Server服務反向代理HTTPS(簡寫)
一、互動過程
1)使用者端(192.168.248.1)請求https://www.test.com通過DNS解析為Traffic Server伺服器地址(192.168.248.128),與Traffic Server伺服器協商的得到金鑰A,使用者端將相關資料通過金鑰A加密並封裝在HTTPS傳送至Traffic Server伺服器,。
2)Traffic Server伺服器通過金鑰A解析收到的使用者端傳送的相關資料,並檢視本地快取。如果本地快取未存在相關資料,則進行如下步驟:
-
Traffic Server伺服器代替使用者端向Nextcloud伺服器(192.168.248.130)協商加密金鑰B
-
Traffic Server伺服器會將從使用者端收到的資料、cookie等相關資料,通過金鑰B加密並封裝在HTTPS傳送至Nexcloud伺服器;
3)Nexcloud伺服器收到從Traffic Server伺服器傳送過來的資料通過金鑰B解密之後進行響應,並通過金鑰B加密後返回至Traffic Server伺服器;
4)Traffic Server伺服器收到從Nexcloud伺服器返回的加密資料,通過金鑰B進行解密;並將解密後的資料通過金鑰A加密後返回至客戶端;
二、配置詳情
Traffice Server伺服器:
Apache Traffic Server 9.1.2下載網址:https://trafficserver.apache.org/downloads
1、部署編譯環境
1)使用阿里雲映象站
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
2)安裝依賴包
yum install autoconf automake libtool pkgconfig perl-ExtUtils-MakeMaker openssl-devel pcre-devel ncurses-devel libcurl-devel libcap-devel hwloc-devel flex tcl tcl-devel python3 gcc-c++
3)更新gcc
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
需要注意的是scl命令啟用只是臨時的,退出shell或重啟就會恢復原系統gcc版本。
如果要長期使用gcc 9.3的話:
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
4)下載Traffic Server
cd /var
wget -O ./trafficserver-9.1.2.tar.bz2 https://dlcdn.apache.org/trafficserver/trafficserver-9.1.2.tar.bz2
tar xf trafficserver-9.1.2.tar.bz2
ln -s trafficserver-9.1.2 trafficserver
5)編譯安裝
cd trafficserver
useradd ATS
./configure --with-user=ATS --with-group=ATS --prefix=/usr/local/etc/trafficserver912 --enable-debug --enable-experimental-plugins --enable-example-plugins
make && make check
make install
6)部署至/etc/目錄下
ln -s /usr/local/etc/trafficserver912/ /etc/trafficserver
7)新增環境變數
vim /root/.bash_profile
PATH=$PATH:$HOME/bin:/etc/trafficserver/bin
8)建立Server證書(金鑰A)檔案
mkdir -p /etc/trafficserver/ssl/{server,client}
cd /etc/trafficserver/ssl/server
openssl genrsa -des3 -out server.key 2048
openssl req -new -key server.key -out server.csr
Country Name (2 letter code) [XX]:cn # 國家代號
State or Province Name (full name) []:ShanDong # 省
Locality Name (eg, city) [Default City]:QingDao # 市
Organization Name (eg, company) [Default Company Ltd]:test # 公司名
Organizational Unit Name (eg, section) []: # 可以不輸入
Common Name (eg, your name or your server's hostname) []:
Email Address []:[email protected] # 郵箱
A challenge password []: # 可以不輸入
An optional company name []: # 可以不輸入
cp server.key server.key.back
openssl rsa -in server.key.back -out server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
9)建立Client證書(金鑰B)檔案
cd /etc/trafficserver/ssl/client
openssl genrsa -des3 -out client.key 2048
openssl req -new -key client.key -out client.csr
Country Name (2 letter code) [XX]:cn # 國家代號
State or Province Name (full name) []:ShanDong # 省
Locality Name (eg, city) [Default City]:QingDao # 市
Organization Name (eg, company) [Default Company Ltd]:test # 公司名
Organizational Unit Name (eg, section) []: # 可以不輸入
Common Name (eg, your name or your server's hostname) []:
Email Address []:[email protected] # 郵箱
A challenge password []: # 可以不輸入
An optional company name []: # 可以不輸入
cp client.key client.key.back
openssl rsa -in client.key.back -out client.key
openssl x509 -req -days 365 -in client.csr -signkey client.key -out client.crt
10)編寫配置檔案
cd /etc/trafficserver/etc/trafficserver
vim remap.config
#----------檔案最後新增如下內容---------------
map http://192.168.248.128/ http://192.168.248.130:80/ @action=allow @src_ip=0.0.0.0-255.255.255.255
map https://192.168.248.128/ https://192.168.248.130:443/ @action=allow @src_ip=0.0.0.0-255.255.255.255
#------------------------------------------
vim ip_allow.yaml
ip_allow:
- apply: in
ip_addrs: 127.0.0.1
action: allow
methods: ALL
- apply: in
ip_addrs: ::1
action: allow
methods: ALL
#--新增如下內容--------------
- apply: in
ip_addrs: 192.168.248.0/24
action: allow
methods: ALL
#-------------------------
- apply: in
ip_addrs: 0/0
action: deny
methods:
- PURGE
- PUSH
- DELETE
- apply: in
ip_addrs: ::/0
action: deny
methods:
- PURGE
- PUSH
- DELETE
vim records.config
#----------修改原始內容-------
CONFIG proxy.config.http.server_ports STRING 80 443:ssl
#---------------------------
#----------檔案最後新增如下內容---------------
CONFIG proxy.config.ssl.server.multicert.exit_on_load_fail INT 0
CONFIG proxy.config.ssl.server.multicert.filename STRING ssl_multicert.config
CONFIG proxy.config.ssl.server.cert.path STRING /etc/trafficserver/ssl/server/
CONFIG proxy.config.ssl.server.private_key.path STRING /etc/trafficserver/ssl/server/
CONFIG proxy.config.ssl.client.private_key.path STRING /etc/trafficserver/ssl/client/
CONFIG proxy.config.ssl.client.private_key.filename STRING client.key
CONFIG proxy.config.ssl.client.cert.path STRING /etc/trafficserver/ssl/client/
CONFIG proxy.config.ssl.client.cert.filename STRING client.crt
#------------------------------------------
vim ssl_multicert.config
#----------檔案最後新增如下內容---------------
dest_ip=* ssl_cert_name=server.crt ssl_key_name=server.key
#------------------------------------------
11)啟動服務並更改主機防火牆
trafficserver start
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload
12)檢視相關功能
14)驗證代理服務
HTTP服務:
HTTPS服務:
-----------------------------------------------如需轉載,請註明出處--------------------------------------------------
本作為本人獨立編寫,但本人能力有限如果不對的地方歡迎大佬指正。