固执己见的letsencrypt acme客户端通过ssh端口转发。

certsling的Python项目详细描述


证书

通过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

在第一次运行时,系统会询问您是否要创建一个user.key,用于使用letsencrypt进行授权。

之后,将创建选定域的挑战,并在端口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转发到端口8053上的tcp:

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

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

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

然后它将首先尝试http质询,如果失败,它将尝试dns质询。

更改日志

0.8.0-2017-01-04

  • 添加新的--update-u)选项以避免记住设置 对于每个域。 [fschulze]
  • 要求在出现故障时重复CSR和CRT生成。 [固体炸弹]
  • 与dnspython3合并后切换到dnspython。 [fschulze]

0.7.0-2016年12月30日

  • 重命名为certsling。 [fschulze]
  • verify_domains中使用对称差分。这会捕获由于 域名和其他一些情况下的打字错误。 [固体炸弹]
  • 更新签入的颁发者名称列表verify_crt。 [固体炸弹(斯泰西·谢尔顿)]
  • 更详细的错误报告。 [fschulze]
  • 要求同意LetsEncrypt的使用条款并允许更新注册。 [fschulze]

0.6.0-2016-05-09

  • 升级至新的x3权限。 [fschulze]

0.5.0-2016年2月12日

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

0.4.1-2016年1月29日

  • 修复-chained.crt文件未更新的问题。 [fschulze]

0.4.0-2016年1月12日

  • 初次发行 [fschulze]

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在通配符泛型类型和泛型类型之间未经检查的强制转换   java Eclipse SWT Hello world教程:无法将显示解析为类型   java如何向远程用户发送注销消息?   java RDD之后的空文件是什么。保存ASTEXTFILE?   用户界面在java中创建一个htmljs UI GCalendar   Java多个哈希映射指向同一个键   Java Dowhile循环不工作?   oraclejava类。组织。阿帕奇。梁sdk。util。UserCodeException:java。sql。SQLException:无法创建PoolableConnectionFactory   java是org类型。日食用户界面。文本编辑器。*看不见   java有没有从弹出窗口复制eclipse中变量值的插件或快捷方式?   java getSubimage为我提供了期望值null   java我想让它变得更简单   swing AWTEventQueue0一直在运行,java中的程序变得非常慢   java Solr实例化类时出错:自定义类   java将ListView适配器移植到RecyclerView适配器   c#测试混合web和桌面应用程序的安全性