网站HTTPS证书怎么申请免费

文章导读
想给网站加 HTTPS,先别急着找“免费证书申请入口”。多数人卡住的不是证书本身,而是服务器版本太老、没有写权限,或者入口不在自己以为的那个面板里。先把这三件事确认完,再走最短路径,通常十几分钟能跑通;如果跑不通,多半是域名解析、80 端口占用或文件权限三类问题之一。
📋 目录
  1. Ⅰ 网站HTTPS证书之前先确认这三件事
  2. Ⅱ 网站HTTPS证书:最短可用路径
  3. Ⅲ 网站HTTPS证书:一个真实场景的完整做法
  4. Ⅳ 网站HTTPS证书:跑不通先查这三处
A A

想给网站加 HTTPS,先别急着找“免费证书申请入口”。多数人卡住的不是证书本身,而是服务器版本太老、没有写权限,或者入口不在自己以为的那个面板里。先把这三件事确认完,再走最短路径,通常十几分钟能跑通;如果跑不通,多半是域名解析、80 端口占用或文件权限三类问题之一。

免费 HTTPS 证书的常见做法是用 ACME 协议向 Let's Encrypt 这类 CA 申请,证书本身不收费,有效期通常为 90 天,需要自动续期。申请前必须确认三件事:系统与 ACME 客户端版本可用、当前账号有写配置和证书目录的权限、申请入口在 DNS 服务商还是 Web 服务。最短路径是安装客户端、做域名验证、签发证书、配置 Web 服务加载证书并设置续期。验证方式是浏览器锁标加命令行检查证书到期时间;边界是证书只解决传输加密,不解决网站本身的安全问题,续期失败仍会导致过期。

网站HTTPS证书之前先确认这三件事

第一件是版本。ACME 客户端与 Web 服务版本太旧会导致验证或证书加载失败。在 Linux 上先执行下面的命令看系统版本,再确认 Web 服务版本:

cat /etc/os-release
nginx -v
# 或
httpd -v

如果使用 certbot,用 certbot --version 查看版本;版本过旧时,建议先通过系统包管理器升级,具体可用的版本号需要查对应发行版的软件源,不要照抄别人文章里的版本。

第二件是权限。申请证书要写 Web 服务的配置目录和证书存放目录,验证阶段还可能需要写网站根目录下的临时文件。用 whoami 确认当前用户,用 ls -ld /etc/nginx /etc/letsencrypt 看目录归属。普通用户通常需要 sudo,不建议为了省事把整个配置目录改成 777。

第三件是入口位置。免费证书的申请入口可能在你购买域名的 DNS 服务商控制台,也可能在服务器上的 ACME 客户端,还可能集成在宝塔、1Panel 这类面板的“网站 - SSL”页面里。先登录域名解析页面,确认域名 A 记录已指向当前服务器公网 IP,再决定用 DNS 验证还是 HTTP 验证;这一步决定了后面命令怎么写。

网站HTTPS证书怎么申请免费

网站HTTPS证书:最短可用路径

下面以常见的 Nginx + certbot 组合为例,其他 Web 服务把对应命令替换掉即可。每一步做完都有可见结果,不要跳步。

  1. 安装客户端。Debian/Ubuntu 系执行 sudo apt update && sudo apt install certbot python3-certbot-nginx;CentOS/RHEL 系先启用 EPEL 源再安装。执行完应能看到 certbot --version 正常输出版本号。

  2. 确认域名解析已生效。执行 dig +short example.com 或 nslookup example.com,输出应是你服务器的公网 IP。若为空或指向别处,先改 DNS,不要继续。

  3. 签发证书。执行 sudo certbot --nginx -d example.com -d www.example.com,按提示填写邮箱并同意条款。执行完应看到 “Congratulations” 类提示,并生成 /etc/letsencrypt/live/example.com/fullchain.pem 和 privkey.pem 两个文件。

  4. 检查 Nginx 配置。执行 sudo nginx -t,输出应为 syntax is ok 和 test is successful;然后用 sudo systemctl reload nginx 让配置生效。

    网站HTTPS证书怎么申请免费
  5. 验证并设置续期。浏览器访问 https://example.com 应显示锁标;执行 sudo certbot renew --dry-run,输出应为续期模拟成功。certbot 安装时通常已写入定时任务,可用 systemctl list-timers | grep certbot 确认。

网站HTTPS证书:一个真实场景的完整做法

场景设定为:一台 2 核 4G 的云服务器,系统 Ubuntu 22.04,Nginx 托管一个日访问量不大的企业官网,域名为 www.example.com,DNS 在域名服务商控制台管理,网站根目录为 /var/www/site。这类规模用 HTTP-01 验证就足够,不需要额外配置 DNS 插件。

先在域名服务商控制台的“解析设置”页面添加一条 A 记录:主机记录 www,记录值填服务器公网 IP,TTL 用默认值。等待解析生效后,在服务器执行 dig +short www.example.com,确认返回该 IP。

接着检查 Nginx 站点配置文件,通常在 /etc/nginx/sites-available/ 下。确保 server_name www.example.com; 与实际域名一致,root /var/www/site; 指向真实目录。然后用 sudo certbot --nginx -d www.example.com 签发,certbot 会自动改写该配置文件,加入 443 监听和证书路径。

网站HTTPS证书怎么申请免费
server {
    listen 443 ssl;
    server_name www.example.com;
    root /var/www/site;

    ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
}

配置写入后执行 sudo nginx -t && sudo systemctl reload nginx。验证方式有两个:浏览器打开站点看锁标,以及执行 echo | openssl s_client -connect www.example.com:443 -servername www.example.com 2>/dev/null | openssl x509 -noout -dates 查看证书生效和到期时间。证书有效期通常为 90 天,续期靠 certbot 的定时任务完成,不要手动续期后就把这件事忘了。

网站HTTPS证书:跑不通先查这三处

第一处:域名验证失败。 常见报错是 Challenge failed for domain www.example.com 或 Timeout during connect。先检查 DNS 是否已指向本机,再确认 80 端口是否被防火墙或安全组放行,可用 curl -I http://www.example.com 在本机外访问测试。若使用 CDN 或反向代理,验证请求可能被拦截,需要结合当前架构确认。

第二处:Nginx 配置检查不通过。 报错通常是 nginx: [emerg] cannot load certificate 或 no such file or directory。用 ls -l /etc/letsencrypt/live/ 确认证书目录和域名是否一致,注意 live 目录下是软链接,实际文件在 archive 目录,移动或删除文件都会断链。

第三处:浏览器提示证书不受信任或已过期。 页面提示多为 NET::ERR_CERT_DATE_INVALID 或“证书已过期”。先看 systemctl status certbot.timer 或 crontab -l 确认续期任务是否还在,再用 sudo certbot certificates 查看当前证书到期时间。续期失败往往和验证端口被改动、站点根目录变更有关,检查位置仍是 DNS、80 端口和 Nginx 站点配置这三项。