1. 程式人生 > 其它 >Traffic Server服務反向代理HTTPS(簡寫)

Traffic Server服務反向代理HTTPS(簡寫)

Taffic Server互動過程

一、互動過程

 

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解析收到的使用者端傳送的相關資料,並檢視本地快取。如果本地快取未存在相關資料,則進行如下步驟:

  1. Traffic Server伺服器代替使用者端向Nextcloud伺服器(192.168.248.130)協商加密金鑰B

  2. 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服務:

 

-----------------------------------------------如需轉載,請註明出處--------------------------------------------------

本作為本人獨立編寫,但本人能力有限如果不對的地方歡迎大佬指正。