LNMP+Frp来申请Let'sEncrypt证书'

2024/08/14 阅读时间:10分钟

←文章列表

我一直很头疼,没满18岁,网站没法备案,Frp就搞得很麻烦。又撞上没有SSL证书,所以很多人访问的时候他都会说我的网站危险,这个就搞得我很不好意思。我一个中国好青年,总不可能跟他们说要“无视风险,继续访问”吧。这个时候我就想到了以前我在宝塔面板上看到的Let's Encrypt证书。我又想起来了,这个证书是免费的。我当时一拍脑子瞬间一想,诶,我申请一个这个证书不就好了吗?但是呢看见我那惊人的1h1g的服务器还是打消了安装宝塔面板的想法。那宝塔没安装,我这服务器的空间肯定仅剩无几了。所以呢思来想去,我看到网上有直接使用LNMP来搭建的,他们又说这个玩意但又非常像,即使是像我这种垃圾服务器能跑的相当流畅,这我就来兴趣了。花了一晚上时间让他把这4个套件安装完,在我创建网站的时候,我也惊讶的发现他这个套件的自动创建脚本竟然已经包括了申请Let's Encrypt证书。我当时很高兴啊,在OpenFrp马上创建了一个Https隧道,开始申请。然后,天坑就来了。'

安装过程中遇到的问题

Let's Encrypt他的证书申请是有两种验证方式。第一种是利用DNS的txt解析,他会要求你在一个特定解析名字下面使用txt解析记录一串随机的字符,来验证这个域名是不是你的;第二种方法呢它会在你的网站下面,某一个特定目录里面放一个文件,这个文件的名字和内容都是随机的密钥。LNMP在创建网站过程中,去验证的就是第二种方法。因为这种方法他可用性很高,自动化程度也很高。

这个时候啊你可能就会发现一个问题。我们还没有SSL证书,那请问我们创建的HTTPs隧道又怎么能够映射成功呢?这个就陷入了一个死循环,是吧?如果说我要验证这个域名是我的,那么我就需要那这个网站能够访问我。但是我现在用的就是一个HTTPs隧道,我没有证书,他怎么能让我正常使用呢?

当时我脑袋就卡住了。当时我先去查了一下alnmp它脚本里面自带的使用DNS来进行验证。最开始验证了半天,我直接这边复制了过后马上去域名解析那里进行txt解析。但是因为解析它是需要一定时间的,所以他自己给的120秒完全不够解析成功的时间,所以导致每一次几乎都是失败的。最开始我还不死心,连续试了好多次,然后导致还被拉黑了一段时间。(后来我看了一下,发现他是每个小时有一定的次数上限)

后来我还去网上找,找到了,有些人说frp的某一个端口是可以复用的,我按照那个方法试了半天,都没有成功,后来我才发现那个教程已经是2020年的了,而frp的配置文件在2022年就已经开始改版了,即使我使用了转换工具,这个时候转换出来的配置文件依然是不能用的。因为以前的配置文件的一些项已经变了名字。

所以怎么解决呢?接下来我就来讲讲解决的方法。

解决方法

其实这个解决方法它非常的暴力,就是开两个隧道。

首先我们要创建一个HTTP隧道,暂时不用HTTPS。当我们经过frp的正常操作,使我们的网站能够正常访问了过后,这个时候使用lnmp ssl add直接申请证书,我们就可以奇迹般的发现我们的Let's Encrypt在我们的网站没有办法使用443端口访问的时候,大发慈悲的给我们颁发了SSL证书。'

接下来的内容就相当简单了,再创建一个HTTPs隧道,映射到本地的443端口。等到我们发现HTTPS等隧道能够正常访问了过后,我们就可以直接删除http的隧道了。

以后的事情,只需要注意一下自动续签就可以了。

我现在都不敢相信,就这一个玩意儿折腾了我4个小时

Loading...