在Debian系统上配置Nginx SSL证书的步骤如下:
docker pull nginx:latest
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
cd /data/nginx/ssl/
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout nginx.key -out nginx.crt
在提示时填写相关信息,例如国家、省份、组织名称、通用名称(通常是域名)和电子邮件地址。
使用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
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
在浏览器中输入https://www.jasondca.com/index.html
,查看配置是否成功。
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
压缩包并解压。
./acme.sh --install -m your@email.com --home /etc/acme --config-home /etc/acme/config --cert-home /etc/acme/certs
source ~/.bashrc
/etc/acme/acme.sh --config-home '/etc/acme/config' --upgrade --auto-upgrade
创建/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
/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的定时任务,可以手动添加上。
申请成功后,再次修改对应域名的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上的日志轮转如何设置