zenhack/simp_le
GitHub: zenhack/simp_le
一个轻量级 ACME 客户端,专注于自动化获取和续期 SSL 证书,不涉及 Web 服务器配置。
Stars: 226 | Forks: 37
# simp_le
|Build Status|
简单的 `Let’s Encrypt`_ 客户端。
.. code:: shell
```
simp_le --email you@example.com -f account_key.json \
-f account_reg.json \
-f fullchain.pem -f key.pem \
-d example.com -d www.example.com --default_root /var/www/html \
-d example.net:/var/www/other_html
```
更多信息请参阅 ``simp_le --help``。
注意:该代码库基本处于不再维护的状态;我会审查并合并 PR,
但我 (@zenhack) 已不再使用此工具,因此没有动力
进行其他积极的开发。
## 项目历史
- @kuba 编写了最初的 https://github.com/kuba/simp\_le,当时
ACME 和 Let's Encrypt 还非常新;certbot 尚不支持 nginx,
并且对于一个简单的命令行 ACME 客户端来说,当时还存在一个未填补的空白。
- 后来 @kuba 停止维护 simp_le。几个月后出现了代码老化(bitrot),
修复问题的 PR 也未合并。
- 当故障开始影响 https://zenhack.net 时,我 (@zenhack) 复刻(fork)
了该项目,合并了 PR,修复了 CI 并开始维护该工具。这种情况
持续了几年。
- 我 (@zenhack) 转而使用 NixOS 的 acme 配置选项,并
将项目过渡到目前的半维护状态。
## 宗旨
1. `UNIX philosophy`_:做一件事,并把它做好!
2. ``simp_le --valid_min ${seconds?} -f cert.pem`` 意味着
``cert.pem`` 的有效期至少还有 ``valid_min``(默认为 2592000
秒 / 30 天)。如有必要,注册新的 ACME CA 账户。如果
未找到以前的密钥/证书/链,则颁发新证书。仅在
必要时续期。
3. 仅针对 ``${webroot?}/.well-known/acme-challenge`` 的(复杂) “管理器”。
不支持 ``http-01`` 以外的挑战。必须已在运行现有的 Web 服务器。
4. 没有神奇的 Web 服务器自动配置。
5. ``${webroot?}/.well-known/acme-challenge`` 的所有者必须能够
运行该脚本,而无需权限提升(``sudo``、``root``
等)。
6. 对 ``crontab`` 友好:完全自动化 —— 无提示等。
7. 无配置文件。CLI 标志作为唯一接口!用户
应在必要时编写自己的包装脚本或使用 Shell 别名。
8. 支持具有多个根的多个域。每次 ``simp_le`` 运行始终创建单个
SAN 证书。
9. 灵活的存储功能。内置
``simp_le -f fullchain.pem -f key.pem``,
``simp_le -f chain.pem -f cert.pem -f key.pem`` 等。
10. 不允许指定输出文件路径。用户应在必要时创建符号链接!
11. 不需要允许在续期发生时指定任意命令,
只需检查退出代码:
- ``0`` 表示证书数据已创建或更新;
- ``1`` 表示无需续期;
- ``2`` 表示发生错误。
12. ``--server``(支持多个 ACME v2 CA)。
13. 支持撤销。
14. 隐式同意所选 ACME CA 的服务条款。
## 安装
.. code:: shell
```
sudo ./bootstrap.sh
./venv.sh
export PATH=$PWD/venv/bin:$PATH
```
## 使用 Docker
如果您想在 Docker 中使用 simp_le,请查看 `simp\_le for Docker`_。
## 帮助
请查看 https://github.com/zenhack/simp\_le/wiki/Examples 获取一些示例。
如果您遇到问题,请随时提 issue 询问。
.. _Let’s Encrypt: https://letsencrypt.org
.. _UNIX philosophy: https://en.wikipedia.org/wiki/Unix_philosophy
.. _simp\_le for Docker: docker
.. |Build Status| image:: https://travis-ci.org/zenhack/simp_le.svg?branch=master
:target: https://travis-ci.org/zenhack/simp_le
## 更新日志
以下是每个版本中引入的更改摘要。任何用户可见的
更改*必须*在此记录。请注意,最上面的条目有时
代表*下一个*(即尚未发布)的版本。
版本大约每两个月发布一次,除非有迫切需要
(例如安全和严重错误修复),或者自上一个版本以来没有任何
更改。
## 0.20.0
* 将 python-acme 依赖项更新到 2.0 版本
## 0.19.2
* 修复了一个次要的标准符合性问题,请参阅
https://github.com/zenhack/simp_le/pull/155
## 0.19.1
* 添加了对 ``six`` 包的缺失依赖。
## 0.19.0
* 添加了 ``--use_alt_chain`` 标志。
## 0.18.1
* 修复了一个次要的协议符合性问题。
* 修复了 venv.sh 脚本中的一些代码老化问题(不适用于从 git repo 安装的情况)。
## 0.18.0
* 将 acme 升级到 1.3 或更高版本。
* 修复了 simp_le 无法从 BuyPass ACME 获取证书的错误。
## 0.17.0
* 将 acme 升级到 1.x
## 0.16.0
* 修复了 ACME v2 协议的不一致问题
* 将 acme 升级到 0.39.x
## 0.15.0
**请仔细阅读这些内容,因为此版本包含一些可能需要
在升级时进行更改的内容**
* 从 ACME v1 切换到 ACME v2 端点支持。
对 ACME v1 端点的支持已完全取消。
如果您之前通过 ``--server`` 标志传递服务器端点,您将需要
将其更新为指向 v2 端点(或者直接删除它,以使用 Let's Encrypt 的
默认 v2 端点)。
* 除了 account_key.json 之外,还持久化 account_reg.json,并
在需要时恢复丢失的注册信息。*您现在
需要向 simp_le 传递一个 ``-f account_reg.json`` 选项*
* 删除了 ``-f external.sh`` 功能。
* 放弃对 Python 2 和 3.4 的官方支持。
* 添加了对 Python 3.7 的官方支持(理论上它以前应该
可以工作,但我们现在开始测试它了)。
* 将 acme 升级到 0.35.x
## 0.14.0
* 将 acme 升级到 0.33.x
## 0.13.0
* 将 acme 升级到 0.31.x
## 0.12.0
* 将 acme 升级到 0.29.x
## 0.11.0
* 将 acme 升级到 0.27.x
## 0.10.0
* 将 acme 升级到 0.25.x
## 0.9.0
* 将 acme 升级到 0.24.x
## 0.8.1
* 添加了一个针对 pip 中错误导致的一些安装问题的变通方法。
## 0.8.0
* 放弃对 Python 2.6 的官方支持
* 将 acme 升级到 0.22.x
## 0.7.0
* 删除了 ToS 哈希比较,如果存在则隐式同意 CA 的 ToS
* 添加了对空或损坏的证书/密钥文件的检查
* 添加了一些针对电子邮件语法的健全性检查
* 将 acme 升级到 0.20.x
## 0.6.2
* 实现了 0.6.1 版本说明中提到的面向未来的功能。未来的
TOS 更改不应破坏 simp_le >= 0.6.2
## 0.6.1
* 更新了 letsencrypt TOS 的哈希值。TOS 于 11 月 15 日更改,
这破坏了以前的版本。未来的版本不会硬编码哈希值,
这应该可以避免此类问题。
## 0.6.0
* 放弃对 Python 3.3 的官方支持。
* 禁用自验证;这非常不可靠,并导致了
虚假警告。
* 改进了参数健全性检查和错误消息。
* 即使失败也保存 account_key.json
* 清理临时挑战文件。
* 将 acme 升级到 0.19.x
## 0.5.1
* 添加了一个针对 pip 中错误导致的一些安装问题的变通方法
## 0.5.0
* 将 acme 升级到 0.17.x
## 0.4.0
* 将 acme 升级到 0.16.x
## 0.3.0
* 修复了错误报告版本号的错误
* 将 acme 升级到 0.15.x
## 0.2.0
* 升级到 acme 0.11.x
## 0.1.1
* 更改了包名称;原始维护者拥有 simp_le PyPI
包,且未响应转让请求,因此包名称
现在为 'simp_le-client'。
## 0.1.0
* 首次发布
标签:ACME 客户端, Cutter, DNS解析, HTTP-01 验证, HTTPS, Let's Encrypt, Python, Shell, SSL 证书, TLS, Web 服务器, 加密, 基础设施, 安全, 开源项目, 无后门, 漏洞扫描器, 续期, 网络调试, 自动化, 证书管理, 请求拦截, 超时处理, 逆向工具, 防御工具