Debian Nginx SSL证书配置教程

203
2025/4/13 3:32:14
栏目: 云计算
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在Debian系统上配置Nginx SSL证书的步骤如下:

使用Docker和Nginx配置SSL证书

  1. 拉取镜像
docker pull nginx:latest
  1. 准备Nginx配置文件
docker run --name nginx-test -p 80:80 -d nginx
mkdir -p /data/nginx/html /data/nginx/logs /data/nginx/conf /data/nginx/ssl /data/nginx/conf.d
docker cp 2cc77006a859:/etc/nginx/nginx.conf /data/nginx/conf
docker rm -f 2cc77006a859
  1. 自签SSL证书
cd /data/nginx/ssl/
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout nginx.key -out nginx.crt

在提示时填写相关信息,例如国家、省份、组织名称、通用名称(通常是域名)和电子邮件地址。

  1. 配置前端

使用vim编辑/data/nginx/conf.d/default.conf文件,添加以下内容:

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

server {
    listen 443 ssl;
    server_name www.jasondca.com;
    ssl_certificate /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
    ssl_prefer_server_ciphers on;
    add_header Strict-Transport-Security "max-age=31536000" always;
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    location / {
        root /usr/share/nginx/html;
        index index.html index.htm;
    }
}
echo 'welcome to my site!!!' > /data/nginx/html/index.html
  1. 启动Nginx服务
sudo docker run -d --restart always -p 80:80 -p 443:443 \
    --name nginx-app \
    -v /data/nginx/html:/usr/share/nginx/html \
    -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
    -v /data/nginx/conf.d:/etc/nginx/conf.d \
    -v /data/nginx/logs:/var/log/nginx \
    -v /data/nginx/ssl:/etc/nginx/ssl \
    --privileged=true -d nginx
  1. 访问Nginx

在浏览器中输入https://www.jasondca.com/index.html,查看配置是否成功。

使用acme.sh实现SSL证书自动续签

  1. 安装acme.sh
mkdir -p /etc/acme/{config,live,certs}
mkdir -p /var/www/acme/.well-known/acme-challenge
chown -R username /var/www /etc/acme
git clone https://github.com/acmesh-official/acme.sh.git /etc/acme/acme.sh

如果没有安装git,则需要下载acme.sh压缩包并解压。

  1. 配置acme.sh
./acme.sh --install -m your@email.com --home /etc/acme --config-home /etc/acme/config --cert-home /etc/acme/certs
source ~/.bashrc
  1. 开启acme.sh自动更新
/etc/acme/acme.sh --config-home '/etc/acme/config' --upgrade --auto-upgrade
  1. 添加Nginx配置给acme.sh

创建/etc/nginx/acme.conf文件并添加以下内容:

location /.well-known/acme-challenge/ {
    alias /var/www/acme/.well-known/acme-challenge/;
}

修改需要添加SSL证书的域名Nginx配置文件,例如:

server {
    listen 80;
    listen [::]:80;
    server_name demo.com;
    include /etc/nginx/acme.conf;
    location / {
        return 301 https://$server_name$request_uri;
    }
}

修改Nginx配置文件后,重新启动Nginx:

sudo nginx -s reload
  1. 申请SSL证书
/etc/acme/acme.sh --issue --home /etc/acme --config-home /etc/acme/config --cert-home /etc/acme/certs -d demo.com -w /var/www/acme --server letsencrypt

申请成功后,可以执行crontab -e查看定时任务是否添加成功。如果没有相关acme.sh的定时任务,可以手动添加上。

  1. 使用最新的SSL证书

申请成功后,再次修改对应域名的Nginx配置文件,使其使用最新的SSL证书:

ssl_certificate /etc/acme/certs/demo.com_ecc/fullchain.cer;
ssl_certificate_key /etc/acme/certs/demo.com_ecc/demo.com.key;

添加重新加载Nginx配置文件的定时任务:

0 1 * * * sudo nginx -s reload

以上就是在Debian系统下配置Nginx SSL证书的两种方法。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: MongoDB在Debian上的日志轮转如何设置