具有偏见的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]
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。