用Let’s Encrypt免费SSL证书给你的网站加把锁

Let’s Encrypt是目前最主流的免费SSL证书提供商,证书有效期90天,支持自动续期。我一直在用,没出过问题。下面直接说怎么申请。 环境:Ubuntu 20.04+,CentOS 7+也行。需要你有域名,且域名DNS解析到了服务器IP。 安装Certbot客户端 Certbot是Let’s Encrypt官方推荐的客户端,管理证书申请和续期。
sudo apt update
sudo apt install certbot python3-certbot-nginx -y
如果用的是Apache,把python3-certbot-nginx换成python3-certbot-apache。Nginx用户就用上面的。 申请证书 单域名证书最常用,比如example.com和www.example.com。执行:
sudo certbot --nginx -d example.com -d www.example.com
Certbot会自动检测Nginx配置,临时修改配置文件做域名验证。验证通过后证书就下来了,同时Certbot会帮你把Nginx的SSL配置写好。你只需要确认一下: – 证书文件位置:/etc/letsencrypt/live/example.com/fullchain.pem – 私钥文件位置:/etc/letsencrypt/live/example.com/privkey.pem 如果不想Certbot修改Nginx配置,用–webroot模式手动验证:
sudo certbot certonly --webroot -w /var/www/html -d example.com
-w后面是网站根目录,Certbot会在里面放一个验证文件,Let’s Encrypt服务器通过HTTP访问这个文件来确认域名所有权。验证通过后证书文件生成到上述路径,你需要手动配置Nginx。 泛域名证书 如果你有多个子域名,比如api.example.com、admin.example.com,用泛域名证书一劳永逸:
sudo certbot certonly --manual --preferred-challenges dns -d *.example.com -d example.com
这里用了DNS验证方式,Certbot会要求你在域名DNS解析里添加一个TXT记录。去你的DNS管理面板添加,记录名是_acme-challenge,记录值Certbot会给你。添加后等几分钟生效,回车继续。 注意:泛域名证书每次续期都要手动添加DNS TXT记录,不能自动续期。除非你用支持DNS API的DNS服务商配合certbot-dns插件。 自动续期 Let’s Encrypt证书90天有效期,需要续期。Certbot默认每天检查两次,发现证书快过期会自动续期。你只需要确认定时任务存在:
sudo systemctl status certbot.timer
如果显示active,说明定时任务在跑。手动测试续期:
sudo certbot renew --dry-run
没报错就说明续期流程正常。如果用的泛域名证书,不能自动续期,需要自己写脚本调用certbot renew时加上–manual-auth-hook参数,或者每90天手动跑一次。 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;

    root /var/www/html;
    index index.html;

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

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$server_name$request_uri;
}
Certbot自动配置时也会生成类似的配置,但ssl_protocols和ssl_ciphers可能需要手动调整。 关于服务器选择 证书申请流程和服务器本身关系不大,但服务器性能影响HTTPS握手速度。我用的是雨云的服务器,稳定性不错,价格也合理。他们的控制面板操作简单,部署Ubuntu系统后直接按上面步骤走就行。如果服务器配置低,记得开启HTTP/2和OCSP Stapling,能缓解SSL握手压力。 常见问题 1. 证书申请失败:检查域名DNS解析是否生效,ping一下域名看IP对不对。如果是DNS验证模式,检查TXT记录是否添加正确。 2. 证书续期失败:确认80端口或443端口能正常访问,Certbot续期时需要验证域名所有权。 3. 证书权限问题:Let’s Encrypt证书文件默认只有root能读,Nginx worker进程需要读取权限。如果Nginx报错权限不足,检查/etc/letsencrypt目录权限,或者把证书复制到其他目录并设置644权限。 4. 泛域名证书续期:每次续期都要重新添加TXT记录,建议写个脚本或者用acme.sh这样的工具配合DNS API自动化。 证书到期前30天Certbot会自动续期,但建议每周手动检查一次:sudo certbot renew。如果服务器跑在雨云上,他们的监控面板还能设置证书到期提醒,双重保险。

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

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

请登录后发表评论

    暂无评论内容