跳转到主要内容

从配置文件管理Let’s Encrypt证书的工具

项目描述

buildstatus release versions

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是配置驱动的。配置文件的优先级顺序为:

  1. 命令行中指定的一个(lecm --conf /path/to/conf.yml)

  2. 环境变量$LECM_CONFIGURATION中指定的一个

  3. /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 (18.3 kB 查看哈希值)

上传时间: 源码

由以下机构支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面