从配置文件管理Let’s Encrypt证书的工具
项目描述
Let’s Encrypt 证书管理器(lecm)是一个工具,允许用户管理(生成和续订)Let’s Encrypt SSL证书。
目标
lecm的目标是能够自动生成和续订Let’s Encrypt SSL证书。
lecm是配置驱动的。需要管理的每个证书都在配置文件中进行了描述。
安装
使用PyPI
您只需
$ pip install lecm
基于Debian的发行版(Debian、Ubuntu等)
有一个官方Debian包适用于lecm
$ sudo apt-get install lecm
如何运行
lecm是配置驱动的。配置文件的优先级顺序为:
命令行中指定的一个(lecm --conf /path/to/conf.yml)
环境变量$LECM_CONFIGURATION中指定的一个
/etc/lecm.conf
lecm支持各种命令
--generate
lecm --generate将为配置文件中列出但文件系统中不存在的项目生成SSL证书。
--renew
lecm --renew 将会在文件系统中已存在的SSL证书到期日期低于 remaining_days 值时,重新续订这些证书。
--force
lecm --force 将强制重新生成或续订SSL证书,即使其到期日期不低于 remainin_days 值。
--list
lecm --list 将显示当前配置项的基本信息。
+--------- +----------------------------------+---------------+------------------------------------------------------------------+-----------------------------------------------------------+------+
| In Sync | Item | Status | subjectAltName | Location | Days |
+--------- +----------------------------------+---------------+------------------------------------------------------------------+-----------------------------------------------------------+------+
| True | lecm-test.distributed-ci.io | Generated | DNS:lecm-test.distributed-ci.io | /etc/letsencrypt/pem/lecm-test.distributed-ci.io.pem | 89 |
| False | lecm-test-test.distributed-ci.io | Not-Generated | DNS;lecm-test-test.distributed-ci.io,DNS:lecm.distributedi-ci.io | /etc/letsencrypt/pem/lecm-test-test.distributed-ci.io.pem | N/A |
+----------+----------------------------------+---------------+------------------------------------------------------------------+-----------------------------------------------------------+------+
--list-details
lecm --list-details 将显示当前配置项的详细信息。
+--------- +----------------------------------+---------------+------------------------------------------------------------------+---------------------------+--------------+-----------------------------------------------------------+------+------+--------+------+
| In Sync | Item | Status | subjectAltName | emailAddress | Environment | Location | Type | Size | Digest | Days |
+--------- +----------------------------------+---------------+------------------------------------------------------------------+---------------------------+--------------+-----------------------------------------------------------+------+------+--------+------+
| True | lecm-test.distributed-ci.io | Generated | DNS:lecm-test.distributed-ci.io | distributed-ci@redhat.com | production | /etc/letsencrypt/pem/lecm-test.distributed-ci.io.pem | RSA | 4096 | sha256 | 89 |
| False | lecm-test-test.distributed-ci.io | Not-Generated | DNS;lecm-test-test.distributed-ci.io,DNS:lecm.distributedi-ci.io | distributed-ci@redhat.com | staging | /etc/letsencrypt/pem/lecm-test-test.distributed-ci.io.pem | RSA | 2048 | sha256 | N/A |
+----------+----------------------------------+---------------+------------------------------------------------------------------+---------------------------+--------------|-----------------------------------------------------------+------+------+--------+------+
配置
每个参数都是应用于全局范围内或证书范围内的。最具体的指定将获胜。
参数 |
范围 |
默认值 |
描述 |
---|---|---|---|
path |
global, certificate |
None |
存放所有相关文件的文件夹 |
type |
global, certificate |
RSA |
要生成的密钥类型(可能:RSA,DSA) |
size |
global, certificate |
4096 |
要生成的密钥大小 |
digest |
global, certificate |
sha256 |
要生成的密钥的摘要 |
version |
global, certificate |
3 |
要生成的SSL证书的版本 |
subjectAltName |
global, certificate |
None |
证书签名请求(csr)的subjectAltName值 |
countryName |
global, certificate |
None |
证书签名请求(csr)的countryName值 |
stateOrProvinceName |
global, certificate |
None |
证书签名请求(csr)的stateOrProvinceName值 |
localityName |
global, certificate |
None |
证书签名请求(csr)的localityName值 |
organizationName |
global, certificate |
None |
证书签名请求(csr)的organizationName值 |
organizationalUnitName |
global, certificate |
None |
证书签名请求(csr)的organizationalUnitName值 |
commonName |
global, certificate |
None |
证书签名请求(csr)的commonName值 |
emailAddress |
global, certificate |
None |
证书签名请求(csr)的emailAddress值 |
account_key_name |
global, certificate |
account_$fqdn.key |
要生成的账户密钥的名称 |
remaining_days |
global, certificate |
10 |
SSL证书应续订的有效期天数以下 |
service_name |
global, certificate |
httpd |
需要重新加载以使更改生效的服务 |
service_provider |
global, certificate |
systemd |
服务管理系统(可能:systemd,sysv) |
environment |
global, certificate |
production |
要使用的Let’s Encrypt环境(可能:production,staging) |
配置文件示例
---
path: /etc/letsencrypt
certificates:
my.example.com:
app.example.com:
subjectAltName:
- app.example.com
- app1.example.com
- app2.example.com
更多示例可以在 sample/ 目录中找到。
Httpd和Nginx
lecm 不会配置web服务器,它们必须预先配置为能够回答挑战。注意:Let’s Encrypt将对您的服务器上的80端口执行普通的HTTP请求,因此您必须通过HTTP提供服务挑战文件。有关更多详细信息,请参阅ACME规范中的HTTP挑战部分。
httpd
Alias /.well-known/acme-challenge /etc/letsencrypt/challenges/my.example.com
<Directory /etc/letsencrypt/challenges/my.example.com>
Require all granted
</Directory>
nginx
location /.well-known/acme-challenge/ {
alias /etc/letsencrypt/challenges/my.example.com/;
try_files $uri =404;
}
项目详情
lecm-0.0.9.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 88b05eb789dde1c616e0c3c1e345765ebfdbeef4f59a61e9e3ca39986dcfefaf |
|
MD5 | b71b67a66eb4cb6e4fa121a34a348656 |
|
BLAKE2b-256 | 4de4bb576f8c3b596acbd140788ade6052ca309f467226df4b20d899c23de91c |