给你的Termux加一层保险——caddy全站https反代理

文章目录

  • 前言
  • 准备工作
  • 一、申请ssl证书
    • 1. 国内云服务商免费申领
  • 二、 安装caddy
    • 1. 下载
    • 2.部署
    • 3. 运行测试
  • 三、添加https服务
    • 1. 对于原生在caddy搭建的服务
    • 2. 对于其他程序搭建的http服务
  • 4. 开机自启动

前言

关于HTTP与HTTPS:基于网络的普及和网速的提升,我们普通用户也可以搭建自己的HTTP服务并开放到公网中方便我们随时随地访问,如开源的智能家居系统Home Assistant、支持WebDAV协议的网盘、网络摄像机等。不过HTTP协议是使用明文传输方式来传输信息的,当你访问只支持HTTP协议的网站,在经过路由器、宽带接入商等中间环节时,搜索的关键字、账号密码等都是可见的,这些信息很容易被截获从而造成重要数据的泄露。这样就产生了由SSL + HTTP协议构建的可进行加密传输、身份认证的网络协议:HTTPS协议。在HTTPS协议下传输数据,客户端会将数据加密后发送到服务器,服务器解密后获得数据,反之亦然。在此过程中,数据通过密钥进行加密,这样即使中间环节劫持到内容也会因没有密钥无法破解。

下面就来为我们的Termux加上HTTPS协议。

准备工作

  1. Termux环境及搭建好的HTTP服务(前面说过的filebrowser、kodbox等)
  2. Termxu有公网地址(ipv4, ipv6均可)及对其公网地址解析过的域名,详见:《Termux解析公网ip——从全世界各地连接你的Termux》
  3. ssl证书(各大云服务商每年都有免费领取额度,没有的不用担心,往下看第一小节)

一、申请ssl证书

说两种方法,自己看情况选择。

1. 国内云服务商免费申领

一些国内云服务商,每年都会有免费的DV单域名ssl证书能领取,像是阿里就是一个自然年20张免费证书,这里我就拿阿里云做例子了。

打开申领页面,点击ssl证书->免费证书->立即购买,数量选择20,可以看到配置费用为零,白给的东西,果断购买:
给你的Termux加一层保险——caddy全站https反代理_第1张图片
购买完就看见创建证书变成20了。点击创建证书,就能看见下面新增了一个状态为待申请的证书,之后点击证书申请
给你的Termux加一层保险——caddy全站https反代理_第2张图片
然后按下图填写申请:
给你的Termux加一层保险——caddy全站https反代理_第3张图片
点击下一步,等几秒页面会自动跳转,复制生成的记录值:
给你的Termux加一层保险——caddy全站https反代理_第4张图片
之后打开你的域名管理台,我这里就还是以我用的dynv6为例了:
登录你的账号后依次点击:My Zones -> 你的域名 ->Add Recond -> Type TXT添加记录值:
给你的Termux加一层保险——caddy全站https反代理_第5张图片
Name留空不填,Content填写刚刚复制的记录值,之后点Save保存,就能看到添加的记录值了:
给你的Termux加一层保险——caddy全站https反代理_第6张图片给你的Termux加一层保险——caddy全站https反代理_第7张图片
返回阿里申请界面,因为证书解析是需要时间的,所以等待5~10分钟再点击验证,验证成功就可以点击提交审申请了:
给你的Termux加一层保险——caddy全站https反代理_第8张图片
申请成功后证书就会变成已签发状态了,最后点击下载,选择其他:
给你的Termux加一层保险——caddy全站https反代理_第9张图片给你的Termux加一层保险——caddy全站https反代理_第10张图片
下载下来一个zip压缩包,里面两个文件,我们所需要的ssl证书到手了。给你的Termux加一层保险——caddy全站https反代理_第11张图片

二、 安装caddy

1. 下载

准备工作做完就该轮到我们的主角了,下载页面:https://caddyserver.com/download
给你的Termux加一层保险——caddy全站https反代理_第12张图片
系统架构选择Linux arn64, 加插件选一个mholt/caddy-webdav用来测试就好,以后有需要其他插件可以使用caddy的内置命令来添加。

2.部署

在Termux的home目录下创建caddy工作目录,并将刚刚下载的文件拷贝进去:

mkdir ~/caddy &&mv /scard/download/caddy_linux_arm64_custom ~/caddy

更改执行文件名为caddy

cd ~/caddy &&mv caddy_linux_arm64_custom caddy

并赋予其执行权限:

chmod +x caddy

配置管理密码:

./caddy hash-password --plaintext 123456

给你的Termux加一层保险——caddy全站https反代理_第13张图片
拷贝生成的加密密码。

编写配置文件:

vim ~/caddy/Caddyfile  

添加以下内容:

{
    #指定http服务端口,大于1023,不然未root的手机无权限访问
    http_port 8961
    order webdav before file_server
}
# 使用一个WebDav服务测试,以开放5050端口为例,可以自行修改
:5050 {
    # 设置/sdcard/download为可以被访问的目录,我设置的是手机的下载目录,可自行修改为想要访问的目录
    root * /sdcard/download
    encode gzip
    
    # 生成123456(此处明文密码自己设置)的密码 caddy hash-password --plaintext 123456
    # 下面的username为用户名(可自行更改),后面的长字符串为使用上面命令生成的加密密码
    basicauth {
            yibingyihan xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        }

    # WebDAV访问相关
    route {
        rewrite /webdav /webdav/
        webdav /webdav/* {
            # 使用WebDAV访问路径的前缀
            prefix /webdav
        }

    # 设置HTTP文件服务,可以在浏览器中查看下载文件
        file_server browse
    }
}

保存文件。

3. 运行测试

~/caddy/caddy run		#前台运行,测试时使用
~/caddy/caddy start		#后台运行,实际运行环境使用

浏览器访问:http://域名:5050
给你的Termux加一层保险——caddy全站https反代理_第14张图片给你的Termux加一层保险——caddy全站https反代理_第15张图片
运行成功,也看到了因为没有ssl认证显示不安全连接,接下来就解决这个问题。首先ctrl+C退出运行。

三、添加https服务

将刚刚下载的证书解压到~/caddy/ssl中:

unzip -n /sdcard/download/8709731_yibyih.dynv6.net_other.zip -d ~/caddy/ssl

为了后续方便使用,给解压出的证书文件改个短一些的名,只要不动后缀,名字随意更改:

mv 8709731_yibyih.dynv6.net.key private.key &&mv 8709731_yibyih.dynv6.net.pem chain.pem

给你的Termux加一层保险——caddy全站https反代理_第16张图片

1. 对于原生在caddy搭建的服务

对于原生搭建在caddy上的服务,我们可以直接在配置中指定ssl证书路径即可,比如刚刚的Webdav服务, 稍稍修改配置文件加上ssl证书路径即可:

vim ~/caddy/Caddyfile  
{
    http_port 8961
    order webdav before file_server
}
# 使用一个WebDav服务测试,以开放5050端口为例,可以自行修改
:5050 {
    # 设置/sdcard/download为可以被访问的目录,我设置的是手机的下载目录,可自行修改为想要访问的目录
    root * /sdcard/download
    encode gzip
    
    # 生成123456(此处明文密码自己设置)的密码 caddy hash-password --plaintext 123456
    # 下面的username为用户名(可自行更改),后面的长字符串为使用上面命令生成的加密密码
    basicauth {
            yibingyihan xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        }
	
	#此处指定证书文件,一定要使用的绝对路径
	tls /data/data/com.termux/files/home/caddy/ssl/chain.pem /data/data/com.termux/files/home/caddy/ssl/private.key
	
    # WebDAV访问相关
    route {
        rewrite /webdav /webdav/
        webdav /webdav/* {
            # 使用WebDAV访问路径的前缀
            prefix /webdav
        }

    # 设置HTTP文件服务,可以在浏览器中查看下载文件
        file_server browse
    }
}

保存配置文件,开启caddy服务:

cd ~/caddy &&./caddy run

使用浏览器访问测试: https://域名:5050
给你的Termux加一层保险——caddy全站https反代理_第17张图片
可以看到此时已经显示为安全站点了,ssl证书安装成功。

2. 对于其他程序搭建的http服务

而对于其他程序搭建的http服务,可以采用反代理的形式实现前置跳转https,这里以nginx的默认网站为例,nginx搭建完, 访问默认的首页是这个样子的:http://域名:8080
给你的Termux加一层保险——caddy全站https反代理_第18张图片
可以看到显示不安全站点,接下来我们使用caddy接管8080端口并前置加上ssl证书:

vim ~/caddy/Caddyfile

添加以下内容:

#使用8443来接管8080,8443可随意指定
https://你的域名:8443 {
    encode gzip
    tls /data/data/com.termux/files/home/caddy/ssl/chain.pem /data/data/com.termux/files/home/caddy/ssl/private.key
    reverse_proxy 你的域名:8080 {
        header_up Host 你的域名:8080
        header_down Access-Control-Allow-Origin *
        header_down Access-Control-Allow-Methods *
        header_down Access-Control-Allow-Headers *
    }
}

保存配置,还是开启caddy服务,浏览器访问:https://域名:8443
给你的Termux加一层保险——caddy全站https反代理_第19张图片
安全,代理成功。

同理可代理其他http服务,比如前面说的filerowser:《Termux网络文件管理器——filebrowser》

#使用18651来接管18650,18651可随意指定
https://你的域名:18650 {
    encode gzip
    tls /data/data/com.termux/files/home/caddy/ssl/chain.pem /data/data/com.termux/files/home/caddy/ssl/private.key
	
	#我的filebrowser端口为18650
    reverse_proxy 你的域名:18650 {				
        header_up Host 你的域名:18650
        header_down Access-Control-Allow-Origin *
        header_down Access-Control-Allow-Methods *
        header_down Access-Control-Allow-Headers *
    }
}

访问:https://域名:18651
给你的Termux加一层保险——caddy全站https反代理_第20张图片

4. 开机自启动

开机自启动的事我们还是交给专业的去做——termux-services,我就简单的把设置命令都写在这了,有兴趣了解用法的请看这里:《Termux设置服务自启动》

创建自启动服务目录:

pkg install termux-services &&mkdir -p $PREFIX/var/service/caddy_ato/log

配置自启动脚本:

vim $PREFIX/var/service/caddy_ato/run

复制下面的内容进去:

#!/data/data/com.termux/files/usr/bin/sh
exec 2>&1
exec ~/caddy/caddy run  >dev/null 2>&1

配置服务日志脚本:

vim $PREFIX/var/service/caddy_ato/log/run

复制下面的内容进去:

#!/data/data/com.termux/files/usr/bin/sh
svlogger="/data/data/com.termux/files/usr/share/termux-services/svlogger"
exec "${svlogger}" "$@"

赋予脚本执行权限:

chmod +x $PREFIX/var/service/caddy_ato/log/run $PREFIX/var/service/caddy_ato/run

将caddy配置文件链接到自启动目录:

ln -s ~/caddy/Caddyfile $PREFIX/var/service/caddy_ato/Caddyfile

相关命令:

sv-enable caddy_ato			#开启自启动
sv-disable caddy_ato		#取消自启动
sv stop caddy_ato			#停止caddy进程,同时本次运行期间不再自动重启
sv start caddy_ato			#开启caddy进程

over!

caddy的发现让我这几天一直烦恼的事情——Termux挂载移动硬盘有了解决办法,至于如何解决的,我们下篇文章见!有兴趣看官的赏个订阅再走呗!


快速导航
        Termux解析公网ipv6——从全世界各地连接你的Termux Termux云盘计划——Webdav移动硬盘挂载        

你可能感兴趣的:(https,ssl,网络,linux,android)