For those not running apache, or afraid of messing with their front end settings. I found the DNS verification system for Let's Encrypt to be a breeze, especially when your DNS provider has an API of some sort (CloudFlare, Route53, etc.)
[1]: https://github.com/xenolf/lego
[2]: https://disjoint.ca/til/2016/03/26/lets-encrypt-tls-certific...
However, people already made hooks that take care of that for you for some providers, for example, the CloudFlare one I experimented with: