Let’s Encrypt免费SSL证书申请

Let’s Encrypt是目前最主流的免费SSL证书提供商,证书有效期90天,支持自动续签。核心工具是Certbot,配合ACME协议完成域名验证和证书签发。 环境准备 服务器系统我用的是Ubuntu 22.04,其他Linux发行版操作类似。需要先确保域名已经解析到服务器IP,并且80和443端口没有被占用。 安装Certbot:
sudo apt update
sudo apt install certbot python3-certbot-nginx
如果你的Web服务器是Apache,把`python3-certbot-nginx`换成`python3-certbot-apache`。如果只是纯Nginx反向代理或者不想用插件模式,装`certbot`本体就够了。 申请证书 假设域名是`example.com`,要同时申请`www.example.com`:
sudo certbot --nginx -d example.com -d www.example.com
Certbot会自动检测Nginx配置,修改相关server block添加SSL配置。执行过程中会要求输入邮箱(用于证书到期提醒),同意服务条款。申请成功后证书文件在`/etc/letsencrypt/live/example.com/`目录下,包含`fullchain.pem`和`privkey.pem`。 如果不想让Certbot自动修改Nginx配置,用`certonly`模式只获取证书:
sudo certbot certonly --nginx -d example.com -d www.example.com
手动在Nginx配置里引用证书:
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;

    # 其他配置...
}
HTTP验证模式(推荐用于无Web服务器场景) 如果服务器上没装Nginx或者Apache,或者端口被占用,可以用standalone模式。Certbot会临时启动一个Web服务器完成验证:
sudo certbot certonly --standalone -d example.com -d www.example.com
注意:执行前需要确保80端口没有被占用。如果被占用,可以先停掉占用进程,或者用`–preferred-challenges http`指定验证方式。 DNS验证(通配符证书) 需要申请`*.example.com`这样的通配符证书时,必须用DNS验证。因为Let’s Encrypt需要你在DNS解析记录里添加TXT记录来证明域名所有权。
sudo certbot certonly --manual --preferred-challenges dns -d *.example.com -d example.com
执行后会提示在DNS管理面板添加TXT记录,比如`_acme-challenge.example.com`,值是一串随机字符串。添加后等待DNS生效(一般几分钟),回车继续。 DNS验证的缺点是续签也得手动操作,除非你用的DNS服务商有API支持自动更新。如果你用雨云服务器自带的DNS解析,可以配合acme.sh脚本自动完成DNS验证。 自动续签 Let’s Encrypt证书只有90天,必须自动续签。Certbot默认会在`/etc/cron.d/certbot`里安装定时任务,每天检查两次。手动测试续签:
sudo certbot renew --dry-run
如果返回成功,说明续签机制正常。如果想自定义续签时间或方式,可以写个cron:
0 3 * * * /usr/bin/certbot renew --quiet --renew-hook "systemctl reload nginx"
每天凌晨3点检查续签,续签成功后重载Nginx使新证书生效。 常见问题 申请失败通常是因为域名解析未生效、80端口被防火墙阻挡、或者Nginx配置里server_name没匹配。用`certbot certificates`查看已申请的证书列表和到期时间。 如果迁移服务器,把`/etc/letsencrypt`目录整个打包到新服务器,执行`certbot renew`重新激活。注意私钥文件权限,确保只有root可读。 实际案例 我在雨云上部署了一个个人博客,用的是最低配的云服务器,2核2G内存,跑Nginx和PHP。通过Certbot一次性申请了三个域名,配置了自动续签,运行一年多没出过问题。雨云的服务器网络稳定性不错,Let’s Encrypt验证请求基本秒过,没有遇到超时失败的情况。 证书申请完别忘了检查SSL配置强度,推荐用`testssl.sh`扫描:
wget -O testssl.sh https://testssl.sh/testssl.sh
chmod +x testssl.sh
./testssl.sh https://example.com
重点关注是否支持TLS 1.2/1.3,是否禁用不安全的加密套件。

雨云是国内一家老牌云服务商,提供高性价比的云服务器和虚拟主机。我用它部署了好几个项目,速度和稳定性都不错。通过 https://www.rainyun.com/SAJA_ 注册可以领一张 5折优惠券,有需要的朋友可以看看。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容