ubuntu 使用 acme 工具免费申请 SSL 证书

安装 acme 工具

# 提前安装依赖
sudo apt install socat

# 切换为 root 用户, 后边的操作均使用 root 用户(acme 官方推荐)
sudo -i

# wget 默认下载到文件, 使用 '-' 表示输出到标准输出, 经管道提供给 sh 执行
wget -O - https://get.acme.sh | sh -s email=my@example.com
或者
# curl 默认下载到标准输出
curl https://get.acme.sh | sh -s email=my@example.com

安装会完成以下内容:

  1. 创建安装目录 ~/.acme.sh, 即 /root/.acme.sh
  2. 创建别名 alias acme.sh=~/.acme.sh/acme.sh
  3. 创建一个定时任务(用于证书的续签)
# 查看定时任务
$ crontab -l
48 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

最后不要忘了 source ~/.bashrc, 不然别名没有生效


如果想卸载 acme 工具, 可以执行:

$ acme.sh --uninstall
$ rm -r ~/.acme.sh

签发 SSL 证书

使用 HTTP/HTTPS 验证

前提: 域名(假设为 example.com)绑定到了当前服务器的公网 IP 地址

Standalone 模式

该模式下, acme.sh 自动建立服务器来完成签发, 需要临时占用 80 或 443 端口(需要 root 权限, 所以上面需要切换为 root 用户)

# HTTP
acme.sh --issue -d example.com --standalone -k ec-256
# 或者使用 TLS
acme.sh --issue -d example.com --alpn --standalone -k ec-256

这里使用了 ec-256 秘钥, 性能比 rsa-4096 更好

可以通过 -d 参数指定多个子域名

acme.sh --issue -d example.com -d www.example.com --standalone -k ec-256

使用 DNS 手动验证
$ acme.sh --issue --dns -d example.com

得到以下输出:

Add the following txt record:
Domain:_acme-challenge.example.com
Txt value:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c

Please add those txt records to the domains. Waiting for the dns to take effect.

紧接着手动添加一条 TXT 类型的 DNS 解析记录

这里以阿里云的 DNS 解析配置界面为例:

使用这种方式时, 没法自动续签证书, 只能每 60 天手动更新一次 DNS 的解析配置


安装证书

将证书和密钥移动至 /home/admin 目录

$ acme.sh --installcert -d example.com --fullchainpath /home/admin/example.crt --keypath /home/admin/example.key --ecc

上文的 ec-256 属于 ECC 证书, 此处添加了 --ecc 选项


更新证书

默认会自动更新证书(DNS 模式除外), 也可以手动强制更新证书, 当然快要到期时会自动给 my@example.com 发送邮件

$ acme.sh --renew -d example.com --force --ecc
### 如何申请免费SSL证书 #### Let's Encrypt SSL证书概述 Let's Encrypt 是一个由非盈利组织 Internet Security Research Group(ISRG)支持的服务,旨在通过提供免费SSL/TLS证书来促进HTTPS在全球范围内的应用,从而提升网站安全性[^1]。 #### 准备工作 为了顺利申请Let's Encrypt SSL证书,需确保服务器环境满足以下条件: - 已经拥有合法注册的域名 - 服务器能够响应来自互联网的HTTP请求 - 安装ACME客户端工具,如Certbot #### 申请流程 ##### 配置DNS解析记录 确认域名指向正确的IP地址,并设置好相应的A/AAAA记录以及可能需要的CNAME记录。 ##### 下载并安装Certbot 对于大多数Linux发行版而言,可以通过包管理器直接安装Certbot。例如,在Ubuntu上可以执行如下命令完成安装: ```bash sudo apt update && sudo apt install certbot python3-certbot-apache ``` 如果使用的是Nginx,则应替换`python3-certbot-apache`为`python3-certbot-nginx`。 ##### 获取证书 运行Certbot并与Web服务器插件配合以简化过程。这里假设正在使用的Web服务器是Apache: ```bash sudo certbot --apache -d example.com -d www.example.com ``` 此操作会引导用户完成验证域名所有权的过程,并自动生成必要的SSL配置文件[^2]。 ##### 自动化更新机制 由于Let's Encrypt颁发的证书有效期仅为90天,建议启用自动续期功能。通常情况下,默认安装已经包含了定时任务用于处理这一需求;也可以手动测试续签过程: ```bash sudo certbot renew --dry-run ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值