申请Let's Encrypt HTTPS 证书脚本

最近需要到SSL证书,又想免懒。选择脚本来更新SSL证书文件

Let’s Encrypt是一个由非营利性组织互联网安全研究小组(ISRG)提供的免费、自动化和开放的证书颁发机构(CA)。 简单的说,借助Let’s Encrypt颁发的证书可以为我们的网站免费启用HTTPS(SSL/TLS) 。

那我们通过一个脚本来申请:

脚本名称: acme.sh

安装acme.sh:

生成证书

acme.sh --issue -d demo.com -d www.demo.con -w /home/wwwroot/demo.com

–issue是acme.sh脚本用来颁发证书的指令; -d是–domain的简称,其后面须填写已备案的域名; -w是–webroot的简称,其后面须填写网站的根目录。

查看证书

acme.sh --list


Nginx 配置

项目是Nginx,下面是对Nginx的配置。

acme.sh –installcert -d demo.com
–key-file /etc/nginx/ssl/demo.com.key
–fullchain-file /etc/nginx/ssl/fullchain.cer
–reloadcmd “service nginx force-reload”

通过 installcert 来完成安装,此处我们需要把*.key,fullchain.cer 文件拷贝到指定位置。最后通过reload命令让Nginx重载(force-reload 我环境中无法使用此参数,这里换成 restart)。

最后我们需要配置Nginx的443 server

server {
        listen 443 ssl;
        server_name demo.com;
        
        ssl on;
        ssl_certificate      /etc/nginx/ssl/fullchain.cer;
        ssl_certificate_key  /etc/nginx/ssl/esofar.cn.key;
        
        ...

到此基本上配置完成了。 Acme.sh 通过定时任务可以实现定期更新。 查看 crontab -l

acme.sh的更新维护

acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步。

手动更新: acme.sh --upgrade

自动更新:acme.sh --upgrade --auto-upgrade

取消自动更新: acme.sh --upgrade --auto-upgrade 0