Certificates
Basic configuration and requirements
- Certificates are issued by the Let’s Encrypt certification authority.
 - First, it is necessary for the DNS records for the Administration interface and Client portal to be set correctly.
 - Second, HTTP (80) and HTTPS (443) must be enabled in Settings / Syst. settings / Security.
 - Last but not least, it is vital to set ServerName for each of the domains in the Apache2 web server configuration.
 
nano /etc/apache2/sites-available/ispadmin.conf
- Administration interface:
 
### ISP admin#
<VirtualHost *:80>
  ServerName admin.mydomain.tld
  DocumentRoot "/data/support_nossl/"
 <Directory /data/support_nossl/>
    Options FollowSymLinks MultiViews
    AllowOverride all
    Require all granted
</Directory>
</VirtualHost>
## ISP Admin SSL
<VirtualHost *:443>
  ServerName admin.mydomain.tld
  DocumentRoot "/data/support/ispadmin/new/www/"
  AddDefaultCharset UTF-8
   <Directory /data/support/ispadmin/new/www/>
    Options +ExecCGI
    Options FollowSymLinks MultiViews
    AllowOverride all
    Require all granted
  </Directory>
  CustomLog /var/log/apache2/access_support_ispadmin.log combined
  AddType application/x-httpd-php .php
  php_admin_value open_basedir "/data/support/:/tmp/:/data/:/usr/local/script/ispadmin/:/data/backup/:/usr/local/nagios/share/"
  php_admin_value include_path ".:/usr/local/lib/php/:/tmp/:/data/support/:/usr/local/script/ispadmin/"
  php_admin_value disable_functions  "pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_ha$
  php_admin_value display_errors "On"
  php_admin_value safe_mode "Off"
  php_admin_value safe_mode_exec_dir "/usr/local/script/ispadmin/"
  php_admin_value safe_mode_allowed_env_vars none
  php_admin_value safe_mode_include_dir ".:/usr/local/lib/php/:/tmp/:/data/support/:/usr/local/script/ispadmin/"
  php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f webmaster@ispadmin.cz"
  SSLEngine on
  SSLCertificateFile /etc/apache2/certs/ispadmin.eu/ispadmin.crt
  SSLCertificateKeyFile /etc/apache2/certs/ispadmin.eu/private.key
 # SSLCertificateChainFile /etc/apache2/certs/ispadmin.eu/ca.pem
</VirtualHost>
- Client portal:
 
## ISP dmin support
<VirtualHost *:80>
  DocumentRoot "/data/support/ispadmin/new/www/clientinterface"
  ServerName clientportal.mydomain.tld
  AddDefaultCharset UTF-8
  <Directory /data/support/ispadmin/new/www/clientinterface>
    Options ExecCGI
    Options FollowSymLinks MultiViews
    AllowOverride all
    Require all granted
  </Directory>
  CustomLog /var/log/apache2/access_support_ispadmin_support.log combined
  AddType application/x-httpd-php .php
  php_admin_value open_basedir "/data/support/:/tmp/:/data/:/usr/local/script/ispadmin/:/data/backup/"
  php_admin_value include_path ".:/usr/local/lib/php/"
  php_admin_value disable_functions  "pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_ha$
  php_admin_value display_errors "On"
  php_admin_value safe_mode "Off"
#  SSLEngine on
#  SSLCertificateFile /etc/apache2/certs/ispadmin.eu/ispadmin.crt
#  SSLCertificateKeyFile /etc/apache2/certs/ispadmin.eu/private.key
#  SSLCertificateChainFile /etc/apache2/certs/ispadmin.eu/ca.pem
</VirtualHost>
- You can test the configuration using the following command:
 
apachectl configtest
- If the configuration is found to be all right (without typos), you can restart the Apache server:
 
systemctl restart apache2
- If everything is set up correctly, you should be able to see the Administration interface as well as the Client portal. You will also see certificate alerts.
 
Certificate installation
- Certificate installation is launched using this command:
 
/usr/local/script/ispadmin/bin/certificate.pl
- Enter the DNS records for the Administration interface and the Client portal.
 - Check whether the listed IP addresses correspond to the IP address of the server.
 - If there is a discrepancy, it is necessary to change the DNS records accordingly. Enter n and launch the script again.
 - If everything is all right, the requested certificates are created.
 - At this point, you are asked whether you want the certificates to be installed to the Apache server.
 - If no changes have been made to the Apache server configuration (no custom configuration), you can enter y.
 - If you, for whatever reason, want to install the certificates manually, you can see on the screen the 3 locations where the individual parts are to be found. Enter n and set the certificates up manually in /etc/apache2/sites-available/ispadmin.conf.
 - If you entered y, the certificates were installed, an Apache configuration backup created and the server restarted.
 - Now the certificates are valid. Https is displayed in the address bar of your browser.
 - If everything is set up correctly, the certificates will be renewed automatically every three months.
 
Automatic certificate renewal failure
If the certificates have not been renewed automatically, check the following:
- Does Apache use the standard ports?
 - Is global http and https access from the Internet allowed?
 - Is the server online all the time?
 - Does /etc/crontab contain the following line?
 
00 05 * * 7     root    /data/ispadmin_cert/acme/acme.sh  --apache --renewAll --home /data/ispadmin_cert/acme --certhome  /data/ispadmin_cert #letsencrypt renew ?
If the automatic certificate renewal process has failed repeatedly, try upgrading the acme utility:
/data/ispadmin_cert/acme/acme.sh --upgrade 
Then, perform manual certificate renewal.
If even that fails, try reinstalling the acme utility:
rm -r /root/.acme.sh
rm -r /root/acme.sh
rm -r /data/ispadmin_cert/acme
Then, run the certificate installation script:
/usr/local/script/ispadmin/bin/certificate.pl
Manual certificate renewal
- Manual renewal:
 
/data/ispadmin_cert/acme/acme.sh --apache --renewAll --home  /data/ispadmin_cert/acme --certhome /data/ispadmin_cert
- Forced manual renewal:
 
/data/ispadmin_cert/acme/acme.sh --apache --renewAll  --home /data/ispadmin_cert/acme --certhome /data/ispadmin_cert --force