letsencrypt/challtestsrv
GitHub: letsencrypt/challtestsrv
Let's Encrypt 出品的纯测试用模拟服务器,用于在受控环境中响应各类 ACME 挑战并提供 Mock DNS 功能,方便 ACME 客户端与证书自动化相关的开发测试。
Stars: 27 | Forks: 25
# 挑战测试服务器
[](https://travis-ci.org/letsencrypt/challtestsrv)
[](https://coveralls.io/github/letsencrypt/challtestsrv)
[](https://goreportcard.com/report/github.com/letsencrypt/challtestsrv)
[](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证书, 日志审计, 测试服务器