在 CentOS 系统上使用 Let's Encrypt 获取 SSL 证书,您可以使用 Certbot 工具。Certbot 是一个自动化的工具,可以简化 SSL 证书的获取和续订过程。以下是详细的步骤:
安装 EPEL 和 Certbot
- 安装 EPEL:
EPEL (Extra Packages for Enterprise Linux) 是一个附加的软件仓库,其中包含了多种软件包。我们需要安装 EPEL 以便安装 Certbot。sudo yum install epel-release
- 安装 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 证书
-
运行 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
-
检查证书:
您可以检查证书是否已正确安装。ls -l /etc/letsencrypt/live/example.com/
-
测试 HTTPS:
使用 curl 或者浏览器测试 HTTPS 访问。curl -I https://example.com
定期检查和续订证书
Let's Encrypt 证书的有效期为 90 天,但 Certbot 会在到期前自动续订。您可以定期检查证书的有效期。
-
检查证书的有效期:
sudo certbot certificates
-
手动续订证书(如果需要):
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
同时需要确保网站可以被访问