Let’s Encrypt免费SSL证书申请

Let’s Encrypt是目前最主流的免费SSL证书提供商,证书有效期90天,支持自动续期。我用它给雨云上的几个站点都配了HTTPS,从来没出过问题。下面直接说怎么申请。 环境准备 需要一台能运行命令的服务器,以及一个指向该服务器的域名。我用的雨云,性价比高,稳定,系统是Ubuntu 22.04。其他Linux发行版操作类似,包管理器换成yum就行。 安装Certbot Certbot是Let’s Encrypt官方推荐的客户端,负责自动申请和续期。
sudo apt update
sudo apt install certbot -y
如果是Nginx,可以顺便装python3-certbot-nginx,能自动改配置。Apache同理装python3-certbot-apache。我习惯手动改配置,所以只装certbot。 申请证书 假设域名是 example.com 和 www.example.com,用standalone模式申请。需要先停掉占用80端口的服务,因为Let’s Encrypt验证域名所有权时会临时监听80端口。
sudo systemctl stop nginx   # 如果你用Nginx
运行:
sudo certbot certonly --standalone -d example.com -d www.example.com --email your@email.com --agree-tos --no-eff-email
参数说明: – certonly 只获取证书,不自动配置Web服务器 – –standalone 使用内置的Web服务器进行验证 – -d 指定域名,可以多个 – –email 接收续期提醒,虽然基本用不上 – –agree-tos 同意服务条款 – –no-eff-email 不接收EFF的推广邮件 成功后会输出:
IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
证书文件在 /etc/letsencrypt/live/example.com/ 目录下,两个关键文件: – fullchain.pem 证书链(包含中间证书) – privkey.pem 私钥 配置Nginx 在server块里加上SSL配置:
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;

    # 推荐的安全配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    # 其他配置...
}

# HTTP重定向到HTTPS
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 3 * * * /usr/bin/certbot renew --quiet && systemctl reload nginx
每天凌晨3点检查一次,如果证书快过期了就自动续期,续成功后重载Nginx。–quiet 表示不输出日志,除非有错误。 也可以直接用systemd timer,但cron更直观,够用了。 验证HTTPS 用浏览器访问 https://example.com,点地址栏的小锁图标,能看到证书信息。也可以用命令行:
curl -I https://example.com
返回200并且没有证书警告就算成功。 注意事项 – standalone模式需要80端口空闲,如果服务器上已经有Web服务,可以用webroot模式,不占用端口:`sudo certbot certonly –webroot -w /var/www/html -d example.com` – 多个域名共用同一套证书,申请时全部写在-d后面就行 – 证书到期前30天内才能续期,所以每天跑renew不会浪费资源 – 如果用了CDN,需要在CDN侧也配置SSL,Let’s Encrypt证书可以直接上传 我目前雨云上跑的站点都这样配,半年多没手动碰过证书,cron替我把活干了。

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

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

请登录后发表评论

    暂无评论内容