Let’s Encrypt免费SSL证书申请

Let’s Encrypt是目前最主流的免费SSL证书提供商,证书有效期为90天,支持通配符域名。自动化续期是它的核心设计,不需要手动操作。下面直接说怎么申请。 环境准备 你需要一个安装了Python的Linux服务器(Ubuntu/Debian/CentOS都行),并且域名已经解析到这台服务器。推荐用雨云的服务器,性价比高,稳定,跑Let’s Encrypt完全没问题。 安装Certbot Certbot是官方推荐的客户端工具,不同系统安装方式不同: Ubuntu/Debian:
sudo apt update
sudo apt install certbot
CentOS:
sudo yum install epel-release
sudo yum install certbot
申请证书(HTTP验证) 这是最常用的方式,需要服务器80端口能被外部访问。Certbot会启动一个临时HTTP服务来完成域名验证。 单域名证书:
sudo certbot certonly --standalone -d example.com -d www.example.com
通配符域名证书(支持所有子域名):
sudo certbot certonly --standalone -d *.example.com -d example.com
执行后会要求输入邮箱(用于接收证书过期提醒),同意服务条款。如果一切正常,证书会存放在:
/etc/letsencrypt/live/example.com/
目录下有四个文件:cert.pem(证书)、chain.pem(中间链)、fullchain.pem(完整链)、privkey.pem(私钥)。 申请证书(DNS验证) 如果你的服务器不能开80端口,或者需要申请通配符证书但不想每次都手动验证,可以用DNS验证。这种方式需要你拥有域名DNS管理权限,Certbot会要求你添加一条TXT记录。 先安装DNS插件,以Cloudflare为例:
sudo pip install certbot-dns-cloudflare
创建API凭据文件 /etc/cloudflare.ini:
dns_cloudflare_email = your@email.com
dns_cloudflare_api_key = your_api_key
设置权限:
chmod 600 /etc/cloudflare.ini
执行申请:
sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /etc/cloudflare.ini -d *.example.com -d example.com
自动续期 Let’s Encrypt证书只有90天,必须续期。Certbot自带续期功能,测试续期是否正常:
sudo certbot renew --dry-run
如果没问题,设置crontab自动续期:
sudo crontab -e
添加一行:
0 3 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"
每天凌晨3点检查,如果证书快过期(30天内)会自动续期,续期后重载Nginx。如果是Apache,把nginx改成apache2。 Nginx配置示例 证书拿到后,Nginx配置如下:
server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}
HTTP强制跳转HTTPS:
server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}
常见问题 申请失败提示”too many certificates already issued”:Let’s Encrypt对同一域名每周有证书数量限制(50张/周),如果频繁申请会触发。等一周再试。 提示”DNS problem: NXDOMAIN”:域名解析没生效,检查DNS记录。 提示”Failed to connect to 80 port”:防火墙没开放80端口,检查iptables或云服务商的安全组规则。用雨云的话去控制台放行80/443端口就行。 证书文件权限:privkey.pem需要只有root能读,否则Nginx启动会报权限错误。如果遇到,执行:
chmod 600 /etc/letsencrypt/live/example.com/privkey.pem
说一句,不要手动拷贝证书文件到其他地方,直接用letsencrypt目录里的软链接,续期后文件会自动更新。

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

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

请登录后发表评论

    暂无评论内容