在 CentOS 上配置 Nginx 使用免费的 HTTPS 证书,最常见的方法是通过 Let’s Encrypt 来申请和配置免费的 SSL/TLS 证书。Let’s Encrypt 提供了自动化的免费证书申请和管理方式,非常适合个人和小型网站使用。
步骤概览
- 安装 Certbot(Let’s Encrypt 客户端)
- 使用 Certbot 申请 SSL 证书
- 配置 Nginx 使用 HTTPS
- 自动化证书续期
详细步骤
1. 安装 Certbot(Let’s Encrypt 客户端)
Certbot 是一个自动化工具,可以帮你向 Let’s Encrypt 申请 SSL 证书,并自动配置 Web 服务器(如 Nginx 或 Apache)。
- 安装 EPEL 仓库:Certbot 在 CentOS 上通过 EPEL(Extra Packages for Enterprise Linux)仓库提供,因此需要先安装 EPEL 仓库。
sudo yum install epel-release -y
- 安装 Certbot:安装 Certbot 和 Nginx 插件:
sudo yum install certbot python3-certbot-nginx -y
2. 使用 Certbot 申请 SSL 证书
- 申请证书并自动配置 Nginx:如果你已经配置好了 Nginx,并且希望 Certbot 自动为你配置 SSL(即自动修改 Nginx 配置文件,添加 HTTPS),可以使用如下命令:
sudo certbot --nginx
执行这个命令时,Certbot 会询问你一些问题,如:- 选择你要为其配置证书的域名。
- 是否希望将 HTTP 流量自动重定向到 HTTPS(推荐选择“是”)。
- 手动申请证书:如果你不希望自动修改 Nginx 配置,可以只申请证书,并稍后手动配置 Nginx:
sudo certbot certonly --nginx
这会生成证书并保存在/etc/letsencrypt/live/
目录下。证书生成完成后,你需要手动修改 Nginx 配置来使用这些证书。
3. 配置 Nginx 使用 HTTPS
无论你是自动配置还是手动申请证书,Nginx 都需要修改配置以启用 HTTPS。
- 编辑 Nginx 配置文件:打开 Nginx 配置文件(通常是
/etc/nginx/nginx.conf
或/etc/nginx/conf.d/default.conf
,具体路径根据你的 Nginx 配置不同而不同)。sudo vi /etc/nginx/nginx.conf
- 修改 HTTP 配置部分:在你的 Nginx 配置中,找到
server
配置块(通常是 80 端口)。修改或添加如下配置以启用 HTTPS:server { listen 80; server_name your_domain.com www.your_domain.com; # 替换为你的域名 # 强制所有 HTTP 请求重定向到 HTTPS return 301 https://$host$request_uri; }
- 配置 HTTPS:在相同的 Nginx 配置文件中,添加一个监听 443 端口的
server
块,并指向 Let’s Encrypt 证书的位置。配置如下:server { 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 配置(可选) ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE+AESGCM:ECDHE+CHACHA20:...'; ssl_prefer_server_ciphers on; location / { # 你的配置... } }
替换your_domain.com
为你的实际域名,确保指向正确的证书路径。 - 重新加载 Nginx 配置:完成配置后,重新加载 Nginx 使配置生效:
sudo systemctl reload nginx
4. 自动化证书续期
Let’s Encrypt 的证书有效期为 90 天,因此需要定期续期。幸运的是,Certbot 提供了自动续期的功能。
- 测试自动续期:Certbot 默认会在
/etc/cron.d
中创建一个定时任务来定期检查和续期证书。如果你想手动测试自动续期,可以运行以下命令:sudo certbot renew --dry-run
这会模拟续期过程,确保一切正常。 - 设置定时任务:如果你的系统没有自动设置,你可以通过
cron
设置一个定时任务来自动续期证书。编辑cron
配置文件:sudo crontab -e
添加如下任务,每天运行一次续期检查:0 0,12 * * * certbot renew --quiet && systemctl reload nginx
这样,Certbot 将每天尝试续期证书并在成功续期后重载 Nginx。
总结
通过以上步骤,你可以在 CentOS 上使用 Let’s Encrypt 和 Certbot 来为 Nginx 配置免费的 HTTPS 证书。这个过程涉及到证书的申请、配置 Nginx 支持 SSL、以及自动续期证书等。Let’s Encrypt 提供的免费证书和自动化工具让你能够轻松实现安全的 HTTPS 网站。
发表回复