此篇教程将会介绍如何在原生纯净 Debian 10 环境下进行最简单最基础的 Trojan 安装与配置。同时,本篇教程将会使用 letsencrypt 作为 CA。
安装 Trojan
Trojan 在 Debian 上可以通过 apt
直接从 Debian 源安装。您如果想要自定义安装的话,也可以选择手动编译。本教程仅会覆盖从源安装的方法。
|
|
配置 SSL/TLS 证书
获取 SSL/TLS 证书
有许多种可以在 Debian 上获取 SSL/TLS 证书的方法,其中效率最高、性价比最高的方法个人认为是 letsencrypt. 本篇将介绍利用 letsencrypt 获取证书的方法。
首先我们需要安装 certbot 包。certbot 将会协助我们在系统上验证域名所有权,获取证书并部署证书。
|
|
安装完 certbot 之后我们就可以开始获取证书了。在获取证书之前,certbot 首先会验证您域名的所有权,也就是通过各种方式来验证您是否是对希望申请证书的域名拥有合法的完全控制。certbot 提供多种验证方式,此篇教程中仅会介绍最基础的默认验证方式。
certbot 具体语法是:
|
|
比如,如果我们想要注册 node.flexio.org
的域名,那么我们就需要执行以下命令:
|
|
注册成功后显示的消息大致如下:
|
|
如果您希望同时也给网页服务器配置证书的话,也可以选装 python3-certbot-apache
或者 python3-certbot-nginx
等包,并把文中 certbot 命令中的 certonly
去掉。
更改证书权限
如果不更改 letsencrypt 的权限并且 Torjan 以 nobody 权限运行,那么 Trojan 进程将会无法读取证书,也就无法启动。这个问题有多种解决方案,这篇教程将会介绍两种解决方案。
1. 创建独立服务用户
我们可以给 Trojan 创建一个独立账户,并给这个账户访问证书的权限。
在 Linux 系统上,实现这个效果的逻辑为:
- 创建一个没有 home 目录并且不能登录的服务用户
- 创建一个用户组 certusers
- 将 trojan 添加进 certusers 组
- 将 /etc/letsencrypt 拥有组设置为 certusers
- 在服务账号需要访问文件的上级目录上设置 passthrough 权限
- 让 certusers 用户组拥有读取证书文件的权限
这种解决方案相对专业、精确并且安全。推荐使用这种合理设计的方案,而不是采用让所有人都能读取证书这种不安全的方案。
|
|
随后编辑 /lib/systemd/system/trojan.service
文件并将 User=nobody
更改为 User=trojan
,再运行 systemctl daemon-reload
来重新加载 service 文件。最后运行 systemctl restart trojan
来启动/重启服务。
2. 开放 letsencrypt 证书目录权限
这种解决方案较简单,但是非常不安全。如果您有多个服务或运行在同一个服务器上,或者有除您以外的用户可以访问服务器,那么请不要使用这种解决方案。
|
|
这条命令将会允许服务器上的任何人读取您的私钥,所以非常不推荐在将会长时间稳定运行的服务器上使用这种鲁棒式的配制方法。
配置 Trojan
配置 Trojan 证书
我们需要编辑 Trojan 的配置文件,用您喜欢的编辑器打开 /etc/trojan/config.json
文件。您也可以考虑在修改文件之前先对文件进行备份:
|
|
letsencrypt 获取的证书路径将会遵循 /etc/letsencrypt/live/【域名】/
的规律。例如,我们上文中为 node.flexio.org
获取的证书就将保存在 /etc/letsencrypt/live/node.flexio.org/
,公钥为 /etc/letsencrypt/live/node.flexio.org/fullchain.pem
,私钥为 /etc/letsencrypt/live/node.flexio.org/privkey.pem
。
接下来我们需要做的就是将 Trojan 配置文件中的秘钥路径替换为我们自己证书的路径,将 cert
的值替换为 /etc/letsencrypt/live/【域名】/fullchain.pem
,将 key
的值替换为 /etc/letsencrypt/live/【域名】/privkey.pem
。
|
|
在配置完证书以后,Trojan 就已经可以运行了,如果不希望更改端口和密码的话 (不推荐),可以直接转到 “启动 Trojan 服务”。
配置 Trojan 端口与密码
在 Trojan 配置中,local_port
键定义了 Trojan 服务的监听端口,而 password
键的列表则包含了所有的密码。要更改 Trojan 的端口和密码很简单,只需要在配置文件中替换相关的值即可。
|
|
启动 Trojan 服务
在配置完成后,我们就可以启动 Trojan 服务了。Debian 使用 systemd 管理服务,而用户则使用 systemctl 来管理 systemd。
启动 Trojan 服务:
|
|
停止 Trojan 服务:
|
|
重载 Trojan 配置文件:
|
|
Trojan 问题排除
您可以在启动 Trojan 服务之后通过 sudo systemctl status trojan
来查看 Trojan 服务状态,如果输出显示红色错误文本的话,那您的配置可能出现了问题。
常见问题以及解决方案
问题 | 潜在解决方法 |
---|---|
无法读取证书 | 更改 letsencrypt 证书权限 |
最后修改于 2019-04-08