博客 / Linux/ 配置SSL证书到Nginx服务器的方法,免费的SSL证书也可以!

配置SSL证书到Nginx服务器的方法,免费的SSL证书也可以!

配置SSL证书到Nginx服务器的方法,免费的SSL证书也可以!

配置 SSL 证书到 Nginx 服务器的方法

为 Nginx 服务器配置 SSL 证书,可以实现 HTTPS 加密访问,提升网站安全性。即使是免费的 SSL 证书,配置流程也基本相同。以下是详细的配置步骤和注意事项。

步骤一:修改 Nginx 配置文件

首先,需要编辑 Nginx 的配置文件(通常是 nginx.conf 或在 sites-available/ 目录下的站点配置文件)。配置的目标是:

  1. 将 HTTP(80端口)请求重定向到 HTTPS(443端口)。
  2. 在 HTTPS 服务器块中启用 SSL 并指定证书和私钥的路径。

以下是一个标准的配置示例:

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

server {
    listen 443 ssl;
    server_name www.yourdomain.com;
    root /home/www;

    ssl_certificate /etc/nginx/certs/server.crt;
    ssl_certificate_key /etc/nginx/certs/server.key;

    # 其他 SSL 配置(可选)
    # ssl_protocols TLSv1.2 TLSv1.3;
    # ssl_ciphers HIGH:!aNULL:!MD5;
}

配置说明:

  • server_name:请替换为你的实际域名。
  • root:请替换为你的网站根目录路径。
  • ssl_certificatessl_certificate_key:分别指向你的 SSL 证书文件(.crt 或 .pem)和私钥文件(.key)的完整路径。请根据你的实际存放位置修改。
  • 在现代 Nginx 版本中,ssl on; 指令已被弃用,推荐使用 listen 443 ssl; 语法。
  • 使用 return 301 进行重定向比 rewrite ... permanent; 更高效且语义更清晰。

步骤二:处理证书链(重要)

配置完成后重启 Nginx,有时可能会收到证书颁发机构(CA)的警告邮件,提示证书安装不完整。这通常是因为缺少中间证书(Intermediate Certificate)。

浏览器需要构建一条完整的信任链,从你的服务器证书回溯到根证书。如果服务器没有发送中间证书,浏览器可能无法验证,导致安全警告。

解决方法: 将中间证书(有时还包括根证书)与你的服务器证书合并到一个文件中。

以旧版 StartSSL(现已被收购)为例,操作流程如下:

# 下载根证书和中间证书(链接已过时,仅作示例)
wget http://cert.startssl.com/certs/ca.pem
wget http://cert.startssl.com/certs/sub.class1.server.ca.pem

# 将根证书和中间证书合并为一个证书链文件
cat ca.pem sub.class1.server.ca.pem > ca-certs.crt

# 将你的服务器证书与证书链文件合并
cat your_server.crt ca-certs.crt > /etc/nginx/certs/server.crt

通用方法:

  1. 从你的证书颁发机构(如 Let's Encrypt、DigiCert、Sectigo 等)获取中间证书文件(通常可在其官网下载)。
  2. 使用文本编辑器或 cat 命令,按顺序合并证书:你的域名证书在前,中间证书在后。例如:
    cat your_domain.crt intermediate.crt > /etc/nginx/ssl/bundle.crt
  3. 在 Nginx 配置中,将 ssl_certificate 指向这个合并后的文件(如 bundle.crt)。

Let's Encrypt 颁发的证书(通过 Certbot 工具获取)通常会自动处理好证书链,其生成的 fullchain.pem 文件就是合并好的证书,可直接用于配置。

步骤三:重启 Nginx 并测试

  1. 保存配置文件后,测试配置语法是否正确:
    nginx -t
  2. 如果测试通过,重启 Nginx 以应用新配置:
    systemctl reload nginx  # 或 service nginx reload
  3. 使用浏览器访问你的网站(使用 HTTPS 协议),检查地址栏是否有锁形标志。你也可以使用在线 SSL 检测工具(如 SSL Labs 的 SSL Server Test)进行全面检查。

遵循以上步骤,即可成功为 Nginx 服务器配置 SSL 证书,实现全站 HTTPS 加密。使用免费证书(如 Let's Encrypt)同样遵循此流程,且自动化工具可以简化证书申请和续期。

发表评论

您的邮箱不会公开。必填项已用 * 标注。