CentOS 7 - SSL Certificaat

Als eerste moet mod_ssl (Apache module) ssl ondersteunen en geïnstalleerd worden op de server door onderstaand commando:
sudo yum install mod_ssl
Een certificaat aanmaken:
Maak een directory aan om de private key op te slaan.
sudo mkdir /etc/ssl/private
De bestanden in de map moeten worden beveiligd, zorg dat alleen de root user erbij mag:
sudo chmod 700 /etc/ssl/private
Nu we de locatie hebben aangemaakt kunnen we de SSL key genereren:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
Vul de vragen juist in. De meest belangrijke is de "Common Name". Hier vul je de domeinnaam in van de server. Heb je geen domein naam vul dan het ip adres van de server in.

Beide bestanden die zijn aangemaakt zijn geplaatst in de map /etc/ssl.

Een sterke beveiliging voor de Diffie-Hellman group is nodig, zodat de sleutel uitwisseling goed verloopt tussen de verschillende clients.
Dit kan door onderstaande uit te voeren:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Het maken duurt een aantal minuten, eenmaal klaar kan onderstaande gebruikt worden:
/etc/ssl/certs/dhparam.pem
Voeg het bestand toe aan de certificaat toe op de server, dit moet in CentOS 7 handmatig.
cat /etc/ssl/certs/dhparam.pem | sudo tee -a /etc/ssl/certs/apache-selfsigned.crt
Het apache-selfsigned.crt bestand is nu juist aangemaakt en beveiligd, deze kan nu gebruikt te worden.

Het certificaat installeren:
Open de apache SSL configuratie bestand in een text editor met root rechten:
sudo vi /etc/httpd/conf.d/ssl.conf
Vindt de regel dat begint met:
Er moeten een paar aanpassingen gemaakt worden om ervoor te zorgen dat het SSL certificaat juist wordt geinstalleerd.
Aanpassen van de VirtualHost richtlijnen: Onbecommentarieer documentRoot en ServerName en vul de juiste waarden daarbij in.
DocumentRoot "/var/www/example.com/public_html"ServerName www.example.com:443
Ga naar:
/etc/httpd/conf.d/ssl.conf
Vervolgens zoek SSLProtocol and SSLCipherSuite en verwijder deze of commentarieer deze uit. 
De beveiliging die wij configureren is beter dan de standaard beveiliging van Apache.
# SSLProtocol all -SSLv2# SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA
Vervolgens zoek SSLCertificateFile en SSLCertificateKeyFile en pas deze aan naar de bestanden die we eerder hebben aangemaakt in de map "/etc/ssl/..".
/etc/httpd/conf.d/ssl.conf
Voeg onderstaande code toe:
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crtSSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
Beveilig het SSL certificaat:
/etc/httpd/conf.d/ssl.conf
Plak onderstaande instellingen na .
# Begin copied textSSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDHSSLProtocol All -SSLv2 -SSLv3SSLHonorCipherOrder On# Disable preloading HSTS for now.  You can use the commented out header line that includes# the "preload" directive if you understand the implications.#Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains"Header always set X-Frame-Options DENYHeader always set X-Content-Type-Options nosniff# Requires Apache >= 2.4SSLCompression off SSLUseStapling on SSLStaplingCache "shmcb:logs/stapling-cache(150000)" # Requires Apache >= 2.4.11# SSLSessionTickets Off
Redirect van http naar https: Maak onderstaande bestand aan om alle niet ssl verkeer om te leiden naar ssl.
sudo vi /etc/httpd/conf.d/non-ssl.conf
Voeg onderstaande toe.
    ServerName www.example.com    Redirect "/" "https://www.example.com/"
Activeer de certificaat.

controleer het certificaat eerst op fouten:
sudo apachectl configtest
Herstart de Apache server:
sudo systemctl restart httpd.service
Voeg onderstaande toe aan de firewall:
sudo firewall-cmd --add-service=httpsudo firewall-cmd --add-service=httpssudo firewall-cmd --runtime-to-permanent
http en https openzetten:
sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPTsudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT
Klaar.