固执己见的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 Android在用户按下硬键时如何从选项卡式片段中获取数据?   java Android改造循环请求不执行回调   参考解释Java中的链表数据结构   java如何查找@EntityListeners调用期间更改的字段   当我试图通过socket流发送/接收jxrpc时出现java“socket关闭”错误   java Javafx组合框自动完成返回错误   java引用集合上带有@DBRef注释的文档   Bouncy Castle在C中没有从Java解密DoFinal#   PHP中未签名的右移/Zerofill Right Shift/>(Java/JavaScript等效)   为什么apache java http库不能处理ContentEncoding:none的站点?   java如何在其他页面的文本视图中显示logcat?   java可以有效地更改字符串中的EOL字符   java向Spring Boot应用程序添加页面(非常基本)   java Android Studio Gradle项目“无法启动守护进程”   仅在第一行使用XOR JAVA进行加密解密   intellij idea Java层分离模块之间的循环依赖关系