使用ACME脚本申请并配置 SSL 证书

本文总阅读量: 114514 评论数:1919810
本文最后更新于 超过 2 年前,文中所描述的信息可能已发生改变。

为什么选择ACME

要想通过 TLS 访问自己域名下的服务, 就必须申请证书。类似宝塔这种面板提供了简单快捷的方法一键申请, 但终究不是良好的解决方案。一来宝塔过于臃肿, 二来其需要手机实名验证。使用各大云服务商提供的【免费证书】则还需要登录网页、申请、导入证书, 未免操作繁琐。更何况这些云服务商提供的证书只能给你很少的自由选择性。

而ACME则很好地解决了这些问题。

系统环境: Debian

准备工作与脚本安装

在开始之前, 首先将域名解析到服务器的ip上。

安装

首先安装socat, 它是acme所需的组件

shell
apt update
apt install socat -y

然后安装acme脚本

shell
curl https://get.acme.sh | sh

脚本安装在用户目录下的.acme.sh(隐藏)文件夹内, 使用 . .bashrc 让acme.sh命令生效

接下来使用脚本申请证书

证书申请

首先注册CA账户, 将下列命令中的邮箱改为自己的邮箱地址

shell
acme.sh --register-account -m xxxx@xxxx.com

注册成功的输出结果如下

1_注册成功

然后申请证书, 接下来的方法有多种, 根据自己情况选择可用的一种即可

监听80端口申请证书

如果服务器的80端口空闲, 且能够访问, 可以让acme临时监听80端口, 完成验证。执行以下命令即可。将domain.com改为自己的域名

shell
acme.sh --issue -d domain.com --standalone

通过Nginx服务申请

如果服务器上已经安装了nginx, 且网页能够正常打开, 执行以下命令即可通过nginx验证并申请证书。

shell
acme.sh --issue -d mydomain.com --nginx

如果成功申请了证书, 将会看到的输出结果是一长串自己的证书和证书文件存放路径。

安装证书到指定路径

生成的证书文件默认存放在与acme.sh脚本相同文件夹内, 大多数情况下不应直接使用该路径下的证书文件, 而使用以下命令安装证书到指定路径。

shell
acme.sh --install-cert -d domain.com --key-file <path>privkey.pem --fullchain-file <path>fullchain.pem

其中--key-file <path>privkey.pem指定的为私钥文件, --fullchain-file <path>fullchain.pem为证书文件。

done

善后工作

在安装acme.sh脚本时, 它自动为创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书。 但由于acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也应当经常更新以保持同步。参考以下命令

shell
acme.sh --upgrade --auto-upgrade  #开启acme的自动更新
acme.sh --upgrade --auto-upgrade 0  #关闭自动更新
Minecraft开服入门
使用官方脚本一键安装docker|安装docker-compose
Valaxy v0.19.12 驱动 | 主题 - Yun v0.19.12
本站已勉强运行0 天0 小时0 分0 秒(ノ`Д)ノ