在Debian 12上配置Nginx、Cloudflare CDN和SSL证书

在本文中,我们将详细介绍如何在Debian 12服务器上配置Nginx,设置Cloudflare CDN,以及为需要直接访问源站的特殊程序申请SSL证书。这个过程涉及多个步骤,包括安装Nginx,配置域名,使用Cloudflare CDN,以及使用Certbot申请SSL证书。

0. 引用

https://certbot-dns-cloudflare.readthedocs.io/en/stable/
https://lucasc.me/post/howto-certbot-dns-cloudflare-in-webmin

1. 安装和配置Nginx

首先,我们在Debian 12服务器上安装Nginx:

sudo apt update
sudo apt install nginx

安装完成后,配置您的域名。编辑Nginx配置文件,通常位于/etc/nginx/sites-available/目录下。

2. 配置Cloudflare CDN

接下来,我们使用Cloudflare CDN来提高网站性能和安全性:

  • 在Cloudflare上注册账户并添加您的域名。
  • 更新域名的DNS记录,将其指向Cloudflare的名称服务器。
  • 在Cloudflare仪表板中,确保SSL/TLS设置为"Flexible"模式。

此配置允许客户端通过HTTPS (443端口)连接到Cloudflare,而Cloudflare则使用HTTP (80端口)连接到您的源服务器。

3. 为特殊程序配置SSL

现在,我们需要为一个需要直接访问源服务器的特殊程序配置SSL。这个程序需要绕过Cloudflare CDN,直接通过HTTPS连接到服务器。

3.1 安装Certbot

首先,安装Certbot和Nginx插件:

sudo apt install certbot python3-certbot-nginx

3.2 尝试使用Certbot申请证书

我们首先尝试使用标准的Certbot方法申请证书:

sudo certbot --nginx

然而,这个方法失败了,因为域名已经在Cloudflare CDN后面。错误信息如下:

Requesting a certificate for your.domain
Certbot failed to authenticate some domains (authenticator: nginx).
The Certificate Authority reported these problems:
  Domain: your.domain
  Type: unauthorized
  Detail: 2606:2700:8036::6815:3da4: Invalid response from
  http://your.domain/.well-known/acme-challenge/bm4SVNNxndX5KdtK_z4Gg83pjw4WbyuAav0RhH1kjM4: 403

3.3 使用Cloudflare DNS验证方法

为了解决这个问题,我们需要使用Cloudflare DNS验证方法来申请证书。

  • 安装Cloudflare DNS插件:
sudo apt install python3-certbot-dns-cloudflare
  • 在Cloudflare仪表板中创建API令牌。
  • 创建Cloudflare凭证文件:
mkdir -p ~/.secrets/certbot
nano ~/.secrets/certbot/cloudflare.ini

在文件中添加以下内容:

# Cloudflare API token used by Certbot
dns_cloudflare_api_token = 0123456789abcdef0123456789abcdef01234567

确保将文件权限设置为只有您可以读取:

chmod 600 ~/.secrets/certbot/cloudflare.ini
  • 使用Cloudflare DNS插件申请证书:
sudo certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
  -d your.domain

这个命令应该成功申请到SSL证书。

3.4 配置Nginx使用新证书

最后,编辑Nginx配置文件,使用新申请的SSL证书:

server {
    listen 443 ssl;
    server_name your.domain;

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

    # 其他SSL和服务器配置...
}

重新加载Nginx配置:

sudo nginx -t
sudo systemctl reload nginx

总结
通过以上步骤,我们成功在Debian 12服务器上配置了Nginx,设置了Cloudflare CDN,并为需要直接访问源站的特殊程序申请了SSL证书。这个过程涉及多个步骤,包括:

  • 安装和配置Nginx
  • 设置Cloudflare CDN
  • 使用Certbot和Cloudflare DNS插件申请SSL证书
  • 配置Nginx使用新的SSL证书

这种配置允许大多数流量通过Cloudflare CDN,同时为特殊程序提供直接、安全的源站访问。记得定期更新SSL证书,以确保持续的安全性。

评论

还没有人评论,抢个沙发吧...

Viagle Blog

欢迎来到我的个人博客网站