Sådan oprettes et lokalt selvsigneret SSL-certifikat på CentOS 8


SSL (Secure Socket Layer), og dens forbedrede version, TLS (Transport Socket Layer), er sikkerhedsprotokoller, der bruges til at sikre webtrafik sendt fra en klients webbrowser til en webserver.

Et SSL-certifikat er et digitalt certifikat, der opretter en sikker kanal mellem en klients browser og en webserver. Dermed krypteres følsomme og fortrolige data såsom kreditkortdata, loginoplysninger og andre meget private oplysninger, hvilket forhindrer hackere i at aflytte og stjæle dine oplysninger.

Et selvsigneret SSL-certifikat er i modsætning til andre SSL-certifikater, der er underskrevet og betroet af en Certificate Authority (CA), et certifikat underskrevet af en person, der ejer det.

Det er helt gratis at oprette en og er en billig måde at kryptere din lokalt hostede webserver på. Brug af et selvsigneret SSL-certifikat frarådes dog stærkt i produktionsmiljøer af følgende grunde:

  1. Da det ikke er underskrevet af en certifikatmyndighed, genererer et selvsigneret SSL-certifikat alarmer i webbrowsere, der advarer brugere om potentiel risiko forude, hvis de beslutter at fortsætte. Disse alarmer er uønskede og vil afholde brugerne fra at besøge dit websted, hvilket potentielt kan føre til et fald i webtrafik. Som en løsning på disse alarmer opfordrer organisationer normalt deres medarbejdere til simpelthen at ignorere advarslerne og gå videre. Dette kan give anledning til en farlig vane blandt brugere, der kan beslutte at fortsætte med at ignorere disse alarmer på andre online-websteder og potentielt blive offer for phishing-websteder.
  2. Selvsignerede certifikater har et lavt sikkerhedsniveau, da de implementerer lavt niveau krypteringsteknologier og hashes. Således er sikkerhedsniveauet muligvis ikke på niveau med standard sikkerhedspolitikker.
  3. Derudover er der ingen understøttelse af PKI-funktioner (Public Key Infrastructure).

Når det er sagt, er brugen af et selvsigneret SSL-certifikat ikke en dårlig idé til test af tjenester og applikationer på en lokal maskine, der kræver TLS/SSL-kryptering.

I denne vejledning lærer du, hvordan du installerer et lokalt selvsigneret SSL-certifikat på Apache localhost-webserveren på et CentOS 8-serversystem.

Inden du går i gang, skal du sikre dig, at du har følgende grundlæggende krav:

  1. En forekomst af CentOS 8-serveren.
  2. Apache-webserver installeret på serveren
  3. Et værtsnavn, der allerede er konfigureret og defineret i/etc/hosts-filen. Til denne vejledning skal vi bruge tecmint.local et værtsnavn til vores server.

Trin 1: Installation af Mod_SSL på CentOS

1. For at starte skal du kontrollere, at Apache-webserveren er installeret og kører.

$ sudo systemctl status httpd

Her er den forventede output.

Hvis webserveren ikke kører, kan du starte og aktivere den ved opstart ved hjælp af kommandoen.

$ sudo systemctl start httpd
$ sudo systemctl enable httpd

Du kan derefter bekræfte, om Apache er i gang.

2. For at aktivere installation og opsætning af det lokale selvsignerede SSL-certifikat kræves mod_ssl-pakken.

$ sudo dnf install mod_ssl

Når du er installeret, kan du kontrollere installationen ved at køre.

$ sudo rpm -q mod_ssl

Sørg også for, at OpenSSL-pakken er installeret (OpenSSL installeres som standard i CentOS 8).

$ sudo rpm -q openssl 

Trin 2: Opret et lokalt selvsigneret SSL-certifikat til Apache

3. Med Apache-webserveren og alle forudsætninger i skak skal du oprette et bibliotek, hvor de kryptografiske nøgler gemmes.

I dette eksempel har vi oprettet en mappe på/etc/ssl/private.

$ sudo mkdir -p /etc/ssl/private

Opret nu den lokale SSL-certifikatnøgle og fil ved hjælp af kommandoen:

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

Lad os se på, hvad nogle af indstillingerne i kommandoen faktisk står for:

  • req -x509 - Dette indikerer, at vi bruger x509 Certificate Signing Request (CSR).
  • -noder - Denne indstilling instruerer OpenSSL om at springe kryptering af SSL-certifikatet over ved hjælp af en adgangssætning. Ideen her er at tillade Apache at være i stand til at læse filen uden nogen form for brugerintervention, hvilket ikke ville være muligt, hvis en adgangsfrase er angivet.
  • -ny nøgle rsa: 2048 - Dette indikerer, at vi samtidig vil oprette en ny nøgle og et nyt certifikat. Rsa: 2048-delen indebærer, at vi vil oprette en 2048-bit RSA-nøgle.
  • -keyout - Denne indstilling angiver, hvor den genererede private nøglefil skal gemmes ved oprettelsen.
  • -out - Indstillingen angiver, hvor det oprettede SSL-certifikat skal placeres.

Trin 3: Installer lokalt selvsigneret SSL-certifikat på Apache

4. Efter at have genereret SSL-certifikatfilen er det nu tid til at installere certifikatet ved hjælp af Apache-webserverens indstillinger. Åbn og rediger konfigurationsfilen /etc/httpd/conf.d/ssl.conf.

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

Sørg for, at du har følgende linjer mellem de virtuelle værtsmærker.

<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>

Gem og afslut filen. For at de ændringer, der skal foretages, skal du genstarte Apache ved hjælp af kommandoen:

$ sudo systemctl restart httpd

5. For at eksterne brugere kan få adgang til din server, skal du åbne port 443 gennem firewallen som vist.

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

Trin 3: Test af lokalt selvsigneret SSL-certifikat på Apache

Med alle konfigurationerne på plads skal du starte din browser og gennemse din servers adresse ved hjælp af serverens IP-adresse eller domænenavn ved hjælp af https-protokollen.

For at strømline testen kan du overveje at omdirigere HTTP-protokollen til HTTPS på Apache-webserveren. Dette er sådan, at når du gennemser domænet i almindelig HTTP, omdirigeres det automatisk til HTTPS-protokol.

Så gennemse din servers domæne eller IP

https://domain_name/

Du får en advarsel, der informerer dig om, at forbindelsen ikke er sikker som vist. Dette vil variere fra en browser til en anden. Som du måske gætter, skyldes alarmen, at SSL-certifikatet ikke er underskrevet af certifikatmyndigheden, og browseren registrerer det og rapporterer, at certifikatet ikke kan stole på.

For at gå videre til dit websted skal du klikke på fanen 'Avanceret' som vist ovenfor:

Føj derefter undtagelsen til browseren.

Til sidst skal du genindlæse din browser og observere, at du nu kan få adgang til serveren, omend der vil være en advarsel på URL-linjen, at webstedet ikke er helt sikkert af samme grund, at SSL-certifikatet er selvsigneret og ikke underskrevet af Certifikatmyndighed.

Det er vores håb, at du nu kan fortsætte og oprette og installere et selvsigneret SSL-certifikat på Apache localhost-webserver på CentOS 8.