如何在 Linux 环境下使用 Certbot 自动生成 SSL 证书并部署到 Nginx 服务中

SSL加密技术对网络传输的数据安全非常重要,然而,申请SSL证书却很麻烦,而且免费的SSL证书最多使用3个月,使得广大程序员十分不方面,流程如下

这里风云给大家介绍一个工具,自动帮我们完成该项工作,使用Certbot 工具生成 SSL 证书并自动部署到 Nginx 服务中,主要步骤如下:

安装 Certbot

配置 Nginx

获取和安装 SSL 证书

自动部署 SSL 证书到 Nginx

配置自动续期

1. 安装 Certbot

Certbot 是一个用于自动化获取和管理 SSL 证书的工具,它与 Let's Encrypt 证书颁发机构紧密集成,支持自动化配置 SSL 证书。你可以使用以下命令安装 Certbot:

1.1 安装 Certbot 和 Nginx 插件

首先,确保你的系统包管理器已经更新,然后安装 Certbot 和 Nginx 插件。

对于 Ubuntu/Debian 系统

sudo apt update

sudo apt install certbot python3-certbot-nginx

对于 CentOS/RHEL 系统

sudo yum install epel-release

sudo yum install certbot python3-certbot-nginx

对于 Fedora 系统

sudo dnf install certbot python3-certbot-nginx

安装完成后,你可以使用以下命令来检查 Certbot 是否正确安装:

certbot --version

2. 配置 Nginx

在生成 SSL 证书之前,确保你的 Nginx 配置正确,并且已经指向你的网站根目录。

2.1 配置虚拟主机

编辑 Nginx 配置文件(通常是 /etc/nginx/sites-available/default 或 /etc/nginx/nginx.conf,具体路径可能会有所不同)来配置虚拟主机。假设你的域名是 example.com,可以参考以下配置:

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/html;  # 网站根目录
    index index.html index.htm;

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

保存并退出配置文件后,重新加载 Nginx 配置:

sudo nginx -t  # 测试 Nginx 配置文件是否有误

sudo systemctl reload nginx  # 重新加载配置

确保 example.com 的 DNS 记录已经正确指向你的服务器 IP。

3. 使用 Certbot 获取 SSL 证书

3.1 使用 Certbot 自动获取和配置 SSL 证书

Certbot 支持通过 自动化插件 来生成和安装 SSL 证书。我们将使用 Certbot 自带的 Nginx 插件来自动生成和安装 SSL 证书,并自动更新 Nginx 配置。

运行以下命令:

sudo certbot --nginx -d example.com -d www.example.com

此命令会做以下几件事:

自动与 Let's Encrypt 通信并请求 SSL 证书。

自动配置 Nginx 来启用 SSL,并配置 HTTPS。

自动重启 Nginx 服务以使更改生效。

说明:

--nginx 指示 Certbot 使用 Nginx 插件进行自动配置。

-d example.com -d www.example.com 指定需要申请 SSL 证书的域名。

3.2 证书验证

Certbot 会提示你输入电子邮件地址,并要求你同意 Let's Encrypt 的服务条款。

输入一个有效的电子邮件地址,以便在证书即将过期时接收到提醒。

同意服务条款。

如果一切顺利,你将看到类似以下的输出:

Successfully obtained SSL certificate for example.com and www.example.com

4. 自动部署 SSL 证书到 Nginx

4.1 Certbot 自动配置 Nginx

Certbot 会自动为你配置 Nginx,使得 HTTPS 生效。如果 Nginx 配置中有问题或需要手动调整,你可以查看 Nginx 配置文件,确保它包含以下内容:

server {
    listen 443 ssl http2;
    server_name example.com www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

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

    location / {
        root /var/www/html;

        index index.html index.htm;
    }
}

server {
    listen 80;

    server_name example.com www.example.com;

    return 301 https://$host$request_uri;  # 强制跳转 HTTPS
}

4.2 验证配置

在浏览器中访问 https://example.com,你应该看到网站已经通过 HTTPS 加载,并且地址栏显示安全锁。

如果需要检查 SSL 证书的有效性,可以使用工具如 SSL Labs' SSL Test 来验证证书配置和网站安全性。

5. 配置自动续期

Let's Encrypt 证书有效期为 90 天,因此需要定期续期。Certbot 提供了自动续期功能。

5.1 设置自动续期

Certbot 在安装时默认会为你设置定时任务(cron job)来自动续期证书。你可以通过以下命令检查续期设置:

sudo systemctl status certbot.timer

5.2 手动续期

如果你想手动测试续期,可以运行以下命令:

sudo certbot renew --dry-run

此命令不会实际续期证书,但会模拟续期过程,以确保自动续期功能正常。

Certbot 和 Let's Encrypt 提供了免费的 SSL 证书,帮助网站快速实现 HTTPS 加密,确保安全的通信和用户数据保护。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值