L

letsencrypt

HTTPS证书工具

61d8a3f4 fix bug in script · by 朱星弛
Name Last Update
.gitignore Loading commit data...
README.md Loading commit data...
acme_tiny.py Loading commit data...
letsencrypt Loading commit data...
letsencrypt.conf Loading commit data...

Let's Encrypt !

本项目是挑战网用于申请和更新SSL/TLS证书的自动化工具

使用的CA是:letsencrypt

官方提供了申请、签发和更新证书所用的API

Letsencrypt目前仅签发DV SSL证书,时效为3个月,过期需要更新

自动化工具据此实现自动更新证书的功能

[Maintainer]


部署方法

获得源码

git clone https://git.tiaozhan.com/tiaozhan-op/letsencrypt.git

修改配置文件

letsencrypt.conf

  • DOMAIN_KEY 是生成证书的私钥。默认生成2048位RSA私钥。

ACME_DIRDOMAIN_DIR仅能设置一个,letsencrypt的执行用户需要拥有该目录的读写权限。如果都设置,以ACME_DIR为准:

  • DOMAIN_DIR 推荐用于初始Web服务配置和单域名证书签发,配置简单。如果访问http://DOMAIN/ 将对应到 /var/www/html 目录,请设置DOMAIN_DIR="/var/www/html"
  • ACME_DIR 推荐用于已经处于线上运行状态的Web服务,在多域名证书的统一签发场景中更实用,配置较为复杂。为了避免对当前的服务造成影响,可以采取别名的方式完成域名验证,以nginx为例,在配置文件中增加:

    server {
    listen 80;
    server_name yoursite.com www.yoursite.com;
    
    location /.well-known/acme-challenge/ {
        alias /srv/acme;
        try_files $uri =404;
    }
    
    # the rest of your config ...
    }

    重新加载配置文件:

    # 注意不是restart,这将中断当前web服务!
    service nginx reload

    这样,配置ACME_DIR="/srv/acme"即可

  • DOMAINS包含需要签发的域名列表,逗号分隔,官方暂不支持通配型域名(Wildcard Certificate,野证书)

  • 如果需要签发ECC证书,启用ECC=TRUE

  • 如果需要生成同时包含证书和私钥的PEM文件(如lighttpd),启用PEM=TRUE

获取/更新证书

chmod a+x letsencrypt
letsencrypt

程序将分步打印日志

由于网络(墙)的原因可能会中断,尝试重新执行上述命令可以解决

自动更新证书

由于签发的证书只有3个月的有效期,因而需要自动更新

个人VPS使用crontab触发定期任务,一个月更新一次:

0 0 1 * * /etc/nginx/certs/letsencrypt > /var/log/lets-encrypt.log 2>&1

也可以通过jenkins等CI工具自动触发。