侧边栏壁纸
  • 累计撰写 16 篇文章
  • 累计创建 17 个标签
  • 累计收到 3 条评论

Let's Encrypt 免费的 SSL 证书

soar
2024-04-08 / 0 评论 / 0 点赞 / 385 阅读 / 2,546 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2024-04-08,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

在群里小伙伴的推荐下,找到了 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 v1ACME 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 这个命令

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

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

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

生成 SSL 证书

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

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

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

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

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

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

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

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

创建成功后,记得保存这个用户的 AccessKey IDAccessKey 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.moguit.cn

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

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

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

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

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

正确的使用方法是使用 --install-cert 命令,并指定目标位置, 然后证书文件会被 copy 到相应的位置,以蘑菇为例,所有的证书是存放在 /root/docker-compose/data/mogu_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 

等待一段时间后,即可看到网站已经能够顺利的访问了,并且也加上了/

巨人肩膀

0
博主关闭了当前页面的评论