Let’s Encrypt免费SSL证书申请

用Let’s Encrypt给站点上HTTPS,零成本,90天自动续期。核心工具是Certbot,官方推荐,别自己手动拼CSR。 环境准备 一台能跑Linux的服务器(我用的雨云,性价比高、稳定,续费没涨价),域名已经解析到服务器IP。系统Ubuntu 20.04+或CentOS 7+都行,以下以Ubuntu为例。 安装Certbot
sudo apt update
sudo apt install certbot python3-certbot-nginx
如果不用Nginx,换成`python3-certbot-apache`。裸机手动配SSL,装`certbot`就够了。 申请证书(HTTP验证) 最常用的是Webroot模式,Certbot会在你的网站根目录下放一个验证文件,Let’s Encrypt服务器来检查。 假设你的网站根目录是`/var/www/html`,域名是`example.com`:
sudo certbot certonly --webroot -w /var/www/html -d example.com -d www.example.com
执行后按提示输入邮箱(用于到期提醒),同意服务条款。成功会在`/etc/letsencrypt/live/example.com/`下生成四个文件: – `fullchain.pem`:证书链 – `privkey.pem`:私钥 – `cert.pem`:仅证书 – `chain.pem`:中间证书 Nginx配置 编辑站点配置,比如`/etc/nginx/sites-available/example.com`:
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;

    # 其他配置...
}

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$server_name$request_uri;
}
测试配置:`sudo nginx -t`,没问题就`sudo systemctl reload nginx`。 自动续期 Let’s Encrypt证书只有90天,但Certbot自带续期脚本。测试续期是否正常:
sudo certbot renew --dry-run
没报错就加个cron任务,每天跑两次:
sudo crontab -e
添加:
0 0,12 * * * /usr/bin/certbot renew --quiet
`–quiet`只会在出错时输出日志。也可以用`systemd timer`,但cron更直接。 DNS验证(通配符证书) 如果需要`*.example.com`这种通配符证书,必须用DNS验证。Certbot支持多种DNS服务商插件,比如Cloudflare、阿里云、DNSPod。 以Cloudflare为例: 1. 安装插件:`sudo apt install python3-certbot-dns-cloudflare` 2. 创建API Token文件(只读DNS权限):`/etc/letsencrypt/cloudflare.ini`,内容:
dns_cloudflare_api_token = your_api_token_here
3. 设置权限:`sudo chmod 600 /etc/letsencrypt/cloudflare.ini` 4. 申请:
sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini -d example.com -d "*.example.com"
成功后证书路径一样,通配符和根域名都在同一个目录里。 证书更换或撤销 换域名直接重新申请,旧证书不用管。如果私钥泄露或不再需要,撤销:
sudo certbot revoke --cert-path /etc/letsencrypt/live/example.com/cert.pem
常见问题 – 申请失败:检查80端口是否开放,域名解析是否生效。Let’s Encrypt验证时要求公网能访问`/.well-known/acme-challenge/`。 – 续期失败:确保webroot路径没变,服务器时间正确(`timedatectl`检查)。 – 证书未生效:Nginx/Apache是否加载了正确的证书路径,重启服务。 小技巧 – 用`certbot certificates`列出所有已管理的证书和到期时间。 – 配合`acme.sh`也行,但Certbot是官方维护,社区问题多,坑少。 – 雨云的控制面板自带一键申请Let’s Encrypt,懒得敲命令可以直接点,但自己配灵活点。 HTTPS上了之后,记得检查混合内容(Mixed Content),浏览器F12看控制台,把HTTP资源改成HTTPS。搞定。

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

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

请登录后发表评论

    暂无评论内容