跳转到主要内容

具有偏见的letsencrypt acme客户端,通过SSH端口转发工作。

项目描述

certsling

一个具有偏见的脚本,通过SSH转发HTTP/DNS挑战,在您的本地计算机上使用letsencrypt签署TLS密钥。

安装

最佳安装方式为通过pipsi

% pipsi install certsling

或者其他安装包含脚本Python包的方法。

要求

您需要在您的路径中有一个openssl可执行文件,用于密钥生成和签名。

使用预发布服务器进行测试

使用-s选项,您可以使用letsencrypt的预发布服务器。这是建议的,这样您在设置工作之前不会遇到配额限制等问题。生成的证书将无法验证,但其他内容与普通证书相同。

基本用法

创建一个以电子邮件地址命名的目录,该电子邮件地址用于与letsencrypt进行身份验证。例如 webmaster@example.com

% mkdir webmaster@example.com

创建到您的服务器的SSH连接,将远程端口转发到本地端口 8080

% ssh root@example.com -R 8080:localhost:8080

在您的服务器上,Web服务器需要将请求代理到 example.com:80/.well-known/acme-challenge/* 转发的端口。以下是nginx的示例

location /.well-known/acme-challenge/ {
    proxy_pass http://localhost:8080;
}

从您创建的目录中,使用以下命令调用certsling脚本

% cd webmaster@example.com
% certsling example.com www.example.com

在首次运行时,您会被询问是否为使用letsencrypt进行授权创建 user.key

之后,将为所选域创建挑战,并在端口 8080 上启动服务器以提供响应。您的远程Web服务器通过SSH连接代理到本地运行的服务器。

如果一切顺利,您将在新的 example.com 文件夹中获得服务器密钥和证书

% ls example.com
...
example.com-chained.crt
example.com.crt
example.com.key

example.com-chained.crt 文件包含您的证书及其letsencrypt证书的完整链。

高级使用

要使用基于DNS的认证,您需要在您的服务器上安装 socat。此外,您需要设置您的DNS,使其将 _acme-challenge 请求委派到您的服务器。为此,您可以在区域文件或等效文件中添加类似以下内容:

_acme-challenge IN NS www
_acme-challenge.www IN NS www

对于转发,您需要添加端口 8053:创建到您的服务器的SSH连接,将远程端口转发到本地端口 8080

% ssh root@example.com -R 8080:localhost:8080 -R 8053:localhost:8053

然后在SSH会话中,运行以下命令以将UDP端口 53 转发到TCP端口 8053

# socat -T15 udp4-recvfrom:53,reuseaddr,fork tcp:localhost:8053

对于 certsling,您需要添加 –dns 选项

% certsling --dns example.com www.example.com

它将首先尝试HTTP挑战,如果失败,将尝试DNS挑战。

变更日志

0.10.0 - 2022-02-17

  • 停止支持Python 3.5和3.6,添加Python 3.9和3.10。[fschulze]

  • 添加选项以始终更新当前设置而不询问。[fschulze]

  • 更新新的根证书。[fschulze]

  • 在失败时输出更多关于授权失败的信息。[fschulze]

0.9.1 - 2020-08-23

  • 接受nonce请求的返回代码200。[witsch]

0.9.0 - 2020-06-14

  • 切换到ACME版本2,即RFC 8555协议。[fschulze]

  • 启用 -h 以输出命令行帮助信息。[fschulze]

  • 添加禁用HTTP挑战的选项。[fschulze]

  • 仅启动启用挑战的服务器。[fschulze]

  • 停止支持Python 3.4。Python 3.5的支持将在2020年9月结束。[fschulze]

  • 在没有提供域名时退出。[fschulze]

  • 添加 -y 选项以自动回答所有问题。

0.8.0 - 2017-01-04

  • 添加新的 --update (-u) 选项,以避免记住每个域的设置。[fschulze]

  • 在失败时请求重复生成csr和crt。[solidgoldbomb]

  • 在dnspython与dnspython3合并后切换到dnspython。[fschulze]

0.7.0 - 2016-12-30

  • 重命名为 certsling。[fschulze]

  • verify_domains 中使用对称差集。这可以捕获由于域名中的错误和某些其他情况引起的问题。[solidgoldbomb]

  • 更新 verify_crt 中检查的发行者名称列表。[solidgoldbomb (Stacey Sheldon)]

  • 提供更详细的错误报告。[fschulze]

  • 请求同意letsencrypt的使用条款并允许更新注册。[fschulze]

0.6.0 - 2016-05-09

  • 升级到新的X3权威。[fschulze]

0.5.0 - 2016-02-12

  • 使用 -s 选项允许选择letsencrypt.org的测试服务器。[fschulze]

0.4.1 - 2016-01-29

  • 修复问题,即 -chained.crt 文件没有更新。[fschulze]

0.4.0 - 2016-01-12

  • 初始发布 [fschulze]

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

certsling-0.10.0.tar.gz (17.4 kB 查看哈希值)

上传时间

构建分布

certsling-0.10.0-py3-none-any.whl (13.1 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面