Zoeken op website

Hoe u een lokaal zelfondertekend SSL-certificaat maakt op CentOS 8


SSL (Secure Socket Layer) en de verbeterde versie, TLS (Transport Socket Layer), zijn beveiligingsprotocollen die worden gebruikt om webverkeer te beveiligen dat van de webbrowser van een klant naar een webserver wordt verzonden.

Een SSL-certificaat is een digitaal certificaat dat een veilig kanaal creëert tussen de browser van een klant en een webserver. Daarbij worden gevoelige en vertrouwelijke gegevens zoals creditcardgegevens, inloggegevens en andere zeer persoonlijke informatie gecodeerd, waardoor wordt voorkomen dat hackers uw gegevens kunnen afluisteren en stelen.

Wat is een zelfondertekend SSL-certificaat?

Een zelfondertekend SSL-certificaat is, in tegenstelling tot andere SSL-certificaten die zijn ondertekend en vertrouwd door een Certificaatautoriteit (CA), een certificaat dat is ondertekend door een persoon die er eigenaar van is.

Het is volledig gratis om er een te maken en het is een goedkope manier om uw lokaal gehoste webserver te coderen. Het gebruik van een zelfondertekend SSL-certificaat wordt echter ten zeerste afgeraden in productieomgevingen om de volgende redenen:

  1. Omdat het niet is ondertekend door een Certificaatautoriteit, genereert een zelfondertekend SSL-certificaat waarschuwingen in webbrowsers om gebruikers te waarschuwen voor potentiële risico's als ze besluiten door te gaan. Deze waarschuwingen zijn ongewenst en zullen gebruikers ervan weerhouden uw website te bezoeken, wat mogelijk kan leiden tot een afname van het webverkeer. Als oplossing voor deze waarschuwingen moedigen organisaties hun werknemers doorgaans aan om de waarschuwingen eenvoudigweg te negeren en door te gaan. Dit kan leiden tot een gevaarlijke gewoonte bij gebruikers die besluiten deze waarschuwingen op andere onlinesites te blijven negeren en mogelijk het slachtoffer worden van phishing-sites.
  2. Zelfondertekende certificaten hebben een laag beveiligingsniveau omdat ze coderingstechnologieën en hashes op laag niveau implementeren. Het beveiligingsniveau is dus mogelijk niet vergelijkbaar met het standaard beveiligingsbeleid.
  3. Bovendien is er geen ondersteuning voor Public Key Infrastructure (PKI)-functies.

Dat gezegd hebbende, is het gebruik van een zelfondertekend SSL-certificaat geen slecht idee voor het testen van services en applicaties op een lokale machine die TLS/SSL-codering vereist.

In deze handleiding leert u hoe u een lokaal, zelfondertekend SSL-certificaat installeert op de Apache localhost-webserver op een CentOS 8-serversysteem.

Vereisten:

Voordat u aan de slag gaat, moet u ervoor zorgen dat u aan de volgende basisvereisten voldoet:

  1. Een exemplaar van de CentOS 8-server.
  2. Apache-webserver geïnstalleerd op de server
  3. Een hostnaam die al is geconfigureerd en gedefinieerd in het bestand /etc/hosts. Voor deze handleiding gebruiken we tecmint.local een hostnaam voor onze server.

Stap 1: Mod_SSL installeren op CentOS

1. Om te beginnen moet u verifiëren dat de Apache webserver is geïnstalleerd en actief is.

sudo systemctl status httpd

Dit is de verwachte output.

Als de webserver niet actief is, kunt u deze tijdens het opstarten starten en inschakelen met behulp van de opdracht.

sudo systemctl start httpd
sudo systemctl enable httpd

U kunt daarna bevestigen of Apache actief is.

2. Om de installatie en configuratie van het lokale zelfondertekende SSL-certificaat mogelijk te maken, is het mod_ssl pakket vereist.

sudo dnf install mod_ssl

Eenmaal geïnstalleerd, kunt u de installatie ervan verifiëren door het uit te voeren.

sudo rpm -q mod_ssl

Zorg er ook voor dat het OpenSSL pakket is geïnstalleerd (OpenSSL wordt standaard geïnstalleerd in CentOS 8).

sudo rpm -q openssl 

Stap 2: Maak een lokaal zelfondertekend SSL-certificaat voor Apache

3. Met de Apache webserver en alle vereisten in orde, moet u een map aanmaken waarin de cryptografische sleutels worden opgeslagen.

In dit voorbeeld hebben we een map gemaakt op /etc/ssl/private.

sudo mkdir -p /etc/ssl/private

Maak nu de lokale SSL-certificaatsleutel en het bestand met behulp van de opdracht:

sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout tecmint.local.key -out tecmint.local.crt

Laten we eens kijken waar sommige opties in de opdracht eigenlijk voor staan:

  • req -x509 – Dit geeft aan dat we het x509 Certificate Signing Request (CSR) gebruiken.
  • -nodes – Deze optie instrueert OpenSSL om het coderen van het SSL-certificaat met behulp van een wachtwoordzin over te slaan. Het idee hier is om Apache in staat te stellen het bestand te lezen zonder enige vorm van tussenkomst van de gebruiker, wat niet mogelijk zou zijn als er een wachtwoordzin wordt opgegeven.
  • -newkey rsa:2048 – Dit geeft aan dat we tegelijkertijd een nieuwe sleutel en een nieuw certificaat willen maken. Het rsa:2048-gedeelte impliceert dat we een 2048-bits RSA-sleutel willen maken.
  • -keyout – Deze optie specificeert waar het gegenereerde privésleutelbestand moet worden opgeslagen bij het maken ervan.
  • -out – Deze optie geeft aan waar het gemaakte SSL-certificaat moet worden geplaatst.

Stap 3: Installeer een lokaal zelfondertekend SSL-certificaat op Apache

4. Nadat u het SSL-certificaatbestand heeft gegenereerd, is het nu tijd om het certificaat te installeren met behulp van de instellingen van de Apache-webserver. Open en bewerk het configuratiebestand /etc/httpd/conf.d/ssl.conf.

sudo vi /etc/httpd/conf.d/ssl.conf

Zorg ervoor dat de volgende regels tussen de virtuele hosttags staan.

<VirtualHost *:443>
    ServerAdmin [email 
    ServerName www.tecmint.local
    ServerAlias tecmint.local
 
    DocumentRoot /var/www/html
 
    SSLEngine on
    SSLCertificateFile /etc/ssl/private/tecmint.local.crt
    SSLCertificateKeyFile /etc/ssl/private/tecmint.local.key
</VirtualHost>

Sla het bestand op en sluit het af. Om de wijzigingen door te voeren, start u Apache opnieuw op met behulp van de opdracht:

sudo systemctl restart httpd

5. Om externe gebruikers toegang te geven tot uw server, moet u poort 443 openen via de firewall, zoals weergegeven.

sudo firewall-cmd --add-port=443 --zone=public --permanent
sudo firewall-cmd --reload

Stap 3: Lokaal zelfondertekend SSL-certificaat testen op Apache

Nadat alle configuraties zijn uitgevoerd, start u uw browser en bladert u door het adres van uw server met behulp van het IP-adres of de domeinnaam van de server met behulp van het https-protocol.

Om het testen te stroomlijnen, kunt u overwegen het HTTP-protocol om te leiden naar HTTPS op de Apache-webserver. Dit is zo dat wanneer u door het domein bladert in gewone HTTP, het automatisch wordt omgeleid naar het HTTPS-protocol.

Blader dus door het domein of IP-adres van uw server

https://domain_name/

U krijgt een waarschuwing dat de verbinding niet veilig is, zoals weergegeven. Dit zal van browser tot browser verschillen. Zoals u wellicht kunt raden, is de waarschuwing te wijten aan het feit dat het SSL-certificaat niet is ondertekend door de Certificaatautoriteit en dat de browser dat registreert en meldt dat het certificaat niet kan worden vertrouwd.

Om door te gaan naar uw website, klikt u op het tabblad ‘Geavanceerd’, zoals hierboven weergegeven:

Voeg vervolgens de uitzondering toe aan de browser.

Laad ten slotte uw browser opnieuw en merk op dat u nu toegang hebt tot de server, hoewel er een waarschuwing op de URL-balk verschijnt dat de site niet volledig veilig is om dezelfde reden dat het SSL-certificaat zelfondertekend is en niet ondertekend door de Certificaatautoriteit.

We hopen dat u nu verder kunt gaan en een zelfondertekend SSL-certificaat kunt maken en installeren op de Apache localhost-webserver op CentOS 8.