怎么部署SSL证书:Nginx和宝塔两种方式的操作步骤
网站要启用 HTTPS,本质是把证书文件和私钥配置到 Web 服务器上,让 443 端口用加密方式响应请求。
下面按“准备文件、选择部署方式、放行端口、验证结果”的顺序展开,Nginx 命令行的做法和宝塔面板的做法分开讲,按自己环境选一种即可。
先确认手里有哪几个文件
从证书服务商下载的压缩包解压后,通常会看到两类文件:域名证书(.crt 或 .pem)和私钥(.key)。
部分服务商还会单独提供一个中间证书或 CA 包。
- 域名证书:证明这个域名归属的证书主体。
- 私钥:与证书配对,绝不能泄露,权限建议设为
600。 - 中间证书/CA 包:用来补齐证书链,缺失时浏览器可能提示证书不受信任。
部署前先确认证书里的域名和你要绑定的域名完全一致,通配符证书(*.example.com)只能覆盖一级子域名。
方式一:在 Nginx 中手动配置
把证书上传到服务器,建议放在 /etc/nginx/ssl/ 目录下,避免和网站代码混在一起:
mkdir -p /etc/nginx/ssl
# 上传后确认文件存在
ls -l /etc/nginx/ssl/
chmod 600 /etc/nginx/ssl/*.key
找到站点配置文件(常见路径 /etc/nginx/conf.d/你的域名.conf 或 /etc/nginx/sites-available/),
在 server 块里加入 443 监听和证书路径:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.pem;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
root /var/www/html;
index index.html;
}
如果希望 HTTP 自动跳到 HTTPS,再加一个 80 端口的 server 块做 301 跳转:
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
保存后先测试配置语法,再重载服务,不要直接重启:
nginx -t
systemctl reload nginx
nginx -t 输出 syntax is ok 和 test is successful 才算配置可用。
如果提示找不到证书文件,多半是路径写错或文件名大小写不一致。
方式二:用宝塔面板部署
如果服务器上装的是宝塔面板,操作会更直观。
进入面板后依次点击 网站 → 站点设置 → SSL,选择“其他证书”,把证书内容粘贴到“证书(PEM格式)”框,私钥粘贴到“密钥(KEY)”框,保存后打开“强制HTTPS”开关。
粘贴时要注意完整包含 -----BEGIN CERTIFICATE----- 到 -----END CERTIFICATE----- 的全部内容,中间证书一般紧跟在域名证书后面一起粘贴。
保存成功后面板会自动重载 Nginx,不需要手动执行命令。
别忘了放行 443 端口
证书配好但网站打不开,很常见的原因是端口没放行。
需要同时检查两层:
- 云服务器安全组:在云控制台的安全组入方向规则里,添加允许 TCP 443 端口、来源
0.0.0.0/0的规则。 - 系统防火墙:CentOS 系用
firewall-cmd --add-service=https --permanent && firewall-cmd --reload,Ubuntu 系用ufw allow 443。
只改一处往往不生效,两层都要确认。
验证证书是否真正生效
配置完不要只看面板显示“已部署”,用下面几种方式交叉验证:
- 浏览器访问
https://你的域名,地址栏出现锁形图标,点开查看证书有效期和颁发者。 - 命令行执行
curl -I https://你的域名,返回HTTP/2 200或HTTP/1.1 200说明握手成功。 - 用在线 SSL 检测工具检查证书链,重点看是否提示“证书链不完整”。出现这个提示时,把中间证书和域名证书合并成一个文件再配置。
几个容易踩的坑
- 私钥和证书不匹配:报错通常是
key values mismatch,说明上传的证书和私钥不是同一对,重新从原始压缩包取文件。 - 只部署了域名证书:部分浏览器能打开,但手机端或部分客户端报不受信任,原因是缺少中间证书。
- 证书过期未续签:免费证书有效期较短,建议在面板或服务商处开启自动续签,并保留续签后的重载动作。
- 混用 HTTP 资源:页面里引用了
http://的图片或脚本,浏览器仍会提示“不安全”,需要把资源地址改成https://或相对路径。
部署 SSL 证书本身不复杂,关键是文件配对正确、端口放行完整、证书链齐全。
按上面的顺序做完,再用浏览器和命令行各验证一次,基本就能稳定启用 HTTPS。