跳到主要内容
数字拾光柯影数智 DEVKIT
首页技术博客柯影实验室探索柯影开发资源开发者
数字拾光

柯影数智开发团队的技术博客、自研产品与开发资源平台。

内容技术博客柯影实验室探索柯影
资源命令速查快捷键常用站点
联系开发者1090461393@qq.com
© 2026 数字拾光 · 柯影数智 DevKit
陕ICP备2026003553号-2工信部备案管理系统
Built for makers, by makers.
← 返回技术博客
云原生与运维8 分钟阅读

Mac 免费申请 Let’s Encrypt SSL 证书完整教程

在 Mac 上也能免费签发 SSL 证书。本教程从 Homebrew 安装开始,使用 Certbot 对接 Let’s Encrypt,通过 DNS 验证完成域名证书申请,并介绍证书文件、通配符证书、续期与服务器部署等实用操作。

柯影数智团队2026年9月14日 发布
Mac 免费申请 Let’s Encrypt SSL 证书完整教程

01|准备工作

开始之前,需要准备:

  • 一台 macOS 电脑

  • 一个自己可以管理 DNS 的域名,例如 example.com

  • 可以登录域名 DNS 控制台

  • Terminal 终端

  • 网络连接

整个流程可以理解为:

text
Mac
 │
 ├── Homebrew
 │
 ├── Certbot
 │
 ↓
Let's Encrypt
 │
 ↓
验证域名所有权
 │
 ↓
签发 SSL/TLS 证书
 │
 ↓
fullchain.pem
privkey.pem

Let’s Encrypt 证书本身免费,Certbot 也是免费、开源的 ACME 客户端。


02|安装 Xcode Command Line Tools

打开 Mac 的「终端 Terminal」。 执行:

bash
xcode-select --install

如果已经安装,系统可能提示:

text
command line tools are already installed

那就可以直接进入下一步。 Homebrew 官方文档将 Xcode Command Line Tools 列为 macOS 支持安装环境的一部分。


03|安装 Homebrew

如果你的 Mac 还没有 Brew,可以先检查:

bash
brew --version

如果提示:

text
command not found: brew

说明还没有安装。使用 Homebrew 官方安装脚本:

bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安装过程中可能要求输入 Mac 登录密码。

注意

注意:终端输入密码时不会显示 * 号或字符,直接是🔑符号,输入密码后按回车即可。

Apple Silicon Mac 配置环境变量 M1、M2、M3、M4、M5 等 Apple Silicon Mac,Homebrew 默认安装在:

text
/opt/homebrew

Homebrew 官方文档也确认 Apple Silicon 默认 prefix 为 /opt/homebrew,Intel Mac 通常为 /usr/local。 如果安装结束后提示 brew: command not found,执行:

bash
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
# 然后:
eval "$(/opt/homebrew/bin/brew shellenv)"
# 检查
brew --version

正常看到版本号即可。


04|更新 Homebrew

bash
# 执行
brew update
# 然后可以检查一下环境:
brew doctor
text
# 如果显示类似:
Your system is ready to brew.

基本就没有问题。


05|通过 Brew 安装 Certbot

接下来才进入 SSL 证书签发的核心步骤。

bash
# 执行:
brew install certbot
# 这是 Certbot 官方针对 macOS 给出的安装方式,同时 Homebrew 当前也直接提供 
# certbot Formula。安装完成后检查:
certbot --version

例如:

text
certbot 5.x.x

就说明安装成功。


06|开始申请 SSL 证书

这里推荐 Mac 用户采用 DNS Challenge。 例如现在拥有:

text
example.com
# 想同时申请:
example.com
www.example.com

执行:

bash
sudo certbot certonly \
  --manual \
  --preferred-challenges dns \
  -d example.com \
  -d www.example.com

第一次执行时 Certbot 会要求填写邮箱,例如:

text
Enter email address:

输入自己的邮箱。然后需要同意服务条款。之后 Certbot 会要求证明:

这个域名确实是你的。


07|添加 DNS TXT 验证记录

Certbot 会给出类似提示:

text
Please deploy a DNS TXT record under the name:

_acme-challenge.example.com

with the following value:

xxxxxxxxxxxxxxxxxxxxxxxx

这一步非常关键。 进入你的 DNS 服务商控制台。 无论域名 DNS 托管在阿里云、腾讯云、Cloudflare 或其他服务商,本质操作都是:

text
记录类型:TXT

主机记录:
_acme-challenge

记录值:
xxxxxxxxxxxxxxxxxxxxxxxx

最终 DNS 中应该存在:

text
_acme-challenge.example.com

        │

        └── TXT → xxxxxxxxxxxxxxxxx

先不要在 Certbot 中按回车。需要等 TXT DNS 记录生效。


08|检查 TXT 是否生效

Mac 自带 dig,所以可以直接执行:

bash
dig TXT _acme-challenge.example.com

如果返回结果中已经出现 Certbot 给出的 TXT 内容,例如:

text
_acme-challenge.example.com.
300 IN TXT "xxxxxxxxxxxxxxxxxxxxxxxx"

说明 DNS 基本已经生效。这时候再回到 Certbot:

text
Press Enter to Continue
# 按
Enter

Certbot 就会让 Let’s Encrypt 验证 DNS。


09|签发成功

成功后通常会看到类似:

text
Successfully received certificate.

证书通常会保存在 Certbot 管理的目录中,例如:

text
/etc/letsencrypt/live/example.com/

查看:

bash
sudo ls -la /etc/letsencrypt/live/example.com/

里面最重要的是:

text
cert.pem
chain.pem
fullchain.pem
privkey.pem

其中部署 HTTPS 最常用的是:

text
fullchain.pem
privkey.pem
简单理解

fullchain.pem ↓ 服务器证书 + 中间证书链 privkey.pem ↓ 证书私钥

privkey.pem 属于敏感文件,不要上传 GitHub、公开网盘或发给其他人。


10|申请通配符证书

如果希望一个证书覆盖:

text
api.example.com
www.example.com
blog.example.com
app.example.com

可以申请:

text
*.example.com

执行:

bash
sudo certbot certonly \
  --manual \
  --preferred-challenges dns \
  -d example.com \
  -d "*.example.com"

这里一定要注意:

bash
"*.example.com"

建议加引号,避免 Shell 对 * 做通配符展开。 通配符证书需要使用 DNS 验证。Certbot 官方的 wildcard 流程也提供 DNS 插件或手动 DNS 验证方案。 这样一张证书就可以覆盖:

text
example.com
*.example.com

对于有多个 API、Web、后台等子域名的项目非常实用。


11|查看已经申请的证书

执行:

bash
sudo certbot certificates

可以看到类似:

text
Certificate Name: example.com

Domains:
example.com *.example.com

Certificate Path:
/etc/letsencrypt/live/example.com/fullchain.pem

Private Key Path:
/etc/letsencrypt/live/example.com/privkey.pem

以后忘记证书位置时,这条命令非常实用。


12|测试续期

如果使用的是支持自动续期的验证方式,可以测试:

bash
sudo certbot renew --dry-run

Certbot 官方也推荐使用 renew --dry-run 检查续期流程。 不过这里有一个非常重要的区别:如果前面使用:

text
--manual

手动添加 TXT 记录,那么它不适合直接做无人值守自动续期,因为下一次验证时仍需要修改 DNS TXT 记录。如果准备长期用于生产环境,更推荐下一步改成:

text
Certbot
   │
   ↓
DNS Provider API
   │
   ↓
自动创建 TXT
   │
   ↓
Let's Encrypt 验证
   │
   ↓
自动签发
   │
   ↓
自动续期

Certbot 官方在 macOS 上也支持安装相应 DNS Provider 插件,例如:

bash
$(brew --prefix certbot)/libexec/bin/python3 -m pip install certbot-dns-<PLUGIN>

13|如果网站就在这台 Mac 上

还有另一种方案。 如果 Mac 自己就是公网 Web Server,而且公网可以访问它的 80 端口,可以执行:

bash
sudo certbot certonly --standalone

Certbot 会临时启动一个 Web Server 完成 HTTP 验证。官方明确说明 standalone 不要求已有网站,但公网必须能够访问该机器的 80 端口。 如果已经运行网站,不希望关闭 Web Server,则可以:

bash
sudo certbot certonly --webroot

如果 Mac 上运行的是 Nginx,还可以:

bash
sudo certbot --nginx

官方的 macOS + Nginx 指南支持 Certbot 自动获取证书并修改 Nginx 配置。

如果你的需求是“Mac 作为证书申请机器,签发后把证书部署到其他服务器”,我更推荐:

text
安装 Xcode CLT
       ↓
安装 Homebrew
       ↓
brew install certbot
       ↓
Certbot DNS Challenge
       ↓
DNS 添加 TXT
       ↓
Let's Encrypt 验证
       ↓
获得证书
       ↓
fullchain.pem + privkey.pem
       ↓
部署到 Nginx / NAS / API / Web Server安装 Xcode CLT
       ↓
安装 Homebrew
       ↓
brew install certbot
       ↓
Certbot DNS Challenge
       ↓
DNS 添加 TXT
       ↓
Let's Encrypt 验证
       ↓
获得证书
       ↓
fullchain.pem + privkey.pem
       ↓
部署到 Nginx / NAS / API / Web Server
macOSSSLHTTPSLet's EncryptCertbotHomebrewDNS验证TLS网站部署运维教程
ABOUT THE AUTHOR柯影数智团队

专注开发工具、AI 工作流与团队工程效率。

了解团队