Cento7使用 Let's Encrypt 获取Https证书

在 CentOS 系统上使用 Let's Encrypt 获取 SSL 证书,您可以使用 Certbot 工具。Certbot 是一个自动化的工具,可以简化 SSL 证书的获取和续订过程。以下是详细的步骤:

安装 EPEL 和 Certbot

  1. 安装 EPEL:
    EPEL (Extra Packages for Enterprise Linux) 是一个附加的软件仓库,其中包含了多种软件包。我们需要安装 EPEL 以便安装 Certbot。

    sudo yum install epel-release
  2. 安装 Certbot:
    安装 Certbot 和 Certbot 的 Nginx 插件。

    sudo yum install certbot python3-certbot-nginx

    注意:这里可能会出现安装失败,如果出现提示:

    No package python3-certbot-nginx available.

    可以使用certbot-nginx包代替python3-certbot-nginx

如果插件没有安装成功,可能会出现The requested nginx plugin does not appear to be installed错误提示,可以通过以下命令查看插件是否安装:

certbot --version
certbot plugins

如果输出中没有显示 nginx 插件,那么您需要安装它。

以下是两种安装方式:
方式一:

sudo yum install epel-release
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
sudo yum-config-manager --enable remi
sudo yum install certbot python3-certbot-nginx

方式二:

sudo yum install python3 python3-pip gcc
sudo python3 -m pip install certbot
sudo python3 -m pip install certbot-nginx

配置 Nginx

在获取证书之前,确保您的 Nginx 配置正确设置,并且监听 HTTP 和 HTTPS 端口。例如,您需要确保 Nginx 配置中有类似以下的服务器块:

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

    root /var/www/wordpress-example;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 根据您的 PHP 版本进行调整
    }

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}

server {
    listen 443 ssl;
    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 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

    location / {
        return 301 http://$host$request_uri;
    }
}

请注意,上面的 HTTPS 服务器块中指定了 Let's Encrypt 证书的路径。您还需要确保 Nginx 正确配置了 SSL 设置。

获取 SSL 证书

  1. 运行 Certbot:
    使用 Certbot 获取证书。这将自动配置 Nginx 以使用 HTTPS,并在证书即将过期时自动续订。

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

    这个命令会自动检测 Nginx 配置并获取 SSL 证书。Certbot 会自动备份您的 Nginx 配置文件,并在成功获取证书后更新配置文件以使用新的 SSL 证书。
    或者:

    sudo certbot certonly --webroot -w /var/www/html -d example.com -d www.example.com
  2. 检查证书:
    您可以检查证书是否已正确安装。

    ls -l /etc/letsencrypt/live/example.com/
  3. 测试 HTTPS:
    使用 curl 或者浏览器测试 HTTPS 访问。

    curl -I https://example.com

定期检查和续订证书

Let's Encrypt 证书的有效期为 90 天,但 Certbot 会在到期前自动续订。您可以定期检查证书的有效期。

  1. 检查证书的有效期:

    sudo certbot certificates
  2. 手动续订证书(如果需要):

    sudo certbot renew

注意事项:

  • 确保您的域名 example.com 的 DNS 设置正确指向您的 CentOS 服务器的 IP 地址。
  • 确保防火墙允许 HTTP 和 HTTPS 流量进入。如果使用 iptables 或 firewalld,您需要允许 80 和 443 端口。
  • 如果您使用的是 Nginx 之外的 Web 服务器,您需要使用不同的插件,例如 certbot 本身可以用于 Apache 或其他 Web 服务器。

测试和重启 Nginx

更新配置后,请测试配置的有效性并重启 Nginx 服务:

sudo nginx -t
sudo systemctl restart nginx

删除无用的证书

切换到 certbot 目录

cd /etc/letsencrypt

查看现有证书

ls -l /etc/letsencrypt/live/

删除证书:

certbot delete --cert-name www.example.com
除非注明,否则均为哦豁原创文章,转载必须以链接形式标明本文链接
guest

1 评论
最多投票
最新 最旧
内联反馈
查看所有评论