Required PHP extensions
Your Apache/nginx web server needs the following extensions enabled:
- mandatory: curl
- mandatory: gmp (preferred - much faster) or bcmath (slower)
- optional: openssl, ftp, ssh2
You can list the currently installed PHP extensions in the dashboard of your concrete5 installation: go to Dashboard → System & Settings → Environment → Environment Information and look for the "# PHP Extensions" section.
Required web server configuration
Let's Encrypt needs to be sure that you can fully control a domain before releasing an HTTPS certificate for it (they call this process domain authorization).
This authorization can be performed in one of the following ways:
URL-based authorization
Let's Encrypt will fetch a file from the web root if your website.
Essentially, they will browse to an URL like this: http://www.yourdomain.com/.well-known/acme-challenge/....
In order to make this process work, the My Let's Encrypt package needs one of the following two conditions:
- The Pretty URLs are enabled (more details) and Apache/nginx redirects the URLs that start with a . (dot) to concrete5.
You can simply check if this works by browsing to an URL like http://www.yourdomain.com/.well-known/test - If you see a Page not found with the concrete5 theme or logo then everything is fine. If otherwise you see the Apache/nginx standard Not Found error page then the web server needs to be changed (for Apache you'll need to change a RewriteRule or an IndexIgnore directive, for nginx it may be a Location directive)
- The root folder of the website (eg /var/www/mysite) needs to be writable by PHP and/or by yourself, and the URLs that start with a . (dot) are not blocked by Apache/nginx.
To check if this last condition is ok:
- create a directory called .well-known (pay attention to add the initial dot) in the root folder of the website
- create a file called check in this folder and put some text in it (for instance "Ok")
- with your browser go to http://www.yourdomain.com/.well-known/check
- if you see the file content ("Ok") then everything is fine. If otherwise you see the Apache/nginx standard Not Found error page then the web server needs to be changed (for Apache you'll need to change a RewriteRule or an IndexIgnore directive, for nginx it may be a Location directive)
- remember to remove the .well-known directory that you created at point 1
DNS-based authorization
You'll need to add a specific TXT record to the DNS server of your domain names
(This is quite advanced and most people will perform an URL-based authorization).