Apache 2
Here are the CLI commands to install Apache 2. This will give you the apt/source repository setup to keep Apache 2 up to date.
How to install Apache 2
sudo add-apt-repository ppa:ondrej/apache2
sudo apt update
sudo apt install apache2
Location of the configuration files
sudo vi /etc/apache2/apache2.conf #Debian/Ubuntu systems
sudo vi /etc/httpd/conf/httpd.conf #RHEL/CentOS systems
Security components to add to the apache 2 configuration files
ServerTokens Prod
ServerSignature Off
Configurations you need to set into Apache2
Enable SSL on Apache2
sudo a2enmod ssl
sudo a2enmod headers
sudo a2enmod authz_core authz_host access_compat socache_shmcb slotmem_shm socache_dbm
sudo servicectl restart apache2
conf file
<IfModule mod_ssl.c> # OCSP Stapling SSLCryptoDevice dynamic SSLStaplingCache shmcb:/var/log/apache2/learningwp.scsiraidguru.com/ssl_stapling_cache(128000) SSLSessionCache shmcb:/var/log/apache2/learningwp.scsiraidguru.com/ssl_scache(512000) Mutex file:/var/log/apache2/learningwp.scsiraidguru.com/ ssl-cache SSLRandomSeed startup builtin SSLRandomSeed connect builtin SSLPassPhraseDialog builtin <VirtualHost *:80> ServerName learningwp.scsiraidguru.com Redirect permanent / https://learningwp.scsiraidguru.com/ </VirtualHost> <VirtualHost *:443> ServerName learningwp.scsiraidguru.com ServerAdmin mike.mckenney@scsiraidguru.com DocumentRoot /var/www/learningwp.scsiraidguru.com/public_html SSLEngine On SSLOpenSSLConfCmd DHParameters "/etc/apache2/ssl/dhparams.pem" SSLOCSPEnable on SSLUseStapling on SSLOCSPResponseMaxAge 900 SSLOCSPResponseTimeSkew 300 SSLStaplingReturnResponderErrors off SSLStaplingErrorCacheTimeout 60 Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" Header set X-XSS-Protection "1; mode=block" Header set Referrer-Policy "origin" ErrorLog /var/log/apache2/learningwp.scsiraidguru.com/error.log CustomLog /var/log/apache2/learningwp.scsiraidguru.com/access.log combined Include /etc/letsencrypt/options-ssl-apache.conf SSLCACertificateFile /etc/letsencrypt/live/patrickmckenneylandscaping.com/chain.pem SSLCertificateFile /etc/letsencrypt/live/patrickmckenneylandscaping.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/patrickmckenneylandscaping.com/privkey.pem </VirtualHost> ## Only enable TLS v1.2 and v1.3 and avoid older protocols ## SSLProtocol -all +TLSv1.3 +TLSv1.2 Protocols h2 h2c http/1.1 acme-tls/1 # SSLOpenSSLConfCmd Groups sect571r1:sect571k1:secp521r1:sect409k1:sect409r1:secp384r1:brainpoolP512r1:brainpoolP384r1 SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:+HIGH:!MEDIUM:!LOW:!CAMELLIA:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:!DES:!RC4:!MD5:!RSA:!3DES:!SRP:!DSS:!SHA1:!SHA256:!SHA384 SSLHonorCipherOrder on SSLCompression off SSLSessionTickets off ## Permission for our DocumentRoot ## <Directory /var/www/learningwp.scsiraidguru.com/public_html> Options Indexes FollowSymLinks AllowOverride All </Directory> </IfModule>