所有入门指南 快速开始

如何获取免费 SSL 证书(分步指南)

免费 SSL 证书可以加密访客与你网站之间的连接,保护密码、支付信息和个人数据。整个过程大约 5 分钟,不花一分钱。

速览版:

  1. 打开 gethttps.com/app/setup — 无需安装,无需账号
  2. 输入你的域名
  3. 完成域名验证(在服务器放置文件或添加 DNS 记录)
  4. 下载证书文件
  5. 安装到服务器(NginxApachecPanelWordPressIIS

以下是完整详细指南。


为什么需要 SSL 证书

  • 浏览器会把 HTTP 网站标记为”不安全” — Chrome、Firefox、Edge 都会在地址栏显示警告,访客会离开
  • Google 将 HTTPS 作为排名信号 — 从 2014 年开始,HTTP 网站排名更低
  • 没有 HTTPS 的表单和登录会以明文传输数据 — 同一网络上的任何人都能读取密码、信用卡号和个人信息
  • HTTP 页面可以在传输过程中被篡改 — ISP 和攻击者可以注入广告、追踪代码或恶意软件
  • HTTPS 是免费的 — 没有理由不使用

4 种获取免费 SSL 证书的方法

方法适合安装方式自动续签耗时
GetHTTPS(浏览器)所有人 — 无需安装、无需服务器访问手动5 分钟
主机提供商带 cPanel/Plesk 的共享主机自动通常是2 分钟
Certbot(命令行)有 root 权限的服务器管理员自动10 分钟
Cloudflare(CDN)已使用 Cloudflare 的网站自动5 分钟

本指南重点介绍 方法 1(GetHTTPS),因为它适用于任何环境 — 共享主机、VPS、独立服务器或任何可以上传文件的平台。


方法 1:GetHTTPS(推荐 — 适用于所有环境)

前置条件

  • 一个已注册的域名,指向你控制的服务器
  • 以下访问权限之一(用于域名验证):
    • 服务器的文件系统 — 放置验证文件(HTTP-01 验证
    • 域名的 DNS 设置 — 添加 TXT 记录(DNS-01 验证
  • 现代浏览器 — Chrome、Firefox、Edge 或 Safari

该选哪种验证方式? HTTP-01 对大多数人更简单。DNS-01 是获取通配符证书*.example.com)的必选项。详见 HTTP-01 指南DNS-01 指南

步骤 1:打开 GetHTTPS

访问 gethttps.com/app/setup

GetHTTPS 会自动在你的浏览器中生成两对密钥:

  • 账户密钥 — P-256 ECDSA 密钥对,用于标识你的 Let’s Encrypt 账户,签名所有 ACME 请求
  • 证书密钥 — 你 SSL 证书的密钥对。默认 ECDSA P-256(推荐),可选 RSA 2048

两个密钥都使用浏览器内置的 Web Crypto API 生成。它们仅存在于浏览器内存中,从不发送到任何服务器 — 包括 GetHTTPS 的服务器。这是与 SSL For Free(在服务器端生成密钥)或 ZeroSSL(可能在服务器端生成密钥)相比的核心隐私优势。

步骤 2:添加域名

输入要保护的域名:

需求输入内容备注
单个域名example.com最基本的设置
域名 + wwwexample.com + www.example.com大多数网站推荐
通配符*.example.com覆盖所有子域名;需要 DNS-01
多个域名example.com + blog.example.com + shop.example.comSAN 证书

提示: 输入 example.com 后,GetHTTPS 会提示你同时添加 www.example.com(反之亦然)。大多数网站应该两个都保护。

步骤 3:完成域名验证

Let’s Encrypt 需要验证你对域名的控制权。两种方式可选:

方式 A:HTTP-01 验证(更简单,适合大多数人)

Let’s Encrypt 提供一个 token。你需要在服务器上的指定 URL 放置一个文件。

  1. GetHTTPS 显示一个文件名文件内容(一长串 token 字符串)
  2. 在服务器上创建该文件:
    http://yourdomain.com/.well-known/acme-challenge/TOKEN_FILENAME
  3. 文件必须通过 HTTP(端口 80) 访问 — 即使你的网站已经启用了 HTTPS
  4. 在 GetHTTPS 中点击验证

按平台创建文件的方法:

SSH 访问(Linux 上的 Nginx/Apache):

# 创建目录(如果不存在)
mkdir -p /var/www/html/.well-known/acme-challenge/

# 创建验证文件 — 使用 GetHTTPS 显示的确切值
echo "GETHTTPS_显示的_TOKEN_内容" > /var/www/html/.well-known/acme-challenge/TOKEN_文件名

# 验证是否可访问
curl http://yourdomain.com/.well-known/acme-challenge/TOKEN_文件名

cPanel 文件管理器:

  1. 进入文件管理器 → 导航到 public_html
  2. 创建文件夹 .well-known → 在其中创建 acme-challenge
  3. 用 token 文件名创建新文件,粘贴 token 内容
  4. 确保文件权限为 644(可被 Web 服务器读取)

FTP:

  1. 通过 FTP 连接到网站根目录
  2. 导航到(或创建).well-known/acme-challenge/
  3. 上传包含 token 内容的文本文件

常见问题: 某些 Web 服务器默认不提供 .well-known 目录的文件。如果返回 404,检查服务器配置。Nginx 可能需要在配置中添加 location ~ /\.well-known { allow all; }

方式 B:DNS-01 验证(通配符证书必选)

在域名的 DNS 设置中添加一条 TXT 记录。

  1. GetHTTPS 显示一个记录名(如 _acme-challenge.example.com)和记录值(一长串哈希值)
  2. 去你的 DNS 提供商添加 TXT 记录
  3. 等待 DNS 传播(通常 1-5 分钟)
  4. 在 GetHTTPS 中点击验证

DNS 提供商速查表:

提供商在哪里添加 TXT 记录TTL 设置
CloudflareDNS → 记录 → 添加记录 → 类型:TXT自动
AWS Route 53托管区域 → 你的域名 → 创建记录 → TXT300
GoDaddyDNS 管理 → 添加 → 类型:TXT1 小时
Namecheap域名列表 → 管理 → 高级 DNS → 添加新记录 → TXT自动
Google DomainsDNS → 自定义记录 → 管理 → 创建新记录 → TXT自动
DigitalOcean网络 → 域名 → 你的域名 → 添加记录 → TXT30

预检验证(GetHTTPS 独有功能)

在提交给 Let’s Encrypt 之前,GetHTTPS 会通过 Google 的 DNS-over-HTTPS API 从公网预检你的验证配置。这能发现以下错误:

  • 文件内容或权限错误
  • 端口 80 上文件不可访问
  • DNS 记录尚未传播
  • 防火墙阻止了请求
  • Cloudflare 代理拦截了验证请求

预检失败时,GetHTTPS 会告诉你具体问题 — 让你在浪费速率限制次数之前修复。

这是其他浏览器工具没有的功能。 SSL For Free 和 ZeroSSL 直接提交给 CA,出错后你才知道。

步骤 4:下载证书文件

验证通过后,Let’s Encrypt 签发证书。GetHTTPS 提供四个文件

文件内容用途
privkey.pem你的私钥 — 务必保密!所有服务器都需要
cert.pem你的 SSL 证书(仅终端实体)Apache 等部分配置
chain.pemLet’s Encrypt 的中间 CA 证书Apache 等部分配置
fullchain.pemcert.pem + chain.pem 合并Nginx 和大多数服务器

下载全部四个文件。 不同服务器需要不同的组合 — 四个都有就能适配所有平台。

安全提醒: 妥善保管 privkey.pem。任何拥有此文件的人都可以冒充你的网站。不要通过邮件发送,不要提交到 Git,不要放在公开目录。

步骤 5:安装到服务器

选择你的平台:

平台安装指南需要的文件
Nginx完整指南 →fullchain.pem + privkey.pem
Apache完整指南 →cert.pem + chain.pem + privkey.pem
cPanel完整指南 →粘贴三个文件的内容
WordPress完整指南 →取决于主机(cPanel/Nginx/Apache)
Windows IIS完整指南 →需先转换为 PFX 格式
Docker完整指南 →挂载 fullchain.pem + privkey.pem

快速安装 — Nginx:

server {
    listen 443 ssl http2;
    server_name example.com www.example.com;

    ssl_certificate     /etc/ssl/fullchain.pem;
    ssl_certificate_key /etc/ssl/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers off;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;

    add_header Strict-Transport-Security "max-age=63072000" always;

    root /var/www/html;
    index index.html;
}
sudo nginx -t && sudo systemctl reload nginx

快速安装 — Apache:

<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com

    SSLEngine on
    SSLCertificateFile      /etc/ssl/cert.pem
    SSLCertificateKeyFile   /etc/ssl/privkey.pem
    SSLCertificateChainFile /etc/ssl/chain.pem

    SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
    SSLHonorCipherOrder off

    DocumentRoot /var/www/html
</VirtualHost>
sudo apachectl configtest && sudo systemctl reload apache2

步骤 6:设置 HTTP 到 HTTPS 重定向

强制所有流量使用加密连接。没有重定向的话,通过 http:// 访问的用户无法享受证书的保护。

Nginx:

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

Apache (.htaccess):

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

完整重定向指南(含 www/非 www、代理场景、故障排除)→

步骤 7:验证一切正常

浏览器检查:

  1. 访问 https://yourdomain.com
  2. 点击锁头图标 → “证书”或”连接是安全的”
  3. 确认:签发者为 “Let’s Encrypt”,约 90 天后过期,域名匹配

命令行检查:

echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null \
  | openssl x509 -noout -subject -issuer -dates

在线检查:SSL Labs 测试中输入域名,获得详细报告。

检查混合内容: 打开浏览器开发者工具(F12)→ Console 标签,查看 “Mixed Content” 警告。如何修复混合内容 →


续签

Let’s Encrypt 证书在 90 天后过期。在第 60 天之前续签,留出安全余量。

用 GetHTTPS 续签(手动):

  1. 再次访问 gethttps.com/app/setup
  2. 重新输入域名并完成新的验证
  3. 替换服务器上的证书文件
  4. 重载 Web 服务器(sudo systemctl reload nginx

用 Certbot 续签(自动): 想要零干预续签的话,在服务器上安装 Certbot。很多团队用 GetHTTPS 获取第一张证书,用 Certbot 处理后续自动续签。

完整续签指南 →


方法 2:主机提供商(可用时最简单)

很多主机包含免费 SSL:

主机如何启用自动续签
HostingerhPanel → 安全 → SSL✅ AutoSSL
SiteGroundSite Tools → 安全 → SSL 管理器
Bluehost我的网站 → 安全 → SSL
NamecheapcPanel → SSL/TLS 状态✅ AutoSSL
DigitalOcean无内置 — 使用 GetHTTPS 或 Certbot
AWSACM 用于负载均衡器,Certbot 用于 EC2✅(ACM)

如果主机提供免费 SSL,直接用 — 这是最简单的方式。如果没有(或需要更多控制权),用 GetHTTPS。

方法 3:Certbot(服务器管理员)

Certbot 是一个命令行工具,可以在服务器上自动化 Let’s Encrypt 证书。需要 root 权限。

# 安装(Ubuntu)
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

# 获取证书 + 自动配置 Nginx
sudo certbot --nginx -d example.com -d www.example.com

GetHTTPS 与 Certbot 完整对比 →

方法 4:Cloudflare(基于代理的 SSL)

使用 Cloudflare 作为 CDN 时,Universal SSL 免费包含。但要注意:Cloudflare SSL 意味着你的流量在 Cloudflare 边缘节点解密,而不是在你的服务器上。这对你合适吗?→


故障排除

验证文件返回 404

  • 检查路径 — 文件必须位于 /.well-known/acme-challenge/TOKEN,不能在子目录中
  • 检查权限 — 文件必须可被 Web 服务器读取(chmod 644)
  • Nginx — 如果配置阻止了点文件,添加 location ~ /\.well-known { allow all; }
  • Cloudflare — HTTP-01 验证期间临时切换 DNS 为”仅 DNS”(灰色云朵)
  • cPanel — 确保 .well-known 未被隐藏 — 有些文件管理器会隐藏点目录

DNS 记录未找到

  • 再等一会 — 某些 DNS 提供商需要 5-15 分钟传播
  • 检查记录名 — 应该是 _acme-challenge(是否自动追加了域名取决于提供商)。GetHTTPS 的预检会确认。
  • 检查记录类型 — 必须是 TXT,不是 CNAME 或 A
  • 手动验证:
    dig TXT _acme-challenge.yourdomain.com +short

“请求过多” / 速率限制错误

Let’s Encrypt 允许每个注册域名每周 50 张证书。达到限制时等一周重试,或使用预备环境测试。预检可以避免浪费验证次数。

浏览器安装后仍显示”不安全”

  1. 证书未安装 — 检查服务器配置是否指向正确文件
  2. 混合内容 — 页面加载了 HTTP 资源。修复指南 →
  3. 重定向未生效 — HTTP 流量未重定向到 HTTPS。重定向指南 →
  4. 证书过期检查过期时间 →

“证书链不完整”错误

你在 Nginx 中使用了 cert.pem 而不是 fullchain.pem,或者 Apache 中缺少 SSLCertificateChainFile。服务器需要中间证书来证明信任链


为什么选 GetHTTPS?

特性GetHTTPSZeroSSLSSL For FreeCertbot
安装无(浏览器)无(网页)无(网页)需要命令行安装
私钥浏览器生成(Web Crypto)⚠️ 可能在服务器生成⚠️ 在服务器生成在服务器生成
免费证书限制无限3 张3 张无限
免费通配符❌(付费)
自动续签
预检验证
Open sourceNoNoNoYes (Apache 2.0)
直连 Let’s Encrypt通过 ZeroSSL通过 ZeroSSL

所有免费 SSL 提供商完整对比 →


常见问题

真的能免费获取 SSL 证书吗?

可以。Let’s Encrypt 是一个非营利证书颁发机构,由 Mozilla、Google、EFF 等支持。它签发免费的域名验证(DV)证书 — 与很多公司花 50-200 美元/年购买的证书类型相同。超过 3 亿个网站使用 Let’s Encrypt,全球 CA 市场份额 63.9%。

免费 SSL 证书和付费的一样安全吗?

一样。所有 SSL 证书 — 免费或付费 — 使用相同的 TLS 加密。Let’s Encrypt 的免费 DV 证书与 DigiCert 500 美元的 EV 证书提供完全相同的加密强度。唯一的区别是验证级别(CA 验证你身份的程度),不是加密。详细对比 →

免费 SSL 证书有效期多长?

Let’s Encrypt 证书有效期 90 天。这是故意设计的 — 限制密钥泄露时的损害范围并鼓励自动化。在第 60 天续签以留出安全余量。注意:到 2029 年,所有证书的有效期将缩短至 47 天

需要 SSH/root 权限吗?

使用 GetHTTPS 不需要。你只需要能够:

  • 在 Web 服务器上放置文件(通过 FTP、cPanel 文件管理器或任何方式)— 用于 HTTP-01
  • 添加 DNS 记录(通过域名注册商或 DNS 提供商)— 用于 DNS-01

能免费获取通配符证书吗?

可以。GetHTTPS 通过 DNS-01 验证支持通配符证书*.example.com)。这是很多竞品(ZeroSSL、SSL For Free)限制为付费功能的特性。你需要访问域名的 DNS 设置。

一张证书能保护多个域名吗?

可以。在 GetHTTPS 中输入所有域名 — 每张证书最多 100 个名称。这会创建一个 SAN(多域名)证书。每个域名需要单独的验证。

HTTP-01 和 DNS-01 验证有什么区别?

HTTP-01: 在服务器上放置一个文件。更简单,适用于单个域名。需要端口 80 开放。 DNS-01: 添加 DNS TXT 记录。通配符证书必选。即使端口 80 被封也能用。 HTTP-01 详细指南 → | DNS-01 指南 →

证书过期会怎样?

浏览器显示全屏安全警告(“您的连接不安全”)。访客无法安全访问你的网站,搜索引擎可能会从索引中移除你的页面。如何检查过期时间 → | 如何续签 →

能从 GetHTTPS 切换到 Certbot(或反过来)吗?

可以。证书文件是标准 PEM 格式。你可以用 GetHTTPS 生成第一张证书,之后安装 Certbot 自动续签。或者长期使用 Certbot,在需要快速重新签发而不访问服务器时切换到 GetHTTPS。两个工具互不冲突。

相关文章

对比 2026-05-08
GetHTTPS vs Certbot:该选哪个 SSL 工具?
详细对比 GetHTTPS 和 Certbot 获取 Let's Encrypt 免费 SSL 证书的方式。比较安装、流程、隐私、自动化、续签和使用场景。
对比 2026-05-08
2026 年最佳免费 SSL 证书提供商对比
从隐私、限额、通配符支持和自动化等维度对比 9 家免费 SSL 证书提供商。涵盖独立证书颁发机构、主机商和 CDN,并附上其他对比文章未涉及的隐私分析。
快速开始 2026-05-08
HTTP-01 验证:工作原理与操作指南
HTTP-01 是证明域名所有权以获取 SSL 证书的最简单方式。在服务器上放置一个文件,Let's Encrypt 进行验证,即可签发证书。
快速开始 2026-05-08
DNS-01 验证:工作原理与操作指南
DNS-01 验证通过在 DNS 中添加 TXT 记录来证明域名所有权。通配符证书必须使用此方式。涵盖 Cloudflare、Route 53、GoDaddy、Namecheap 等的设置方法。
在浏览器中获取免费 SSL 证书
无需安装,无需账号。私钥始终留在你的设备上。
获取证书