1
1
# azure-http-proxy [ ![ Build Status] ( https://travis-ci.org/lxrite/azure-http-proxy.svg?branch=master )] ( https://travis-ci.org/lxrite/azure-http-proxy )
2
2
3
+ ## 简介
4
+
3
5
AHP(Azure Http Proxy)是一款高速、安全、轻量级和跨平台的HTTP代理,使用对称加密算法AES对传输的数据进行加密,使用非对称加密算法RSA传输密钥。
4
6
5
7
HTTP代理对域名的解析是在服务端进行的,所以AHP还能解决本地DNS污染问题。
6
8
7
- # 快速开始
8
-
9
9
## 编译和安装
10
10
11
11
### 编译器
@@ -18,7 +18,7 @@ AHP使用了部分C++11特性,所以要求对编译器的版本有较高要求
18
18
- MinGW >= 4.8
19
19
20
20
参考:http://en.cppreference.com/w/cpp/compiler_support
21
-
21
+
22
22
### 安装依赖
23
23
24
24
AHP依赖Boost和OpenSSL库,且要求Boost库版本不低于1.52
@@ -41,12 +41,12 @@ AHP依赖Boost和OpenSSL库,且要求Boost库版本不低于1.52
41
41
42
42
Windows则需要自己编译Boost库,而OpenSSL库可以从 https://www.openssl.org/related/binaries.html 下载到编译好的。
43
43
44
- #### 编译
44
+ ### 编译
45
45
AHP使用自动化构建工具CMake来实现跨平台构建
46
46
47
47
- CMake >= 2.8
48
48
49
- Windows下可以使用cmake-gui.exe,Linux和其他类Unix系统可以使用下面的命令编译
49
+ Windows下可以使用cmake-gui.exe,Linux或其他类Unix系统可以使用下面的命令编译
50
50
51
51
$ cd azure-http-proxy
52
52
$ mkdir build
@@ -57,4 +57,95 @@ Windows下可以使用cmake-gui.exe,Linux和其他类Unix系统可以使用下
57
57
如果编译成功会生成ahpc(客户端)和ahps(服务端)。
58
58
## 配置和运行
59
59
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