Nginx 服务器配置 SSL 证书

前提条件

  • 域名完成DNS解析
  • 服务器开放443端口

购买证书

登陆阿里云,访问 SSL 证书管理页面。

SSL 证书管理 => 个人测试证书 => 立即购买

购买证书

免费证书每年可以领取20个。

创建证书 => 填写域名 => 证书申请 => 填写信息

创建证书

域名验证方式:如果你的域名在当前的阿里云账号下,那么可以选择自动DNS验证,如果域名不在当前账号下,选择手工DNS验证,当然也可以选择文件验证,根据实际情况选择

审核通过后,会下发证书。

配置证书

下载证书

下载证书

配置证书

创建存放证书的路径

cd /etc/nginx # 根据实际配置调整
mkdir cert

上传证书文件和私钥文件至 /etc/nginx/cert

编辑 Nginx 配置文件 /etx/nginx/nginx.conf

# 二级域名
server {
    listen       443 ssl default_server;
    ssl on;
    # listen       80 default_server;
    # listen       [::]:80 default_server;
    server_name  domain.name;
    root         /home/domain;

    #填写证书文件绝对路径
    ssl_certificate cert/domain.name.pem;
    #填写证书私钥文件绝对路径
    ssl_certificate_key cert/domain.name.key;
}

# 三级域名
server {
    listen       443 ssl;
    ssl on;
    # listen       80;
    # listen       [::]:80;
    server_name  aaa.domain.name;
    root         /home/aaa;

    #填写证书文件绝对路径
    ssl_certificate cert/aaa.domain.name.pem;
    #填写证书私钥文件绝对路径
    ssl_certificate_key cert/aaa.domain.name.key;
}

配置对443端口的监听后,要将对80端口的监听注释

配置 http 自动跳转 https

# 二级域名
server {
    listen      80;
    server_name domain.name ;
    # 将请求转成 https
    rewrite ^(.*) https://$server_name$1 permanent;
}

# 三级域名
server {
    listen      80;
    server_name aaa.domain.name;
    # 将请求转成 https
    rewrite ^(.*) https://$server_name$1 permanent;
}

重启 Nginx

nginx -s reload

一些问题

ssl 指令过时

🐛 报错:

nginx: [warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead in /etc/nginx/nginx.conf

✅ 解决:

server {
    listen 443 ssl;  # 将 ssl 参数直接放在 listen 指令中
    ssl_certificate /path/to/certificate.crt;
    ssl_certificate_key /path/to/private.key;
    ...
}

Nginx 服务器配置 SSL 证书
http://guoguo.host/blog/p/90d8d84.html
作者
Guoguo
发布于
2024年8月9日
许可协议