Hvordan lage et lokalt selvsignert SSL-sertifikat på CentOS 8


SSL (Secure Socket Layer), og dens forbedrede versjon, TLS (Transport Socket Layer), er sikkerhetsprotokoller som brukes til å sikre nettrafikk sendt fra en klients nettleser til en webserver.

Et SSL-sertifikat er et digitalt sertifikat som skaper en sikker kanal mellom en klients nettleser og en webserver. Ved å gjøre dette krypteres sensitive og konfidensielle data som kredittkortdata, påloggingsinformasjon og annen svært privat informasjon, og forhindrer hackere i å avlytte og stjele informasjonen din.

Et selvsignert SSL-sertifikat, i motsetning til andre SSL-sertifikater som er signert og klarert av en Certificate Authority (CA), er et sertifikat signert av en person som eier det.

Det er helt gratis å lage en og er en billig måte å kryptere din lokalt hostede webserver på. Imidlertid frarådes bruk av et selvsignert SSL-sertifikat i produksjonsmiljøer av følgende grunner:

  1. Siden det ikke er signert av en sertifiseringsinstans, genererer et selvsignert SSL-sertifikat varsler på nettlesere som advarer brukere om potensiell risiko i forkant dersom de bestemmer seg for å fortsette. Disse varslene er uønskede og vil avskrekke brukere fra å besøke nettstedet ditt, noe som potensielt kan føre til en nedgang i nettrafikken. Som en løsning på disse varslene, oppfordrer organisasjoner vanligvis sine ansatte til å bare ignorere varslene og gå videre. Dette kan skape en farlig vane blant brukere som kan bestemme seg for å fortsette å ignorere disse varslene på andre nettsider, og potensielt bli ofre for phishing-nettsteder.
  2. Selvsignerte sertifikater har et lavt sikkerhetsnivå siden de implementerer chifferteknologier og hashes på lavt nivå. Det kan derfor hende at sikkerhetsnivået ikke er på nivå med standard sikkerhetspolicyer.
  3. I tillegg er det ingen støtte for funksjoner for Public Key Infrastructure (PKI).

Når det er sagt, er bruk av et selvsignert SSL-sertifikat ikke en dårlig idé for å teste tjenester og applikasjoner på en lokal maskin som krever TLS/SSL-kryptering.

I denne veiledningen lærer du hvordan du installerer et lokalt selvsignert SSL-sertifikat på Apache localhost-nettserveren på et CentOS 8-serversystem.

Før du begynner, sørg for at du har følgende grunnleggende krav:

  1. En forekomst av CentOS 8-serveren.
  2. Apache-nettserver installert på serveren
  3. Et vertsnavn som allerede er konfigurert og definert i filen /etc/hosts. For denne veiledningen skal vi bruke tecmint.local et vertsnavn for serveren vår.

Trinn 1: Installere Mod_SSL på CentOS

1. For å starte, må du bekrefte at Apache-nettserveren er installert og kjører.

$ sudo systemctl status httpd

Her er forventet utgang.

Hvis webserveren ikke kjører, kan du starte og aktivere den ved oppstart ved å bruke kommandoen.

$ sudo systemctl start httpd
$ sudo systemctl enable httpd

Du kan deretter bekrefte om Apache er oppe og går.

2. For å aktivere installasjon og oppsett av det lokale selvsignerte SSL-sertifikatet, kreves mod_ssl-pakken.

$ sudo dnf install mod_ssl

Når den er installert, kan du bekrefte installasjonen ved å kjøre.

$ sudo rpm -q mod_ssl

Sørg også for at OpenSSL-pakken er installert (OpenSSL kommer installert som standard i CentOS 8).

$ sudo rpm -q openssl 

Trinn 2: Opprett et lokalt selvsignert SSL-sertifikat for Apache

3. Med Apache-nettserveren og alle forutsetningene i sjakk, må du opprette en katalog der de kryptografiske nøklene skal lagres.

I dette eksemplet har vi laget en katalog på /etc/ssl/private.

$ sudo mkdir -p /etc/ssl/private

Opprett nå den lokale SSL-sertifikatnøkkelen og filen ved å bruke kommandoen:

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

La oss se på hva noen av alternativene i kommandoen faktisk står for:

  • req -x509 – Dette indikerer at vi bruker x509 Certificate Signing Request (CSR).
  • -noder – Dette alternativet instruerer OpenSSL til å hoppe over kryptering av SSL-sertifikatet ved hjelp av en passordfrase. Tanken her er å la Apache kunne lese filen uten noen form for brukerintervensjon som ikke ville vært mulig hvis en passordfrase er oppgitt.
  • -newkey rsa:2048 – Dette indikerer at vi ønsker å lage en ny nøkkel og et nytt sertifikat samtidig. rsa:2048-delen innebærer at vi ønsker å lage en 2048-biters RSA-nøkkel.
  • -keyout – Dette alternativet spesifiserer hvor den genererte private nøkkelfilen skal lagres ved opprettelse.
  • -out – Alternativet spesifiserer hvor det opprettede SSL-sertifikatet skal plasseres.

Trinn 3: Installer lokalt selvsignert SSL-sertifikat på Apache

4. Etter å ha generert SSL-sertifikatfilen, er det nå på tide å installere sertifikatet ved å bruke Apache-nettserverens innstillinger. Åpne og rediger /etc/httpd/conf.d/ssl.conf konfigurasjonsfilen.

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

Sørg for at du har følgende linjer mellom de virtuelle vertskodene.

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

Lagre og avslutt filen. For at endringene skal utføres, start Apache på nytt ved å bruke kommandoen:

$ sudo systemctl restart httpd

5. For at eksterne brukere skal få tilgang til serveren din, må du åpne port 443 gjennom brannmuren som vist.

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

Trinn 3: Testing av lokalt selvsignert SSL-sertifikat på Apache

Med alle konfigurasjonene på plass, start nettleseren din og bla gjennom serverens adresse ved å bruke serverens IP-adresse eller domenenavn ved å bruke https-protokollen.

For å strømlinjeforme testingen kan du vurdere å omdirigere HTTP-protokollen til HTTPS på Apache-nettserveren. Dette er slik at når du blar gjennom domenet i vanlig HTTP, vil det automatisk bli omdirigert til HTTPS-protokollen.

Så bla gjennom serverens domene eller IP

https://domain_name/

Du vil få et varsel som informerer deg om at tilkoblingen ikke er sikker som vist. Dette vil variere fra en nettleser til en annen. Som du kanskje gjetter, skyldes varselet at SSL-sertifikatet ikke er signert av sertifiseringsmyndigheten og nettleseren registrerer det og rapporterer at sertifikatet ikke kan stoles på.

For å fortsette til nettstedet ditt, klikk på Avansert-fanen som vist ovenfor:

Deretter legger du til unntaket i nettleseren.

Last til slutt nettleseren på nytt og merk at du nå kan få tilgang til serveren, men det vil være en advarsel på URL-linjen om at nettstedet ikke er helt sikkert av samme grunn som SSL-sertifikatet er selvsignert og ikke signert av Sertifiseringsinstans.

Det er vårt håp at du nå kan fortsette og opprette og installere et selvsignert SSL-sertifikat på Apache localhost-nettserver på CentOS 8.