本文面向第一次部署证书的新手,以 Nginx + 单域名 DV 证书 为例,完整走一遍从申请到生效的全流程。全程只需 5 条命令,实际耗时约 3 分钟(不含 CA 审核等待)。

准备:确认域名与服务器

开始前请确认三件事:

  • 域名已备案并可正常解析:国内服务器需完成 ICP 备案;ping 你的域名 能返回服务器 IP。
  • 服务器 443 端口已开放:检查防火墙与云安全组(阿里云/腾讯云需在控制台单独放行 443)。
  • 拥有域名解析管理权限:DV 证书验证需要在解析平台添加一条 TXT 记录。

第一步:生成 CSR 与私钥

登录服务器,使用 OpenSSL 一条命令生成私钥与 CSR(私钥不要离开你的服务器):

openssl req -new -newkey rsa:2048 -nodes \
  -keyout www.example.com.key \
  -out www.example.com.csr \
  -subj "/CN=www.example.com/O=Your Company/C=CN"
提示: -nodes 表示私钥不加密(Nginx 自动加载需要);生产环境建议使用 ECC 算法(-newkey ec -pkeyopt ec_paramgen_curve:prime256v1),性能更好、体积更小。

第二步:提交申请并验证域名

在证书服务商下单 DV 证书,将 .csr 文件内容完整粘贴到申请框(包括 -----BEGIN 与 -----END 行)。随后按提示完成域名验证,最快的方式是 DNS 验证:

  1. 系统生成一条 TXT 记录值,例如主机记录 _dnsauth,记录值 2026xK9f…
  2. 到域名解析平台添加该 TXT 记录;
  3. 等待 1~10 分钟解析生效,系统自动检测通过。

第三步:下载并上传证书

验证通过后数分钟内证书自动签发。在会员中心下载压缩包,解压后得到:

  • www.example.com.pem —— 证书链(站点证书 + 中间证书)
  • www.example.com.key —— 你在第一步生成的私钥

通过 sftp/scp 上传到服务器约定目录(推荐 /etc/nginx/ssl/),并收紧权限:

mkdir -p /etc/nginx/ssl
cp www.example.com.{pem,key} /etc/nginx/ssl/
chmod 600 /etc/nginx/ssl/www.example.com.key

第四步:配置 Nginx 并生效

编辑站点配置(如 /etc/nginx/conf.d/example.conf):

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

    ssl_certificate     /etc/nginx/ssl/www.example.com.pem;
    ssl_certificate_key /etc/nginx/ssl/www.example.com.key;
    ssl_protocols       TLSv1.2 TLSv1.3;

    location / {
        root /var/www/html;
        index index.html;
    }
}

# HTTP 强制跳转 HTTPS
server {
    listen 80;
    server_name www.example.com;
    return 301 https://$host$request_uri;
}

检查并热加载(无需停机):

nginx -t && nginx -s reload

第五步:验证与强制跳转

  • 浏览器访问 https://www.example.com,地址栏出现锁形标识即成功;
  • 点击证书图标可查看颁发机构与有效期;
  • 访问 http:// 版本确认 301 跳转正常;
  • 打开浏览器控制台 Network 面板,确认协议显示 h2(HTTP/2 生效)。
最后一步别忘了: 在服务器上配置到期监控,或购买多年期证书服务。证书过期是新手最常翻车的环节。

常见报错排查

报错现象原因解决方法
SSL_CTX_use_PrivateKey_file failed私钥与证书不匹配确认两个文件来自同一次签发;openssl x509 -noout -modulus -in cert.pem | openssl md5 与 openssl rsa -noout -modulus -in key.key | openssl md5 输出应一致
NET::ERR_CERT_AUTHORITY_INVALID证书链不完整使用包含中间证书的 fullchain .pem,而不是单独的站点证书
NET::ERR_CERT_COMMON_NAME_INVALID域名不匹配证书签发域名与访问域名不一致,检查是否漏了 www 前缀
页面样式错乱 / 控制台混合内容警告页面内引用了 http:// 资源将静态资源改为 https 或协议相对路径(//)
如果不想折腾:我们提供免费远程安装服务,工程师 30 分钟内帮你完成全部部署与调优。立即申请 →