11# azure-http-proxy [ ![ Build Status] ( https://travis-ci.org/lxrite/azure-http-proxy.svg?branch=master )] ( https://travis-ci.org/lxrite/azure-http-proxy )
22
3+ ## 简介
4+
35AHP(Azure Http Proxy)是一款高速、安全、轻量级和跨平台的HTTP代理,使用对称加密算法AES对传输的数据进行加密,使用非对称加密算法RSA传输密钥。
46
57HTTP代理对域名的解析是在服务端进行的,所以AHP还能解决本地DNS污染问题。
68
7- # 快速开始
8-
99## 编译和安装
1010
1111### 编译器
@@ -18,7 +18,7 @@ AHP使用了部分C++11特性,所以要求对编译器的版本有较高要求
1818 - MinGW >= 4.8
1919
2020参考:http://en.cppreference.com/w/cpp/compiler_support
21-
21+
2222### 安装依赖
2323
2424AHP依赖Boost和OpenSSL库,且要求Boost库版本不低于1.52
@@ -41,12 +41,12 @@ AHP依赖Boost和OpenSSL库,且要求Boost库版本不低于1.52
4141
4242Windows则需要自己编译Boost库,而OpenSSL库可以从 https://www.openssl.org/related/binaries.html 下载到编译好的。
4343
44- #### 编译
44+ ### 编译
4545AHP使用自动化构建工具CMake来实现跨平台构建
4646
4747 - CMake >= 2.8
4848
49- Windows下可以使用cmake-gui.exe,Linux和其他类Unix系统可以使用下面的命令编译
49+ Windows下可以使用cmake-gui.exe,Linux或其他类Unix系统可以使用下面的命令编译
5050
5151 $ cd azure-http-proxy
5252 $ mkdir build
@@ -57,4 +57,95 @@ Windows下可以使用cmake-gui.exe,Linux和其他类Unix系统可以使用下
5757如果编译成功会生成ahpc(客户端)和ahps(服务端)。
5858## 配置和运行
5959
60- 未完待续...
60+ 如果你要运行的是服务端,那么你首先需要生成一对RSA密钥对,AHP支持任意长度不小于1024位的RSA密钥。下面的命令使用openssl生成2048位的私钥和公钥
61+
62+ openssl genrsa -out rsa_private_key.pem 204
63+ openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
64+
65+ 服务端保留私钥并将公钥告诉客户端。
66+
67+ ### 配置服务端
68+
69+ 编辑server.json文件,Windows下应将此文件放到ahps.exe同目录下,Linux或其他类Unix系统将此文件放到~ /.ahps/server.json。
70+
71+ {
72+ "bind_address": "0.0.0.0",
73+ "listen_port": 8090,
74+ "rsa_private_key": "-----BEGIN RSA PRIVATE KEY----- ...... -----END RSA PRIVATE KEY-----",
75+ "timeout": 240,
76+ "workers": 4,
77+ "auth": true,
78+ "users": [
79+ {
80+ "username": "username1",
81+ "password": "password1"
82+ },
83+ {
84+ "username": "foobar",
85+ "password": "bazqux"
86+ }
87+ ]
88+ }
89+
90+ 字段名 | 描述 | 是否必选 | 默认值 |
91+ ----------------|--------------------|------------------|-----------|
92+ bind_address | 服务端绑定的IP地址 | 否 | "0.0.0.0" |
93+ listen_port | 服务端绑定的端口 | 否 | 8090 |
94+ rsa_private_key | RSA私钥 | 是 | 无 |
95+ timeout | 超时时间(秒) | 否 | 240 |
96+ workers | 并发工作线程数 | 否 | 4 |
97+ auth | 启用代理身份验证 | 否 | false |
98+ users | 用户列表 | auth为true时必选 | 无 |
99+
100+ ### 配置客户端
101+
102+ 编辑client.json文件,Windows下应将此文件放到ahpc.exe或ahpc-gui.exe同目录下,Linux或其他类Unix系统将此文件放到~ /.ahpc/client.json。
103+
104+ {
105+ "proxy_server_address": "127.0.0.1",
106+ "proxy_server_port": 8090,
107+ "bind_address": "127.0.0.1",
108+ "listen_port": 8089,
109+ "rsa_public_key": "-----BEGIN PUBLIC KEY----- ...... -----END PUBLIC KEY-----",
110+ "cipher": "aes-256-ofb",
111+ "timeout": 240,
112+ "workers": 2
113+ }
114+
115+ 字段名 | 描述 | 是否必选 | 默认值 |
116+ ---------------------|----------------------|------------------|---------------|
117+ proxy_server_address | 服务端的IP地址或域名 | 是 | 无 |
118+ proxy_server_port | 服务端的端口 | 是 | 无 |
119+ bind_address | 客户端绑定的IP地址 | 否 | "127.0.0.1" |
120+ listen_port | 客户端的监听端口 | 否 | 8089 |
121+ rsa_public_key | RSA公钥 | 是 | 无 |
122+ cipher | 加密算法 | 是 | "aes-256-ofb" |
123+ timeout | 超时时间(秒) | 否 | 240 |
124+ workers | 并发工作线程数 | 否 | 2 |
125+
126+ ## 运行
127+
128+ 确定配置无误后就可以运行AHP了。
129+
130+ ### 运行服务端
131+
132+ Linux或其他类Unix系统
133+
134+ ./ahps
135+
136+ Windows
137+
138+ ahps.exe
139+
140+ ### 运行客户端
141+
142+ Linux或其他类Unix系统
143+
144+ ./ahpc
145+
146+ Windows
147+
148+ ahpc.exe
149+
150+ Enjoy!
151+
0 commit comments