发布Onion网站

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文件。

参考

Comment