letsencrypt/challtestsrv

GitHub: letsencrypt/challtestsrv

Let's Encrypt 出品的纯测试用模拟服务器,用于在受控环境中响应各类 ACME 挑战并提供 Mock DNS 功能,方便 ACME 客户端与证书自动化相关的开发测试。

Stars: 27 | Forks: 25

# 挑战测试服务器 [![构建状态](https://travis-ci.org/letsencrypt/challtestsrv.svg?branch=master)](https://travis-ci.org/letsencrypt/challtestsrv) [![覆盖率状态](https://coveralls.io/repos/github/letsencrypt/challtestsrv/badge.svg)](https://coveralls.io/github/letsencrypt/challtestsrv) [![Go 报告卡](https://goreportcard.com/badge/github.com/letsencrypt/challtestsrv)](https://goreportcard.com/report/github.com/letsencrypt/challtestsrv) [![GolangCI](https://golangci.com/badges/github.com/letsencrypt/challtestsrv.svg)](https://golangci.com/r/github.com/letsencrypt/challtestsrv) `challtestsrv` 包提供了一个库,可供测试代码用于响应 HTTP-01、DNS-01 和 TLS-ALPN-01 ACME 挑战。`challtestsrv` 包还可以用作 DNS 服务器,让开发人员为特定的主机名配置 `A`、`AAAA`、`CNAME` 和 `CAA` DNS 数据。对于接受的 DNS 请求类型,DNS 服务器将解析最多一级的 `CNAME` 别名。 **重要提示:`challtestsrv` 库仅供测试使用。它毫无安全性可言,不提供任何身份验证。请仅在受控的测试环境中使用 `challtestsrv`。** 例如,Boulder 的 [`load-generator`](https://github.com/letsencrypt/boulder/tree/9e39680e3f78c410e2d780a7badfe200a31698eb/test/load-generator) 命令就使用了这个包来管理其自身的进程内 HTTP-01 挑战服务器。 ### 用法 创建一个挑战服务器,响应 ":8888" 上的 HTTP-01 挑战以及 ":9999" 和 "10.0.0.1:9998" 上的 DNS-01 挑战: ``` import "github.com/letsencrypt/challtestsrv" challSrv, err := challtestsrv.New(challtestsrv.Config{ HTTPOneAddrs: []string{":8888"}, DNSAddrs: []string{":9999", "10.0.0.1:9998"}, }) if err != nil { panic(err) } ``` 运行挑战服务器及其子服务器: ``` // Start the Challenge server in its own Go routine go challSrv.Run() ``` 为 token `"aaa"` 添加值为 `"bbb"` 的 HTTP-01 响应,并延迟其清理操作: ``` challSrv.AddHTTPOneChallenge("aaa", "bbb") defer challSrv.DeleteHTTPOneChallenge("aaa") ``` 为主机 `"_acme-challenge.example.com."` 添加值为 `"bbb"` 的 DNS TXT 响应,并延迟其清理操作: ``` challSrv.AddDNSTXTRecord("_acme-challenge.example.com.", "bbb") defer challSrv.DeleteDNSTXTRecord("_acme-challenge.example.com.") ``` 获取挑战服务器处理的主机 "example.com" 的 HTTP 请求历史记录: ``` requestHistory := challSrv.RequestHistory("example.com", challtestsrv.HTTPRequestEventType) ``` 清除挑战服务器处理的主机 "example.com" 的 HTTP 请求历史记录: ``` challSrv.ClearRequestHistory("example.com", challtestsrv.HTTPRequestEventType) ``` 停止挑战服务器及其子服务器: ``` // Shutdown the Challenge server challSrv.Shutdown() ``` 有关包 API 的更多信息,请参阅 Godocs 及相关的包源代码。
标签:ACME, DNS, EVTX分析, Go, Ruby工具, SSL证书, 日志审计, 测试服务器