手把手教你申请免费https证书 acme.sh

手把手教你申请免费https证书 acme.sh

acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书.

主要步骤:

  1. 安装 acme.sh
  2. 生成证书
  3. copy 证书到 nginx
  4. 更新 acme.sh

1. 安装 acme.sh

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

普通用户和 root 用户都可以安装使用。

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

由于某些因素,GitHub的raw.githubusercontent.com域名解析被墙了。所以现在安装需要额外增加几个操作:

# 访问 https://www.ipaddress.com/查询 raw.githubusercontent.com, github.com的真实IP
sudo vi /etc/hosts
# 增加域名映射
185.199.108.133 raw.githubusercontent.com
185.199.109.133 raw.githubusercontent.com
185.199.110.133 raw.githubusercontent.com
185.199.111.133 raw.githubusercontent.com
140.82.112.3 github.com

# 生效
sudo /etc/init.d/network restart

创建一个alias方便调用

alias acme.sh=~/.acme.sh/acme.sh

手把手教你申请免费https证书 acme.sh

2. 生成证书

v3 acme.sh 使用 Zerossl 作为默认证书颁发机构 (CA), 在颁发新证书之前需要进行账户注册(一次性)

  • 直接执行生成DNS解析记录命令会提醒你进行账户注册 :
    手把手教你申请免费https证书 acme.sh
  • 注册
    手把手教你申请免费https证书 acme.sh
  • 设置默认CA
    手把手教你申请免费https证书 acme.sh

域名验证的几种方式:

# 1 手动添加 dns 方式, 在域名上添加一条 txt 解析记录, 验证域名所有权.
# 生成相应的解析记录
acme.sh --issue -d www.baidu.com --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please
# 在域名管理面板中添加这条 txt 记录即可, 等待解析完成之后, 重新生成证书
acme.sh --renew -d www.baidu.com  --yes-I-know-dns-manual-mode-enough-go-ahead-please

# 2 dns api 秘钥需到域名管理面板获取
export Ali_Key="xxxxxx"
export Ali_Secret="xxxxxx"
acme.sh --issue --dns dns_ali -d www.baidu.com

这里仅演示手动添加dns方式

  • 生成解析记录
    手把手教你申请免费https证书 acme.sh
  • 添加解析记录
    复制上图中域名解析文本到域名管理面板添加解析文本记录
    手把手教你申请免费https证书 acme.sh
  • 申请证书
    手把手教你申请免费https证书 acme.sh
    手把手教你申请免费https证书 acme.sh

3.copy/安装证书

注意, 默认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的文件, 例如: 不要直接让 nginx 的配置文件使用这下面的文件. 这里面的文件都是内部使用, 而且目录结构可能会变化.

正确的使用方法是使用 --install-cert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置, 例如:

acme.sh --install-cert -d www.baidu.com \
--key-file       /etc/letsencrypt/live/www.baidu.com/privkey.pem  \
--fullchain-file /etc/letsencrypt/live/www.baidu.com/fullchain.pem \
--reloadcmd     "sudo /data/nginx/sbin/nginx -s reload"
  • 安装

手把手教你申请免费https证书 acme.sh

4.更新 acme.sh

目前由于 acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步.

升级 acme.sh 到最新版 :

acme.sh --upgrade

如果你不想手动升级, 可以开启自动升级:

acme.sh  --upgrade  --auto-upgrade

之后, acme.sh 就会自动保持更新了.

对你有用的话, 就帮忙点个赞吧 ~

上一篇:Fastjson 1.2.22-24 反序列化漏洞分析(2)


下一篇:Linux进程