在 Linux 中使用 Certbot 配置 HTTPS

在现代网站开发中,启用 HTTPS 已成为保障数据传输安全的基本需求。Certbot 是一款免费且开源的工具,能够轻松地为网站申请和安装 SSL/TLS 证书,广泛支持 Let’s Encrypt 证书。本指南将详细介绍如何在 Linux 系统中使用 Certbot 配置 HTTPS。


环境准备

  • 一台运行 Linux 系统的服务器(推荐 Ubuntu 或 CentOS)。
  • 拥有管理员权限的账户。
  • 已解析到服务器的域名。
  • 已安装的 Web 服务器(如 Nginx 或 Apache)。

步骤 1:安装 Certbot 和 Nginx 插件

  1. 确保系统软件包已更新:

    sudo apt update
    sudo apt upgrade -y
    
  2. 安装 Certbot 和 Nginx 插件:

    sudo apt install certbot python3-certbot-nginx -y
    

步骤 2:确保 Nginx 正常运行

  1. 确保 Nginx 已启动并正常运行:

    sudo systemctl status nginx
    
  2. 配置 Nginx 的域名服务器块。例如,编辑以下文件(根据实际路径调整):

    sudo nano /etc/nginx/sites-available/default
    

    添加或确认以下内容(替换 your_domain.com 为实际域名):

    server {
        listen 80;
        server_name your_domain.com www.your_domain.com;
    
        location / {
            root /var/www/html;
            index index.html index.htm;
        }
    }
    
  3. 测试并重载 Nginx 配置:

    sudo nginx -t
    sudo systemctl reload nginx
    

步骤 3:使用 Certbot 获取 SSL 证书

运行以下命令自动为域名配置 HTTPS:

sudo certbot --nginx -d your_domain.com -d www.your_domain.com
  • 说明:
    • -d your_domain.com-d www.your_domain.com 是你想配置 HTTPS 的域名。
    • Certbot 会自动更新 Nginx 配置文件,添加 HTTPS 配置。
  1. Certbot 会提示你输入一些信息并询问是否重定向 HTTP 到 HTTPS,选择 2 以强制 HTTPS:

    Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
    -------------------------------------------------------------------------------
    1: No redirect - Make no further changes to the webserver configuration.
    2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
    new sites, or if you're confident your site works on HTTPS. You can undo this
    change by editing your web server's configuration.
    -------------------------------------------------------------------------------
    Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
    

步骤 4:验证 HTTPS 配置

  1. 打开浏览器,访问你的域名(如 https://your_domain.com),确保 HTTPS 已生效。

  2. 使用以下命令检查证书有效性:

    sudo certbot certificates
    

步骤 5:自动续期配置

  1. Certbot 默认会在安装时创建一个自动续期任务。可以通过以下命令检查:

    sudo systemctl list-timers | grep certbot
    
  2. 手动测试续期任务(确保不会有错误):

    sudo certbot renew --dry-run
    

    如果返回 Congratulations, all renewals succeeded!,说明自动续期配置成功。


错误问题与解决方法

问题描述:

这个错误表明当前环境中的 requests_toolbelturllib3 版本之间存在不兼容的问题。urllib3 的更新移除了对 appengine 的支持,而 requests_toolbelt 的某些旧版本仍依赖于它,导致运行 Certbot 时发生 ImportError

解决方法:

  1. 更新 requests_toolbelturllib3

    确保 requests_toolbelturllib3 是最新版本。

    运行以下命令更新它们:

    sudo pip install --upgrade requests_toolbelt urllib3
    

    再次尝试:

    sudo certbot --nginx