近来使用Halo搭建博客,并顺便把WeHalo小程序也把玩了起来,但是发现几个非常棘手的问题:

  1. 根据访问日志发现有三方在刷取关键接口的请求,http请求在部分情况下会暴露出很显著的安全问题;
  2. 小程序强制依赖https,非https连接不能使用,尝试三方开源的v-request替换也是效果不太好;
  3. 第三个问题是由以上问题衍生的,如果升级https网站域名首先就是需要备案,对于个人博客来说,稳定性要求没有那么高,备案流程复杂,想想还是算了吧;

那能怎么办呢?条件不够,技术来凑。

众所周知,http和https请求的默认端口分别为80和443,那么能否实现非标准端口的https呢,这样就能绕过未备案的限制。

经过对https资料的查找,发现有很大希望实现,有这么关键的几点。

https基本原理就不在熬述了,直接引用资料原文:

通过 ACME 协议向 Let's Encrypt 证明自己的域名所有权的过程就叫做 Challenge (验证),目前有三种 Challenge 的方式:

  • HTTP-01
  • NS-01
  • TLS-SNI-01 (已禁用)
  • TLS-ALPN-01

HTTP-01是目前最常见的验证方式,但是该验证方式需要通过80端口开放一个路径给Let's Encrypt访问它提供的 token来验证你的域名所有权,因此在80端口被封锁的情况下这个验证方式是不现实的;

类似的,TLS-ALPN-01需要通过443端口访问来验证,也是行不通;

这样对于国内家庭带宽用户来说就只剩下了一种方式:DNS-01。

了解这些后,解决方案就一目了然了,就是用DNS-01方式进行https验证。

有了这些信息,想法可行,接下来就是寻找合适的工具来实现了。

caddy给我们进行了很好的集成,基于golang的caddy就是一个编译过后的二进制文件,轻巧、实用。

caddy原生https的实现是基于Let's Encrypt的,想要使用DNS-01的https实现需要附带插件,这里我们阿里云的dns服务商,需要选择 github.com/caddy-dns/lego-deprecated;

下载完成后的caddy文件就是包含附件的可执行文件了;

接下来我们编写Caddyfile配置文件,有两个配置要点:

  1. 指定http和https监听端口;
  2. 配置请求指向;
{
http_port 1234
https_port 2234
}
xxx {
reverse_proxy localhost:8081
tls {
dns lego_deprecated alidns
}
}

配置完成还不行,我们需要按照lego_deprecated的文档,建立文件,配置以下:

ALICLOUD_ACCESS_KEY=xxx
ALICLOUD_SECRET_KEY=xxx

关键参数(此部分参数需要从阿里云后台进行获取),便于联系对应dns进行相关的操作;

最后使用caddy指令带上配置好的文件直接启动

caddy run --config Caddyfile --envfile alidns.env

大功告成!

使用caddy实现非标准端口https的更多相关文章

  1. TMG 2010 为HTTPS协议添加非标准端口(443)

    1.添加加密端口时,编辑脚本addsslports.vbs  addsslports.vbs 脚本内容如下: Dim root Dim tpRanges Dim newRange Set root = ...

  2. Wireshark分析非标准端口号流量

    Wireshark分析非标准端口号流量 2.2.2  分析非标准端口号流量Wireshark分析非标准端口号流量 应用程序运行使用非标准端口号总是网络分析专家最关注的.关注该应用程序是否有意涉及使用非 ...

  3. gitlab的docker安装,非标准端口,如何处理?

    这个问题的定义是: 如果我们不是用的80端口对外提供服务, 但gitlab的docker容器里的nginx却是80端口, 那么,在我们clone代码时,带的Http地址也会是80端口,这显然会出现问题 ...

  4. [转帖]Chrome中默认非安全端口

    Chrome,你这坑人的默认非安全端口 https://www.cnblogs.com/soyxiaobi/p/9507798.html 之前遇到过 这个总结的比之前那篇要好呢. 今天用chrome打 ...

  5. ISA 连接非443端口的https站点提示错误

    ISA 连接非443端口的https站点提示错误:12204 The specified Secure Sockets Layer (SSL) port is not allowed. ISA Ser ...

  6. Chrom Firefox 非安全端口访问

    使用Chrom Firefox 访问非安全端口 问题描述 Firefox 此网址已被限制 此网址使用了一个通常用于网络浏览以外目的的端口.出于安全原因,Firefox 取消了该请求. Chrome 无 ...

  7. Mac连接非22端口linux服务器

    Mac连接非22端口linux服务器 原文链接:https://www.cnblogs.com/blog5277/p/9507080.html 原文作者:博客园--曲高终和寡 1:ssh连接 打开终端 ...

  8. nginx在使用非80端口做反向代理【转】

    设置nginx反向代理,nginx在使用非80端口做反向代理时,浏览器访问发现返回302错误 upstream jboss{ server max_fails= fail_timeout=20s; s ...

  9. 把www.domain.com均衡到本机不同的端口 反向代理 隐藏端口 Nginx做非80端口转发 搭建nginx反向代理用做内网域名转发 location 规则

    负载均衡-Nginx中文文档 http://www.nginx.cn/doc/example/loadbanlance.html 负载均衡 一个简单的负载均衡的示例,把www.domain.com均衡 ...

随机推荐

  1. 直面秋招!非科班生背水一战,最终拿下阿里等大厂offer!

    前言 2020年已经接近到9月份了,很多粉丝朋友都对金九银十雀雀欲试了吧!也有很多朋友向我求教经验,因为我自己工作相对于稳定,在这里给大家分享一个粉丝朋友的经历,他作为一个曾经的菜鸡面试者,在不断的失 ...

  2. 在FL Studio中如何更好地为人声加上混响(进阶教程)

    为人声加上混响是我们在处理人声过程中必不可少的一步.然而,除了直接在人声混音轨道加上混响插件进行调节以外,这里还有更为细节的做法可以达到更好的效果. 步骤一:使用均衡器 在为人声加上混响之前,我们应该 ...

  3. python升级版本

    前言 目前大部分使用的3.6或者3.7以及更低版本存在不少问题,随着python的更新很多问题得到修复并且具有更多新的功能. 更新 3.y.x版本升级到3.y.z 下载需要升级的exe安装包点击upg ...

  4. CentOS下搭建禅道Bug反馈系统

    禅道 下载集成版本(apache\php\mysql) wget http://sourceforge.net/projects/zentao/files/8.2.5/ZenTaoPMS.8.2.5. ...

  5. 你的Idea还可用吗?不妨试试这个神器!

    @ 目录 一.STS安装 1.STS下载 2.STS安装 二.STS使用 1.STS配置JDK 2.STS配置Maven 3.使用STS创建SpringBoot项目 三.优化STS 1.主题美化 2. ...

  6. 网络编程原理与UDP实现

    如何发送数据包? Q:当应用程序产生数据的时候,需要去构造数据包并发送到网络上去,但是由谁负责处理呢? A:现代操作系统负责数据包得构造与发送,应用程序只需提供数据. 当应用程序产生数据时,应用程序将 ...

  7. (七)if/else就是goto

    一.CPU如何执行指令 CPU上有数以亿计的晶体管组层的复杂电路,我们先不用管具体电路如何实现:逻辑上我们可以认为CPU由许多寄存器组成,而这些寄存器又由许多锁存器和触发器组成,N个锁存器或触发器就可 ...

  8. 第8.19节 使用__doc__访问Python文档字符串(DocStrings )

    __doc__特殊变量用于查看类.函数.模块的帮助信息,这些帮助信息存放在文档字符串中. 一. 关于文档字符串 关于文档字符串前面很多章节提到过,DocStrings 文档字符串用于程序的文档说明,并 ...

  9. PyQt(Python+Qt)学习随笔:QMdiArea多文档界面部件的subWindowActivated信号

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 QMdiArea的subWindowActivated在一个窗口激活( ...

  10. 第十七章、Model/View开发:QListView的功能及属性

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 QListView是从QAbstractItemView 派生的类,实现了QAbstrac ...