letsencrypt/challtestsrv
GitHub: letsencrypt/challtestsrv
Stars: 27 | Forks: 24
# Challenge Test Server
[](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)
The `challtestsrv` package offers a library that can be used by test
code to respond to HTTP-01, DNS-01, and TLS-ALPN-01 ACME challenges. The
`challtestsrv` package can also be used as a DNS server letting
developers configure `A`, `AAAA`, `CNAME`, and `CAA` DNS data for specific hostnames.
The DNS server will resolve up to one level of `CNAME` aliasing for accepted
DNS request types.
**Important note: The `challtestsrv` library is for TEST USAGE
ONLY. It is trivially insecure, offering no authentication. Only use
`challtestsrv` in a controlled test environment.**
For example this package is used by the Boulder
[`load-generator`](https://github.com/letsencrypt/boulder/tree/9e39680e3f78c410e2d780a7badfe200a31698eb/test/load-generator)
command to manage its own in-process HTTP-01 challenge server.
### Usage
Create a challenge server responding to HTTP-01 challenges on ":8888" and
DNS-01 challenges on ":9999" and "10.0.0.1:9998":
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)
}
Run the Challenge server and subservers:
// Start the Challenge server in its own Go routine
go challSrv.Run()
Add an HTTP-01 response for the token `"aaa"` and the value `"bbb"`, defer
cleaning it up again:
challSrv.AddHTTPOneChallenge("aaa", "bbb")
defer challSrv.DeleteHTTPOneChallenge("aaa")
Add a DNS TXT response for the host `"_acme-challenge.example.com."` and the
value `"bbb"`, defer cleaning it up again:
challSrv.AddDNSTXTRecord("_acme-challenge.example.com.", "bbb")
defer challSrv.DeleteDNSTXTRecord("_acme-challenge.example.com.")
Get the history of HTTP requests processed by the challenge server for the host
"example.com":
requestHistory := challSrv.RequestHistory("example.com", challtestsrv.HTTPRequestEventType)
Clear the history of HTTP requests processed by the challenge server for the
host "example.com":
challSrv.ClearRequestHistory("example.com", challtestsrv.HTTPRequestEventType)
Stop the Challenge server and subservers:
// Shutdown the Challenge server
challSrv.Shutdown()
For more information on the package API see Godocs and the associated package
sourcecode.
标签:EVTX分析