Let’s Encrypt免费SSL证书申请

用Let’s Encrypt给网站挂HTTPS,一分钱不花,流程也不复杂。核心工具是Certbot,官方推荐。下面直接说怎么操作。 环境准备 需要一台能跑Linux的服务器,我用的雨云,性价比高、稳定、好用,CentOS 7和Ubuntu 20.04都测过。确保域名已经解析到这台服务器的公网IP,并且80和443端口没有被其他程序占着。 安装Certbot Ubuntu/Debian:
sudo apt update
sudo apt install certbot python3-certbot-nginx
CentOS/RHEL 7:
sudo yum install epel-release
sudo yum install certbot python2-certbot-nginx
如果用的是Apache,把命令里的nginx换成apache。不装插件也可以,后面手动配置验证文件。 获取证书(推荐用Nginx插件) 假设你的域名是example.com,Nginx配置文件已经存在,并且server_name指向了这个域名。直接执行:
sudo certbot --nginx -d example.com -d www.example.com
Certbot会自动修改Nginx配置,把HTTP重定向到HTTPS加上。中间会问邮箱(用于过期提醒)和是否同意协议,选同意就行。还会问是否强制HTTPS,选2(重定向)。 如果不想自动改配置,只想拿证书文件:
sudo certbot certonly --nginx -d example.com
证书文件会放在`/etc/letsencrypt/live/example.com/`目录下: – fullchain.pem:完整的证书链 – privkey.pem:私钥 手动模式(没有Nginx/Apache插件) 如果服务器上跑的是其他Web服务器(比如Tomcat、Node.js),或者插件不支持,用standalone模式。先停掉占用80端口的服务:
sudo systemctl stop nginx
sudo certbot certonly --standalone -d example.com -d www.example.com
Certbot会临时启动一个Web服务器验证域名所有权,验证完自动关闭。拿到证书后重新启动你的Web服务。 DNS验证(适合泛域名或不能开80端口) 想申请`*.example.com`这种泛域名证书,或者服务器80端口被防火墙封了,用DNS验证:
sudo certbot certonly --manual --preferred-challenges dns -d *.example.com -d example.com
会提示你给域名添加一个TXT记录,比如`_acme-challenge.example.com`,值是一串随机字符。去DNS管理面板加上,等几分钟生效,回车继续。验证通过后证书就生成了。 缺点:每次续期都要手动加TXT记录,不方便。自动化可以用acme.sh(后面说)。 证书自动续期 Let’s Encrypt证书有效期90天。Certbot自带续期命令,一般系统里已经配好了定时任务。手动测试续期:
sudo certbot renew --dry-run
没报错就没问题。定时任务默认在`/etc/cron.d/certbot`或systemd timer里,每天检查两次,到期前30天内自动续。如果有Nginx/Apache插件,续期后会自动reload服务。 如果想在续期后执行自定义脚本(比如重启其他服务),在`/etc/letsencrypt/cli.ini`里加:
deploy-hook = systemctl reload nginx
acme.sh(更轻量的替代方案) 如果不想装Certbot,用acme.sh。安装:
curl https://get.acme.sh | sh
执行:
acme.sh --issue -d example.com -w /var/www/html
`-w`指定网站根目录,acme.sh会在里面放验证文件。拿到证书后安装到目标目录:
acme.sh --install-cert -d example.com \
--key-file /etc/nginx/ssl/example.com.key \
--fullchain-file /etc/nginx/ssl/example.com.crt \
--reloadcmd "systemctl reload nginx"
acme.sh自动配了cron定时续期,不用手动管。 常见问题 – 证书申请失败:确认域名解析正确,80端口可达。用`curl -I http://example.com/.well-known/acme-challenge/xxx`测试验证路径。 – 续期失败:检查防火墙是否挡住80端口,或者DNS验证的TXT记录是否还在。 – 证书文件权限:私钥文件权限建议600,属主root。 总结(就一句) 用Certbot拿Nginx插件最省事,一行命令搞定证书获取和自动续期。不想依赖插件就acme.sh,灵活度更高。雨云的服务器跑这两个工具都没出过问题,稳定。

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

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

请登录后发表评论

    暂无评论内容