Debian 12.0 上为 Nginx 配置 SSL/TLS 证书

在 Debian 12.0 上为 Nginx 配置 SSL/TLS 证书,可以使用免费的 Let’s Encrypt 证书,通过工具 Certbot 自动完成证书获取和配置。以下是具体步骤:

  1. 安装 Certbot 和 Nginx 插件
    Certbot 是一个工具,可以从 Let’s Encrypt 获取证书并自动配置到 Nginx。
    运行以下命令安装 Certbot 和其 Nginx 插件:
sudo apt update
sudo apt install certbot python3-certbot-nginx -y
  1. 确保域名指向服务器

在你的域名注册商控制面板中,将域名的 A 记录 和 CNAME 记录 指向你的服务器 IP 地址。
例如:

类型主机名
A@你的服务器 IP 地址

然后等待 DNS 解析生效。可以通过以下命令验证 DNS 解析是否正确:

ping your-domain.com

如果返回了你的服务器 IP,说明解析已经生效。

  1. 获取 SSL/TLS 证书

Certbot 会自动为你的域名获取 Let’s Encrypt 的免费证书并配置 Nginx。

执行以下命令:

sudo certbot --nginx -d your-domain.com -d www.your-domain.com
•	将 your-domain.com 替换为你的实际域名。
•	如果你有多个域名,可以用 -d 参数添加更多域名。

交互过程

Certbot 会提示你完成以下操作:
1. 输入邮箱地址,用于接收证书过期提醒。
2. 同意 Let’s Encrypt 服务条款。
3. 选择是否强制将 HTTP 流量重定向到 HTTPS(建议选择 2 强制重定向)。

Certbot 完成后,会看到如下提示:

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/your-domain.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/your-domain.com/privkey.pem

这表示证书已经成功获取,并自动配置到了 Nginx。

  1. 检查 Nginx 配置

Certbot 会自动修改 Nginx 的站点配置文件,例如 /etc/nginx/sites-available/your-domain.com,并添加如下内容:

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name your-domain.com www.your-domain.com;

    ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    root /var/www/your-domain.com;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

server {
    listen 80;
    listen [::]:80;
    server_name your-domain.com www.your-domain.com;

    return 301 https://$host$request_uri;
}
  1. 测试和重新加载 Nginx

测试 Nginx 配置是否正确:

sudo nginx -t

如果没有错误,重新加载 Nginx:

sudo systemctl reload nginx
  1. 验证 HTTPS 配置

在浏览器中访问 https://your-domain.com 和 https://www.your-domain.com,确认网站使用 HTTPS 并显示有效的锁标志。

你也可以通过以下命令验证证书:

openssl s_client -connect your-domain.com:443 -servername your-domain.com
  1. 自动续期证书

Let’s Encrypt 的证书有效期为 90 天,Certbot 会自动安排续期。

可以手动测试续期命令,确保没有问题:

sudo certbot renew --dry-run

如果没有错误,说明自动续期功能已配置好。

  1. 可选优化(提高安全性)

你可以在 Nginx 配置中添加一些额外设置来提高安全性:

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

# 禁用不安全的协议
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options DENY;
add_header X-XSS-Protection "1; mode=block";

保存后,重新加载 Nginx:

sudo systemctl reload nginx

总结

1.	安装 Certbot 和插件。
2.	配置域名 DNS 解析。
3.	使用 Certbot 获取和配置证书:certbot --nginx -d your-domain.com -d www.your-domain.com
4.	测试配置并重新加载 Nginx。
5.	验证 HTTPS 是否正常工作。
6.	确保自动续期功能正常:certbot renew --dry-run。

这样,你的 Nginx 网站就成功绑定了 HTTPS 证书,并且会自动续期,保持安全!

### 配置 Nginx 作为 SSL/TLS 国际证书代理 为了使 Nginx 成为 SSL/TLS 的国际证书代理,需要按照以下方式进行配置。这涉及获取合适的 SSL/TLS 证书以及正确设置 Nginx 来处理 HTTPS 请求。 #### 获取 SSL/TLS 证书 SSL/TLS 证书可以通过两种主要途径获得:Let’s Encrypt 提供的免费证书或商业认证机构(CA)签发的付费证书。如果选择使用 Let’s Encrypt,则需安装自动化工具 Certbot 并运行相应命令来获取和续订证书[^2]。 对于商业证书,通常会收到两个文件: - **证书文件** (`.crt` 或 `.pem`)。 - **私钥文件** (`.key`)。 这些文件将用于后续的 Nginx 配置中。 #### 安装 Certbot 工具 在基于 Debian 的系统上,例如 Debian 12.0,可通过以下命令安装 Certbot 及其 Nginx 插件: ```bash sudo apt update sudo apt install certbot python3-certbot-nginx -y ``` 此插件允许 Certbot 自动检测现有的 Nginx 配置并修改它们以启用 SSL/TLS[^3]。 #### 配置 Nginx 使用 SSL/TLS 一旦获得了所需的 SSL/TLS 证书,就需要将其集成到 Nginx 中。下面是一个典型的 Nginx 配置示例,展示如何加载证书并将服务器切换至 HTTPS 模式: ```nginx server { listen 80; server_name example.com www.example.com; # 将 HTTP 流量重定向到 HTTPS return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name example.com www.example.com; # 路径应替换为您实际存储证书的位置 ssl_certificate /path/to/your/certificate.crt; ssl_certificate_key /path/to/your/private.key; # 增强安全性选项 ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_dhparam /etc/nginx/dhparams.pem; location / { proxy_pass http://backend-server; 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; } } ``` 上述配置实现了以下几个功能: - 听取标准 HTTPS 端口 `443` 并启用了 SSL 功能[^1]。 - 设置了 `ssl_certificate` 和 `ssl_certificate_key` 参数指向您的证书及其对应的密钥位置。 - 添加了一些增强安全性的协议支持和加密套件设定。 - 如果 Nginx 正充当反向代理角色,则定义了一个 `location` 块,其中指定了后端服务地址并通过适当头信息转发请求。 #### 更新 Diffie-Hellman 参数 为了进一步提高连接的安全性,建议生成自定义 DH 参数文件: ```bash openssl dhparam -out /etc/nginx/dhparams.pem 2048 ``` 然后,在 Nginx 配置中指定该参数路径,如上面所示。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值