各系统自动续签let’s免费ssl证书

  • A+
所属分类:系统文档
各系统自动续签let’s免费ssl证书

注意:不论是什么操作请在开始前备份重要文件,以防发生意外

本文步骤和代码示例仅适用于Nginx服务器。如果你使用的是其他Web服务器(如Apache),则需要相应地调整配置和命令。此外,确保在生产环境中仔细测试和验证配置,以避免意外中断服务。其中不是以root身份操作需要在命令前加sudo反之不用

申请证书

申请泛域名证书(Centos和Ubuntu通用):

certbot certonly --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory --email [email protected] -d *.yourdomain.com

其中,[email protected]是您的电子邮件地址,*.yourdomain.com是您的泛域名。

Centos系统

各系统自动续签let’s免费ssl证书

安装Certbot

  • 打开终端,以root用户身份登录到你的CentOS服务器。
  • 运行以下命令来添加Certbot存储库并安装Certbot:
yum install epel-release
yum install certbot

配置Certbot

  • 运行以下命令来生成Certbot的配置文件:
certbot --nginx -d example.com -d www.example.com

其中,example.com是你的域名,www.example.com是可选的二级域名。你可以根据需要添加更多的域名。

  • Certbot将提示你提供一些信息,如电子邮件地址和同意协议等。按照提示进行操作。
  • 完成配置后,Certbot将生成Nginx的配置文件,并将其放置在适当的位置。

生成证书

  • 运行以下命令来启动Certbot的证书生成过程:
certbot --nginx -d example.com -d www.example.com --agree-tos --no-eff-email --force-renewal

这将生成新的证书或续订现有证书。

自动续订

为了实现自动续订,你需要设置一个定时任务(如cron job)。编辑crontab文件,添加以下行:

0 0,12 * * * root certbot renew --quiet && service nginx reload

这将在每天的午夜和中午执行Certbot的续订命令,并在成功续订后重新加载Nginx服务。

保存并关闭crontab文件。

配置Nginx

  • 确保你的Nginx配置文件中包含以下内容,以正确配置SSL证书:
server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

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;
    # 其他Nginx配置...
}

请确保将example.com替换为你的域名,并将证书路径设置为正确的路径。

保存并关闭Nginx配置文件。

测试

systemctl restart nginx

在浏览器中访问你的网站,并检查是否已启用HTTPS。你还可以查看浏览器的安全选项卡,以确保SSL证书被正确识别。

强制https

  • 打开终端或命令提示符
  • 输入以下命令以编辑Nginx配置文件(假设你的Nginx配置文件位于/etc/nginx/nginx.conf):
sudo nano /etc/nginx/nginx.conf
  • 在文件中找到与你的网站相关的server块。
  • 在该server块中添加以下代码行:
if ($scheme != "https") {
    return 301 https://$host$request_uri;
}

这将检查请求的协议是否为HTTPS,如果不是,则将其重定向到HTTPS版本。

  1. 保存并关闭文件。
  2. 重新启动Nginx服务以使更改生效:
sudo systemctl restart nginx

Ubuntu系统

各系统自动续签let’s免费ssl证书

在Ubuntu上自动续订Let's Encrypt证书,可以使用acme.sh这一工具来实现。

安装acme.sh

  • 打开终端,运行以下命令来安装acme.sh
curl https://get.acme.sh | sh
  • 或者
wget -O - https://get.acme.sh | sh

这将会从GitHub上下载acme.sh脚本并执行。

生成和安装证书

  • 使用acme.sh生成证书,并指定你想要申请证书的域名,例如:
acme.sh --issue --dns dns_provider -d example.com

其中dns_provider是你的DNS提供商,example.com是你的域名。

acme.sh将引导你完成验证过程,包括设置DNS记录等。

配置Nginx

  • 在Nginx的配置中,指定证书和私钥的路径,通常位于/etc/acme.sh/example.com目录下。配置文件示例:
server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com www.example.com;
    ssl_certificate /etc/acme.sh/example.com/fullchain.cer;
    ssl_certificate_key /etc/acme.sh/example.com/example.com.key;
    # 其他Nginx配置...
}

设置自动续期

  • 编辑crontab文件来设置定时任务,以实现自动续订功能:
crontab -e
  • 添加以下行以设置每天凌晨2点自动续订证书:
0 2 * * * certbot renew --quiet

通过以上步骤,你就可以在Ubuntu服务器上自动续费Let's Encrypt证书了。

在Ubuntu上添加强制HTTPS的命令

  • 打开终端或命令提示符。
  • 输入以下命令以编辑Nginx配置文件(假设您的Nginx配置文件位于/etc/nginx/sites-available/default):
sudo nano /etc/nginx/sites-available/default
  • 在文件中找到与您的网站相关的server块。
  • 在该server块中添加以下代码行:
if ($scheme != "https") {
    return 301 https://$host$request_uri;
}

这将检查请求的协议是否为HTTPS,如果不是,则将其重定向到HTTPS版本。

  • 保存并关闭文件。
  • 重新启动Nginx服务以使更改生效:
sudo systemctl restart nginx

宝塔面板

各系统自动续签let’s免费ssl证书

网站面板自动续费

各系统自动续签let’s免费ssl证书

注意:dns提供商的免费用户使用国内的dns接口时注意关闭域名的DNSSEC,当然你是付费用的没有关系(因为在国内DNSSEC是收费项目,国外是免费项目)如果不关闭会导致ssl申请失败和解析错误

1panel面板

各系统自动续签let’s免费ssl证书
各系统自动续签let’s免费ssl证书
  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: