Challenges are used to prove ownership of a domain.
There are different kind of challenges. The most simple is maybe the HTTP challenge, where a file must be made available at the domain that is to be validated. It is assumed that you control the domain if you are able to publish a given file under a given path.
The ACME specifications define these standard challenges:
acme4j also supports these non-standard challenges: