Onion网站是基于Tor技术实现的Web服务,它的主要优点是提供免费域名,可以使用自有主机建站,也就是说不购买云主机也可以搭建网站;缺点是用户只能通过Tor浏览器访问Onion网站,并且生成的域名是随机字符串,不便于用户访问。本文简单介绍如何搭建自己的Onion网站。
发布Onion网站的步骤
- 安装Tor。注意Tor与Tor浏览器是不同的软件,Tor可以作为代理在后台运行,而Tor浏览器可以独立使用。如果你只想在主机上搭建Onion网站,但不在同一主机上访问Onion网站,那么只需安装Tor即可,不必安装Tor浏览器。
- 确保Tor正常运行,可参考如下配置按需修改:
# Tor作为代理时提供的端口 SocksPort 9999 # 如果你有其它代理,还可以使用前置代理 #Socks5Proxy 192.168.1.1:1082 # 避开指定区域的出入口节点,这里使用2字符的地区码 ExcludeNodes {hk},{ru} ExcludeExitNodes {hk},{ru} # 使用指定的出口区域,需要与StrictNodes同时使用 ExitNodes {in} StrictNodes 1 # 以后台进程运行tor RunAsDaemon 1
- 运行本地Web服务,这一步和发布普通网站相同,你可以使用Apache,Nginx,Java,Python等等搭建你的网站。绑定 localhost或127.0.0.1 即可,不必使用SSL。
- 把下面两行添加到torrc里,
HiddenServiceDir
对应的目录是Tor保存Onion网站配置文件的位置,请将/opt/tor/mywebiste
修改为你打算使用的文件夹路径。注意执行tor命令的用户对此目录应该有0700权限。HiddenServicePort
表示发布的端口及对应本地IP与端口。HiddenServiceDir /opt/tor/mywebiste HiddenServicePort 80 127.0.0.1:8080
- 重启Tor。
- Tor会生成一些文件,其中的
/opt/tor/mywebiste/hostname
的文件内容就是Onion网站的域名,复制到Tor浏览器就可以访问你的网站了。
增加授权
除使用Web服务自带的授权机制外,你也可以使用Onion提供的公私钥授权机制对网站进行访问控制。
- 使用这个脚本生成如下的公、私钥对,
public: UTGVCLRGBX3FLIWM4P4GY7HINXECEQ5ESLOQDL2NGI2TY3WY6QJA private: BE2MNUSWY37WRPM5MIFONMODALQ5CSZEBZFPZL3YPAR62X7RQSZQ
- 在
/opt/tor/mywebiste/authorized_clients
目录里创建后缀名为.auth
的文本文件,例如alice.auth
,格式如下,将其中的pubkey
替换为上面脚本生成的公钥字符串:descriptor:x25519:pubkey
重启Tor服务。这时再从Tor浏览器访问我们的Onion网站时就会提示输入私钥,用户需要输入上面生成的私钥后才能访问网站。
如果需要添加用户,只需要继续重复上面的两个步骤,即在/opt/tor/mywebiste/authorized_clients
目录里继续添加公钥文件文件就可以了。
保留域名
如果换主机后还想保留原来的域名,请备份/opt/tor/mywebiste/hostname
目录里的*secret_key
文件。