惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
月光博客
月光博客
S
SegmentFault 最新的问题
有赞技术团队
有赞技术团队
Stack Overflow Blog
Stack Overflow Blog
Engineering at Meta
Engineering at Meta
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
IT之家
IT之家
宝玉的分享
宝玉的分享
A
About on SuperTechFans
Vercel News
Vercel News
P
Proofpoint News Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 【当耐特】
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
Visual Studio Blog
Jina AI
Jina AI
Y
Y Combinator Blog
T
Tailwind CSS Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI

龙天小筑

Stable Diffusion Webui无显卡安装 - 龙天小筑 Stable Diffusion Webui无显卡安装 - 龙天小筑 Stable Diffusion Webui无显卡安装 | 龙天小筑 Stable Diffusion Webui无显卡安装 | 龙天小筑 诸城印象2022-嵊州 诸城印象2022-嵊州 - 龙天小筑 诸城印象2022-嵊州 | 龙天小筑 诸城印象2022-嵊州 | 龙天小筑 COVID-19抗疫备忘 COVID-19抗疫备忘 - 龙天小筑 COVID-19抗疫备忘 | 龙天小筑 COVID-19抗疫备忘 | 龙天小筑 诸城印象2022—珠海 诸城印象2022—珠海 - 龙天小筑 诸城印象2022—珠海 | 龙天小筑 诸城印象2022—珠海 | 龙天小筑 LNMP环境下WordPress站点健康状态问题清零 LNMP环境下WordPress站点健康状态问题清零 - 龙天小筑 LNMP环境下WordPress站点健康状态问题清零 | 龙天小筑 LNMP环境下WordPress站点健康状态问题清零 | 龙天小筑 越狱iOS安装TikTok踩坑指南 越狱iOS安装TikTok踩坑指南 - 龙天小筑 越狱iOS安装TikTok踩坑指南 | 龙天小筑 越狱iOS安装TikTok踩坑指南 | 龙天小筑 再次启用SSL 再次启用SSL | 龙天小筑 再次启用SSL | 龙天小筑 RSA/3DES及加解密 RSA/3DES及加解密 - 龙天小筑 RSA/3DES及加解密 | 龙天小筑
再次启用SSL - 龙天小筑
龙天 · 2021-11-11 · via 龙天小筑

看着浏览器网址前面有个小锁,还是让人安心许多啊。

之前主机上装了宝塔,于是开启过SSL。但是宝塔的架构似乎是基于Python,而且作为廉价VPS用户。多余的宝塔面板带来的性能损失某些时候是不可忍受的——每天总有一点时间网站有问题,监控宝每天都要发几条警报。所以换到阿里云的轻量服务器的同时,换回了标准LNMP。于是SSL也就随之关闭,继续裸奔。

这几天搞RSA,觉得SSL还是有必要的,于是前天写完文章就开始搞SSL。WP提供了“Really Simple SSL”插件,号称可以一键开启SSL。然而插件运行过程中的逻辑需要访问Web根目录的上一级目录,感觉在大部分VPS上这个都是不允许的越权。所以无论我怎么手动建立目录,RSSSL都没办法完成建立目录那一步。

回到LNMP官网,发现LNMP里面已经带了SSL脚本,试了一下发现也有些坑。鉴于LNMP官网的信息稍有些滞后,我这里整理下我目前遇到的坑。以下信息基于LNMP 1.8,在2021年双十一有效——限定时间是因为有些BUG是跟时间相关的。开源软件的老问题:版本兼容性似乎并不是某些开发者所在乎的事情。

LNMP的SSL安装从1.5以后基本没什么变化,基本教程可以参考LNMP官网的这篇文章。但是有一些细节需要补充:

首先,lnmp dnsssl xx 这条指令是新建网站且添加SSL,现有网站添加SSL需要使用lnmp ssl add指令。这个在每个版本的发布页里面有写:

LNMP一键安装包 V1.8 正式版

已存在虚拟主机添加SSL:lnmp ssl add
通过DNS API方式生成证书并创建虚拟主机:lnmp dns {cx|dp|ali|…}
只通过DNS API方式生成SSL证书:lnmp onlyssl {cx|dp|ali|…}

LNMP的SSL脚本基于ACME.sh脚本实现,这是一个国人写的可以从 Letsencrypt生成免费的证书的脚本。这个脚本在执行时,如果是基于域名认证的,需要提供域名的API key和token,也就是教程里写到的需要做两个export。此外在近期ACME.sh似乎做了升级,默认的SSL证书生成提供方从 Letsencrypt切换到了ZeroSSL。这就造成了第一个问题:ZeroSSL需要使用邮箱注册一个账号。但LNMP里面带的ACME.sh并没有设置账号,导致申请时会提示如下信息:

Using CA: https://acme.zerossl.com/v2/DV90
No EAB credentials found for ZeroSSL, let's get one
acme.sh is using ZeroSSL as default CA now.
Please update your account with an email address first.

这个解决方案很简单,LNMP将acme.sh安装在/usr/local/acme.sh,只要在这个目录下的account.conf内添加一行:

ACCOUNT_EMAIL='xxx@xxx.com'

随后需要注意的是,在LNMP的SSL脚本执行时,输入域名那里有些让人迷惑。如果你想为自己的网站申请SSL,注意如下的坑:

  • 在ZeroSSL上支持泛域名解析,但不支持www子域名直接申请。因此直接申请为*.dragongod.net建立SSL证书就可以;
  • 由于添加的另一个域名不能与主域名有交叉。所以申请为dragongod.net和*.dragongod.net同时建立SSL的话会报错;
  • 只为dragongod.net申请SSL证书的话,可以申请通过,但浏览器打开时会有警告,因为证书是为dragongod.net生成的,但打开的网站是www.dragongod.net。所以会有不符合的警告;

如果还是希望用Letsencrypt,那么可以执行一次:

acme.sh --set-default-ca --server letsencrypt

这将会修改account.conf,将默认SSL服务提供方修改为 Letsencrypt。使用 Letsencrypt时需要注意的是它似乎不支持泛域名解析,所以直接为www子域名申请即可。

LNMP内开启SSL之后,稍微等一会儿,再到Wordpress后台去看Really Simple SSL,就会提示SSL已开启,还有些其他的警告或者设置需要完成,按照提示进行优化和设置,可以避免一些常见的SSL开启后的问题,确保正常开启SSL。

另外,在使用acme.sh时,如果因为(手贱)测试生成了多个证书,记得在弄完以后bash里看一下:

acme.sh --list

不需要的证书可以删除,不占用公共资源也是一种美德。

acme.sh --remove -d example.com