当前位置:

如何给网站升级SSL证书,并自动续期

makesoft |  2025-07-15
 1042人浏览

在群里小伙伴的推荐下,找到了 let's encrypt,一个免费的 SSL 证书颁发网站~

Let's Encrypt 是一个于 2015 年三季度推出的数字证书认证机构,旨在以自动化流程消除手动创建和安装证书的复杂流程,并推广使万维网服务器的加密连接无所不在,为安全网站提供免费的 SSL/TLS 证书。

说完 Let's Encrypt 后,还得再提到一个 acme.sh,它是用于从 Let‘s Encrypt 生成免费的证书,具备以下几个特点:

acme.sh地址:https://github.com/acmesh-official/acme.sh
  • 一个纯粹用 **Shell(Unix shell)**语言编写的 ACME 协议客户端。
  • 完整的 ACME 协议实施。 支持 ACME v1 和 ACME v2 支持 ACME v2 通配符证书
  • 简单,功能强大且易于使用。你只需要 3 分钟就可以学习它。
  • Let's Encrypt 免费证书客户端最简单的 Shell 脚本。
  • 纯粹用 Shell 编写,不依赖于 python 或官方的 Let's Encrypt 客户端。
  • 只需一个脚本即可自动颁发,续订和安装证书。 不需要 root/sudoer 访问权限。
  • 支持在 Docker 内使用,支持 IPv6。

安装 acme.sh

首先第一步,安装 acme.sh

curl https://get.acme.sh | sh -s email=my@example.com

执行完成后,会在 home 目录生成一个 .acme.sh 的隐藏文件夹,使用下面命令,进入到文件夹中


# 进入目录
cd ~/.acme.sh/

可以看到,里面生成了配置,其中最重要的就是 acme.sh 这个命令

同时,自动为你创建 crontab 每天 0:00 点自动检测所有的证书,如果快过期了, 需要更新, 则会自动更新证书。

执行 crontab -l 命令,即可看到对应的定时任务

同时,小伙伴在执行 acme.sh 的时候,不用担心脚本会污染已有的系统的任何功能和文件,因为所有的修改都会统一维护在 ~/.acme.sh 文件夹

生成 SSL 证书

在生成证书的啥时候,需要去验证一下域名,一般常用的验证方式就是:DNS 验证,也就是在域名解析的地方配置一条 TXT 记录

这种方式的好处是, 你不需要任何服务器, 不需要任何公网 IP , 只需要 DNS 的解析记录即可完成验证. 坏处是,如果不同时配置 Automatic DNS API,使用这种方式 acme.sh 将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。

DNS 方式的真正强大之处在于可以使用域名解析商提供的 API 自动添加 TXT 记录完成验证.

acme.sh 目前支持 阿里云 等数十种解析商的自动集成,以 阿里云 为例, 你需要先登录到 aliyun 账号,生成你的 AccessKey ID 和 AccessKey Secret,然后就可以开始生成证书了。

步骤如下,为了一劳永逸,我们给 acme.sh 开放一个阿里云子账户,授予管理云解析 (DNS) 的权限。

打开,阿里云:访问控制 -> 身份管理 -> 用户,然后创建一个子用户

地址:https://ram.console.aliyun.com/users

然后随便输入名称,勾选 OpenAPI 调用访问

创建成功后,记得保存这个用户的 AccessKey ID 和 AccessKey Secret,可以点击下载 CSV 文件下载到本地电脑。

然后在点击刚刚创建的用户,点击添加权限,选择:管理云解析(DNS)的权限

完成上述的所有操作后,回到服务器中,编辑环境变量文件

# 编辑文件
vim ~/.bashrc

添加刚刚获取的阿里云密钥

export Ali_Key="your_ali_key"
export Ali_Secret="your_ali_secret"


添加完成后,在使用 source 命令使其生效

source ~/.bashrc

下图是添加的位置:

安装证书

下面,我们为所有的域名,配置一下 DNS 解析,这里以 www 为例

acme.sh --issue --dns dns_ali -d www.makesoft.cn

执行完成后,证书就会自动生成了,同时我们在阿里云上,也会新增域名解析的记录,验证完成后也会自动删除对应的记录

同时,在 .acme.sh 目录下,就可以看到对应的证书了,命令为每个域名都生成了一个文件夹,里面存放证书的信息

证书生成以后,接下来需要把证书 copy 到真正需要用它的地方.

注意,默认生成的证书都放在安装目录下: ~/.acme.sh/,请不要直接使用此目录下的文件。

例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件。这里面的文件都是内部使用,而且目录结构可能会变化.

正确的使用方法是使用 --install-cert 命令,并指定目标位置, 然后证书文件会被 copy 到相应的位置,以蘑菇为例,所有的证书是存放在 /root/docker-compose/data/data/ssl/ 目录下的,所以我们需要将对应的证书的公私钥拷贝到对应的目录下:

# 给 www 安装证书
acme.sh --install-cert -d www.moguit.cn \
--key-file       /root/docker-compose/data/mogu_data/ssl/vue_mogu_web/www.moguit.cn.key  \
--fullchain-file /root/docker-compose/data/mogu_data/ssl/vue_mogu_web/www.moguit.cn._bundle.crt \

等完成所有的操作后,在重启一下蘑菇的 nginx 服务即可


docker-compose -f yaml/mogu_data down
docker-compose -f yaml/mogu_data up -d 

等待一段时间后,即可看到网站已经能够顺利的访问了,并且也加上了小锁,表示是安全的 https 网站

文章评论

排名:
这家伙很懒,什么都没有留下
经验值
经验值:undefined/undefined
0
文章
0
评论
0
勋章
0
动态
0
粉丝
0
关注
获得勋章: