yanchang
yanchang
发布于 2025-09-01 / 132 阅读
5
1

部署SSL证书配合nginx实现https加密

1、阿里云创建购买ssl证书

本方案为阿里云个人测试证书(免费版)方式购买SSL证书。每年20个,每个3个月

领取个人测试证书(免费版):

  1. 登录数字证书管理服务控制台

  2. 在左侧导航栏,选择证书管理 > SSL证书管理

  3. 个人测试证书(原免费证书)页签,单击立即购买。按以下参数配置并勾选服务协议,单击立即购买并完成支付。

    配置项

    示例值

    产品

    个人测试证书。

    证书类型

    个人测试证书(免费版)

    服务

    无稳定性保障

    购买数量

    默认数量为20

    其他服务

    不需要


重要

个人测试证书(免费版)领取后不支持取消订单。

  1. 创建个人测试证书:

    1. SSL证书管理页面,单击创建证书,按以下配置完成证书创建。

      配置项

      说明

      证书类型

      选择个人测试证书(免费版),有效期为90天。

      证书剩余数量/总数

      默认数量为20。

      域名名称

      填写证书用于保护的域名,如:www.aliyundoc.com

      数量

      证书数量,默认为1,不支持增加。

      快捷签发

      域名验证方式

      • 如果当前阿里云账号与域名的云解析DNS服务所在账号一致,则此处自动匹配自动DNS验证方式,无需您手动配置。该方式由阿里云自动为您完成域名验证。

      • 如果当前阿里云账号与域名的云解析DNS服务所在账号不一致,则此处可以选择以下方式:

        • 手动DNS验证:该方式需要您前往域名对应的云解析DNS服务商,将域名验证信息配置到域名解析列表中(添加一条CNAME或TXT类型的DNS解析记录)。

        • 文件验证:通过在您域名对应的Web应用服务器上创建指定文件来验证域名的所有权。

        关于验证方式的更多信息,请参见域名所有权验证

      联系人

      从下拉列表中选择本次证书申请的联系人(包含邮箱、手机号码等联系信息)。

      如果您未创建过联系人,可以单击新建联系人,新建一个联系人。您也可以单击编辑,修改现有联系人的信息。数字证书管理服务会保存新建的联系人信息,方便您下次使用。关于新建联系人的具体配置,请参见管理联系人

      所在地

      选择申请人所在城市或地区。

      密钥算法

      默认选择为RSA,且不支持修改。RSA算法是目前在全球应用广泛的非对称加密算法,兼容性好。

      CSR生成方式

      选择系统生成即可。表示由数字证书管理服务自动使用您在密钥算法指定的加密算法生成CSR文件(您可以在证书签发后下载证书和私钥)。

    2. 按照验证信息中的提示,完成域名所有权的验证。

      域名所有权验证成功后,证书通常会在1~15分钟(平均时长)完成签发。证书签发后,证书状态将变更为已签发。如果SSL证书长时间未签发,请您检查DNS验证配置是否正确。更多关于域名所有权证书说明,请参见域名所有权验证

  1. 登录云解析DNS控制台

  2. 在左侧导航栏单击公网DNS解析 > 权威域名解析,在域名列表中找到目标域名,单击右侧操作列中解析设置

  3. 在域名解析设置页签中点击添加记录,填写域名解析信息,然后单击确认

    配置项

    说明

    示例值

    记录类型

    选择域名指向的类型。此处选择A。

    A

    主机记录

    根据域名前缀填写主机记录。本方案以域名www.aliyundoc.com为例。

    www

    记录值

    ECS控制台左侧导航栏单击实例与镜像 > 实例,在实例页面找到目标实例,在IP地址列复制公网IP地址。

    10.0.x.x

    TTL

    域名的更新周期,保留默认值。

    10分钟

数字证书管理服务已经将您的SSL证书自动转换成适用于不同服务器的格式并压缩。PEM是基于Base64编码的比较通用的证书文件格式,可直接查看文本,常用在Nginx等大多数服务器或应用程序中。

  1. 数字证书管理服务控制台左侧导航栏,选择证书管理 > SSL证书管理

  2. SSL证书管理页面,定位到目标证书,在操作列,单击更多,然后选择下载页签。

  3. 服务器类型为Nginx的操作列,单击下载

  4. 将下载完成的证书进行解压,解压后证书文件包含两个文件:

    • 证书文件(PEM格式):默认以证书绑定域名.pem命名。

    • 私钥文件(KEY格式):默认以证书绑定域名.key命名。

2、nginx部署

将下载的密钥放置位置为

/etc/nginx/ssl/www.yanchang.xyz.pem
/etc/nginx/ssl/www.yanchang.xyz.key

具体操作(注意权限问题)

sudo mkdir -p /etc/nginx/ssl
sudo cp www.yanchang.xyz.pem /etc/nginx/ssl/
sudo cp www.yanchang.xyz.pem /etc/nginx/ssl/
sudo chmod 600 /etc/nginx/ssl/*

首先下载安装nginx

sudo apt update
sudo apt install nginx -y

配置 Nginx

编辑配置文件(新建一个站点配置):

sudo vim /etc/nginx/sites-available/halo.conf
server {
    listen 8091 ssl http2;
    server_name www.yanchang.xyz;

    ssl_certificate     /etc/nginx/ssl/www.yanchang.xyz.pem;
    ssl_certificate_key /etc/nginx/ssl/www.yanchang.xyz.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass http://127.0.0.1:8090;   # Halo 的端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

启用配置

sudo ln -s /etc/nginx/sites-available/halo.conf /etc/nginx/sites-enabled/
sudo nginx -t   # 检查配置有没有写错
sudo systemctl reload nginx

放行端口

sudo ufw allow 8091
sudo ufw allow 8090

如果以后证书要更新(比如有效期只有 1 年),只需要覆盖新的 .pem.key 文件,然后执行:

sudo nginx -s reload

就能立即生效,不用重启服务。

# 启动 Nginx
sudo systemctl start nginx

# 停止 Nginx
sudo systemctl stop nginx

# 重启 Nginx
sudo systemctl restart nginx

# 平滑重载配置(不中断服务)
sudo systemctl reload nginx

# 查看状态
sudo systemctl status nginx




# 启动 Nginx(前台启动)
sudo nginx

# 停止 Nginx
sudo nginx -s stop

# 优雅停止(处理完现有请求再退出)
sudo nginx -s quit

# 重启 = 停止 + 启动
sudo nginx -s stop && sudo nginx

# 平滑重载配置(常用)
sudo nginx -s reload


评论