技术知识文章集合TECHNICAL ARCHIVE · 807 DOCUMENTS

显示模式

登录
ARCHIVE DOCUMENTBE

Nginx 服务器 SSL 证书安装部署

所属分类
Backend
文件格式
Markdown
原始路径
Backend/Nginx 服务器 SSL 证书安装部署
本文目录5 个章节
  1. 操作场景
  2. 前提条件
  3. 证书安装
  4. HTTP 自动跳转 HTTPS(可选)
  5. 整理者注

Nginx 服务器 SSL 证书安装部署

Category(分类): Backend Status: 已读

原文:Nginx 服务器 SSL 证书安装部署(腾讯云官方文档)。 本文为整理版本,以 cloud.tencent.com 证书、nginx/1.18.0、CentOS 7 为例。

操作场景

在 Nginx 服务器中安装 SSL 证书,启用 HTTPS。

注意:安装前请在服务器上开启 HTTPS 默认端口 443,避免证书安装后无法启用。

前提条件

  • 已准备文件远程拷贝软件(如 WinSCP)与远程登录工具(如 PuTTY / Xshell);
  • 已安装含 http_ssl_module 模块的 Nginx(nginx -V 可查);
  • 备好服务器 IP、用户名、密码。

证书安装

1. 下载证书

在证书颁发控制台下载证书,服务器类型选择 Nginx,解压得到 cloud.tencent.com_nginx 文件夹:

文件说明
cloud.tencent.com_bundle.crt证书文件(部署用)
cloud.tencent.com_bundle.pem证书文件(PEM 格式)
cloud.tencent.com.key私钥文件(部署用)
cloud.tencent.com.csrCSR 文件(申请证书时提供给 CA 用,安装时可忽略)

2. 上传证书

将 cloud.tencent.com_bundle.crt 与 cloud.tencent.com.key 拷贝到 Nginx 服务器的 /etc/nginx 目录(按实际安装目录调整)。

3. 编辑 nginx.conf

执行 vim /etc/nginx/nginx.conf(找不到位置时可先执行 nginx -t 查看配置文件路径),修改 server 块:

版本注意:nginx/1.15.0 以上请使用 listen 443 ssl,代替 listen 443 + ssl on 的旧写法。

server {
    # SSL 访问端口号为 443
    listen 443 ssl;
    # 填写绑定证书的域名
    server_name cloud.tencent.com;
    # 证书文件名称
    ssl_certificate cloud.tencent.com_bundle.crt;
    # 私钥文件名称
    ssl_certificate_key cloud.tencent.com.key;
    ssl_session_timeout 5m;
    # 请按照以下协议配置
    ssl_protocols TLSv1.2 TLSv1.3;
    # 请按照以下加密套件配置,配置加密套件,写法遵循 openssl 标准
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;

    location / {
        root html;
        index index.html index.htm;
    }
}

4. 验证并重载

nginx -t          # 验证配置,有问题按提示修改
nginx -s reload   # 重载 Nginx

重载成功后即可使用 https://cloud.tencent.com 访问。浏览器地址栏出现安全锁标识,则说明证书安装成功。

HTTP 自动跳转 HTTPS(可选)

在 Web 服务器层面实现跳转:针对 80 端口的 server 增加 return 301:

server {
    listen 443 ssl;
    server_name cloud.tencent.com;
    ssl_certificate cloud.tencent.com_bundle.crt;
    ssl_certificate_key cloud.tencent.com.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    location / {
        root html;
        index index.html index.htm;
    }
}

server {
    listen 80;
    server_name cloud.tencent.com;
    # 把 http 的域名请求转成 https
    return 301 https://$host$request_uri;
}

修改后同样执行 nginx -t 验证、nginx -s reload 重载。

整理者注

这套流程与本站《Nginx 反向代理 Docker Nuxt 项目的完整配置过程》的生产实践一致:443 加载证书 + 80 端口 301 跳转,是 Nginx HTTPS 部署的标准姿势。要点回顾:

  1. 只需 .crt(证书链)+ .key(私钥)两个文件,.csr 安装时用不到;
  2. listen 443 ssl 是 1.15.0+ 写法;
  3. 协议只留 TLSv1.2/1.3,旧协议有安全隐患;
  4. nginx -t 永远在 reload 之前执行。
807 DOCUMENTS · 12 COLLECTIONS
ARCHIVE SEARCH807 篇文章