Invoering

SSL (Secure Sockets Layer) en TLS (Transport Layer Security) zijn webprotocollen die worden gebruikt om normaal verkeer te beschermen door het in een gecodeerde vorm te verpakken.


Deze technologie beschikt over een certificaatsysteem dat privécommunicatie tussen servers en clients mogelijk maakt. Het creëert een veilig pad voor servers om verkeer naar klanten te sturen zonder dat de informatie door andere partijen wordt gemanipuleerd.

In deze zelfstudie nemen we u mee door het proces van het maken van een zelfondertekend SSL / TLS-certificaat en het te gebruiken op Nginx. In dit geval gebruiken we de Ubuntu 18.04-server.

Vereisten

Voordat je begint, heb je het volgende nodig:

  • Een niet-rootgebruiker met sudo-rechten
  • Een geïnstalleerde Nginx-server

Laten we nu in het proces duiken.

Stap 1: Zelfondertekend certificaat maken

Als het gaat om de implementatie van SSL / TLS-certificaten, werken ze via een set openbaar certificaat en een privésleutel. Het SSL-certificaat is een openbaar document dat wordt gedeeld met klanten die om de inhoud vragen. Aan de andere kant wordt de SSL-sleutel gebruikt bij het coderen van berichten die naar klanten worden verzonden en moet deze geheim worden gehouden op uw server.

Voer de onderstaande opdracht uit om een ​​certificaat en een zelfondertekende sleutel met SSL te maken:

$ sudo openssl req -x509 -nodes -days 365 -newkey rsa: 2048 -keyout /etc/ssl/private/example.com.key -out /etc/ssl/certs/example.com.crt

Openssl: Dit opdrachtregelprogramma voor het genereren en beheren van het OpenSSL-certificaat, sleutels en andere bestanden.

Req: Dit is een subopdracht die aangeeft dat we X.509 CSR-beheer (Certificate Signing Request) willen gebruiken. X.509 is de infrastructuurnorm voor openbare sleutels waaraan TLS en SSL voldoen voor zijn certificaat en sleutelbeheer. In ons geval genereren we een nieuw X.509-certificaat en daarom gebruiken we req.

-x509: Dit wijzigt het vereiste subcommando. Het informeert het hulpprogramma dat we een zelfondertekend certificaat maken in plaats van een CSR te genereren.

 -knooppunten: Dit beveelt OpenSSL om het certificaat niet te beveiligen met een wachtwoordzin. Een wachtwoordzin voorkomt dat Nginx ons bestand kan lezen wanneer de server wordt gestart.

-dagen 365: Dit bepaalt de geldigheidsduur van het certificaat.

-newkey rsa: 2048: Dit is een commando dat aangeeft dat we tegelijkertijd een nieuwe sleutel en een nieuw certificaat zullen genereren. Rsa: 2048 instrueert de service om een ​​RSA-sleutel van 2048 bits te maken.

-keyout: Dit is een regel die OpenSSL instrueert om de gemaakte privésleutel op te slaan.

-uit: De regel geeft OpenSSL de instructie waar het gemaakte certificaat moet worden opgeslagen.

Na de bovenstaande opdracht wordt u gevraagd een paar vragen te beantwoorden over het certificaat dat u wilt genereren.

Hoe Nginx te configureren om zelfondertekend SSL / TLS-certificaat te gebruiken op Ubuntu 18.04 VPS of Dedicated Server

Lees ze aandachtig en geef de juiste antwoorden om het proces te voltooien. De belangrijke regel om op te merken in deze sectie is er een die de algemene naam vereist, zoals UW naam of server Fully Qualified Domain Name (FQDN). Voer in dat geval uw domeinnaam of het openbare IP-adres dat aan de server is gekoppeld in.  .

Je zou de onderstaande output moeten hebben:

OutputIT
CountryName (2 lettercode) [AU]: US
StateorProvinceName (volledige naam) [Some-State]: New York
LocalityName (bijv. Stad) []: New YorkCity
OrganizationName (bijv. Bedrijf) [Internet Widgits Pty Ltd] :: Voorbeeldbedrijf
OrganizationalUnitName (bijv. Sectie) []: SSL-eenheid
CommonName (bijv. ServerFQDNorYOURname) []: server_IP_adres
EmailAddress []: [email protected]_domein.com

Als je klaar bent, worden de twee bestanden opgeslagen in de juiste submappen in de / etc / ssl directory.

U hebt deze bestanden nodig als referentie in de configuratie-instellingen van Nginx. Het is ook belangrijk om een ​​sterke DH (Diffie-Hellman) -groep te creëren die essentieel is bij onderhandelingen over het voorwaartse geheim met klanten.

Voer hiervoor de onderstaande opdracht uit:

$ Sudo openssl dhparam -out /etc/nginx/dhparam.pem 4096

Dit proces kan even duren, maar als het klaar is, wordt je DH (Diffie-Hellman) -groep opgeslagen in /etc/nginx/dhparam.pem die kan worden gebruikt in de Nginx-configuratie.

Hoe Nginx te configureren om zelfondertekend SSL / TLS-certificaat te gebruiken op Ubuntu 18.04 VPS of Dedicated Server

Stap 2: Nginx HTTP-webserver configureren om SSL te gebruiken

Aangezien we het certificaat en de sleutel en bestanden al hebben gemaakt, kunnen we doorgaan met het configureren van Nginx met deze instellingen.

Maar daarvoor zijn er enkele aanpassingen die we in onze configuratie moeten aanbrengen om gemeenschappelijke secties in herbruikbare eenheden te plaatsen.

Een configuratiefragment maken voor SSL-sleutel en certificaat

Begin met het maken van een fragment voor Nginx-configuratie in de / etc / nginx / snippets directory. We zullen dit bestand zelfondertekend noemen .conf.

$ sudo nano /etc/nginx/snippets/self-signed.conf

Stel nu de ssl_certificate naar het bijbehorende bestand en ssl_certificate_key naar de bijbehorende sleutel. Dit geeft je de volgende output:

/etc/nginx/snippets/self-signed.conf
ssl_certificate /et##c/ssl/certs/nginx-selfsigned.crt;
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;

Sla het bestand vervolgens op en sluit het af.

Een configuratiefragment genereren om SSL-instellingen te definiëren

De volgende stap is het creëren van een extra fragment met sterke SSL-encryptie-instellingen. Dit zal andere extra functies mogelijk maken om uw server veilig te houden.

In dit geval gaan we een generieke naam kiezen, zoals hieronder weergegeven:

$ sudo nano /etc/nginx/snippets/ssl-params.conf

Om ervoor te zorgen dat Nginx SSL veilig is ingesteld, gebruiken we het formaat op de site Cipherli.st, dat gebruiksvriendelijke coderingsrichtlijnen biedt voor populaire software.

Voor deze tutorial zullen we de instellingen van deze site kopiëren, maar we zullen een paar regels wijzigen.

In dit geval zullen we onze DNS-resolver opnemen voor verschillende upstream-verzoeken. We zullen ook de regel verwijderen die verantwoordelijk is voor de beveiliging van het transport.

Kopieer de onderstaande gegevens naar uw fragmentbestand met de naam ssl-params.conf.

ssl_protocols TLSv1.2;
ssl_prefer_server_cipherson;
ssl_dhparam /etc/nginx/dhparam.pem;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512: DHE-RSA-AES256-GCM-SHA512: ECDHE-RSA-AES256-GCM-SHA384: DHE-RSA-AES256-GCM-SHA384: ECDHE-RSA-AES256-SHA384: ECDHE-RSA-AES256;
ssl_ecdh_curve secp384r1; # Vereist nginx >= 1.1.0
ssl_session_timeout 10m;
ssl_session_cache gedeeld: SSL: 10m;
ssl_session_ticketsoff; # Vereist nginx >= 1.5.9
ssl_staplingon; # Vereist nginx >= 1.3.7
ssl_stapling_verifyon; # Vereist nginx => 1.3.7
resolver8.8.8.88.8.4.4 geldig = 300s;
resolver_timeout5s;
# Schakel voor nu strikte transportbeveiliging uit. U kunt het volgende verwijderen
# regel als u de implicaties begrijpt.
# add_header Strict-Transport-Security "max-leeftijd = 63072000; includeSubDomains; voorladen";
add_header X-Frame-opties DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-bescherming "1; mode = blok";

Aangezien we alleen een zelfondertekend certificaat gebruiken, is SSL-nieten niet nodig. Nginx schakelt het nieten automatisch uit en gaat verder met correct te werken.

Sla nu het bestand op en sluit het af.

Nginx-configuratie aanpassen om naar SSL te wijzen

Als u klaar bent met fragmenten, past u nu de Nginx-configuratie aan om SSL toe te staan.

Voor dit voorbeeld gebruiken we /etc/nginx/sites-available/example.com. Vervang de bestandsnaam in uw configuratie door degene die u wilt gebruiken.

Maar begin eerst met het maken van een back-up van het huidige configuratiebestand:

$ sudo cp /etc/nginx/sites-available/example.com /etc/nginx/sites-available/example.com.bak

Open uw bestand en pas de juiste regel aan zoals hieronder weergegeven:

$ sudo nano /etc/nginx/sites-beschikbaar/voorbeeld.com

Je ziet een output als deze:

/etc/nginx/sites-beschikbaar/voorbeeld.com
server {
luister 80;
luister [::]: 80;

servernaam voorbeeld.com www.voorbeeld.com;

root /var/www/example.com/html;
index index.html index.htm index.nginx-debian.html;

. . .
}

U kunt verschillende configuratieverklaringen ontdekken waar secties zoals wortel en inhoudsopgave kan verschijnen als locatie, proxy_pass, of andere configuraties. Het is belangrijk om te vermelden dat het oké is om deze richtlijnen te hebben, je hoeft alleen maar de update luister verklaringen en omvatten de SSL-fragmenten.

Ga in uw huidige configuratiebestand door en update de luisterinstructies naar server SSL-verkeer op poort 443 en ssl. Voeg ook de fragmentbestanden toe die in de vorige twee stappen zijn gemaakt:

/etc/nginx/sites-beschikbaar/voorbeeld.com
server {
luister 443 ssl;
luister [::]: 443 ssl;
inclusief fragmenten / zelfondertekend.conf;
omvatten fragmenten / ssl-params.conf;

servernaam voorbeeld.com www.voorbeeld.com;

root /var/www/example.com/html;
index index.html index.htm index.nginx-debian.html;

. . .
}

Plak na het afsluitende haakje (}) van het bovenstaande blok nog een serverblok in je configuratiebestand:

/etc/nginx/sites-beschikbaar/voorbeeld.com
. . .
server {
listen80;
luister [::]: 80;

servernaam voorbeeld.com www.voorbeeld.com;

return302 https: // $ servernaam $ request_uri;
}

De bovenstaande configuratie luistert op poort 80, naast het uitvoeren van omleidingen naar HTTP’s.

Sla het bestand op en sluit het af als je klaar bent.

Stap 3: Ufw Firewall-instellingen aanpassen

Als de ufw-firewall is ingeschakeld, moet u de systeeminstellingen aanpassen om verkeer via SSL toe te staan.

Zodra de installatie is voltooid, registreert Nginx verschillende profielen bij ufw.

U kunt deze profielen zien door de onderstaande opdracht uit te voeren:

$ Sudo ufw app-lijst

Je ziet een output als deze:

Beschikbare toepassingen:
Nginx vol
Nginx HTTP
Nginx HTTPS
OpenSSH

Voer de onderstaande opdracht uit om te zien welke instellingen zijn ingeschakeld:

$ Sudo ufw-status


U zou een uitvoer als deze moeten hebben om te laten zien dat uw webserver alleen HTTP-verkeer toestaat:

Uitvoer
Status: actief

Tot actie van
—                         ——      —-
OpenSSH ALLOW overal
Nginx HTTP ALLOW overal
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)

Om ervoor te zorgen dat het HTTPS-verkeer soepel verloopt, staat u het “Nginx Full” -profiel toe en verwijdert u het Nginx HTTP-redundante profiel:

$ Sudo ufw staat ‘Nginx Full’ toe
$ Sudo ufw delete staat ‘Nginx HTTP’ toe

Uw output zou er als volgt uit moeten zien:

$ Sudo ufw-status

Uitvoer

Status: actief

Tot actie van
—                         ——      —-
OpenSSH ALLOW overal
Nginx Full ALLOW overal
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)

Stap 4: Nginx opnieuw opstarten om de wijzigingen toe te passen

Zodra de aanpassingen aan de firewall zijn gemaakt, start u nu de Nginx-service opnieuw om de wijzigingen toe te passen.

Controleer ook of er geen fouten in uw bestanden zijn. Voer hiervoor de onderstaande opdracht uit:

$ Sudo nginx -t

Als alles naar behoren werkt, zou je de volgende output moeten krijgen:

nginx: [waarschuw] "ssl_stapling" genegeerd, certificaat van uitgever niet gevonden
nginx: het configuratiebestand /etc/nginx/nginx.confsyntax is ok
nginx: configuratiebestand /etc/nginx/nginx.conftest is succesvol

Start nu nginx opnieuw op om de wijzigingen toe te passen:

$ Sudo systemctl herstart nginx

Stap 5: De SSL-server testen

Test vervolgens of de SSL-codering werkt.

Typ in uw browser het voorvoegsel http: // en vervolgens uw domeinnaam:

https: // serverdomein

Aangezien het certificaat nog niet is ondertekend door een vertrouwde certificeringsinstantie, krijgt u hoogstwaarschijnlijk een waarschuwing zoals hieronder:

U ziet een waarschuwing die kan verschijnen omdat het eerder gemaakte SSL-certificaat niet is ondertekend door een vertrouwde certificeringsinstantie:

Hoe Nginx te configureren om zelfondertekend SSL / TLS-certificaat te gebruiken op Ubuntu 18.04 VPS of Dedicated Server

Maak je geen zorgen als je dit bericht ziet, het is normaal. Het belangrijkste is de coderingsfunctie van het certificaat. Selecteer de optie Geavanceerd en de link die volgt om door te gaan naar de host.

Hoe Nginx te configureren om zelfondertekend SSL / TLS-certificaat te gebruiken op Ubuntu 18.04 VPS of Dedicated Server

U wordt doorverwezen naar uw website. In uw browserbalk ziet u mogelijk iets dat lijkt op een slot met een symbool “X” overheen. Het betekent dat het certificaat nog niet is gevalideerd en dat de codering nog bezig is.

Typ het volgende om te controleren of de HTTP-inhoudomleiding correct werkt:

http: // serverdomein_of_IP

Als de resultaten van het slotpictogram hetzelfde zijn, betekent dit dat de omleiding correct werkt.

Stap 6: Wijzend naar permanente omleidingen

Als u zeker weet dat u alleen versleuteld verkeer wilt toestaan, dan is het belangrijk om de Nginx-configuratie te wijzigen om een ​​permanente omleiding te creëren.

Gebruik de onderstaande opdracht om het configuratiebestand van het serverblok te openen:

$ sudo nano /etc/nginx/sites-beschikbaar/voorbeeld.com

Zoek retour 302 en vervang deze door retour 301:

return301 https: // $ servernaam $ request_uri;

Sla wijzigingen op en sluit het bestand

Onderzoek vervolgens de configuratie op mogelijke syntaxisfouten met behulp van de onderstaande opdracht:

$ Sudo nginx -t

Start Nginx opnieuw op om de aanpassingen te voltooien:

$ Sudo systemctl herstart nginx

Conclusie

Daar heb je het! U heeft Nginx met succes geconfigureerd om SSL / TLS-certificaat te gebruiken. Het is een veilige manier om verzoeken van klanten toe te staan ​​en te voorkomen dat andere partijen toegang krijgen tot uw verkeer.

Bekijk de top 3 Linux-hostingservices

FastComet

Beginprijs:
$ 2,95


Betrouwbaarheid
9.7


Prijzen
9.5


Gebruikersvriendelijk
9.7


Ondersteuning
9.7


Kenmerken
9.6

Lees recensies

Bezoek FastComet

Hostinger

Beginprijs:
$ 0,99


Betrouwbaarheid
9.3


Prijzen
9.3


Gebruikersvriendelijk
9.4


Ondersteuning
9.4


Kenmerken
9.2

Lees recensies

Bezoek Hostinger

ChemiCloud

Beginprijs:
$ 2,76


Betrouwbaarheid
10


Prijzen
9,9


Gebruikersvriendelijk
9,9


Ondersteuning
10


Kenmerken
9,9

Lees recensies

Bezoek ChemiCloud

Gerelateerde How-To-artikelen

  • Hoe installeer je een Let’s Encrypt-certificaat op je Ubuntu 18.04 Dedicated Server of VPS
    gemiddeld
  • Hoe de LEMP (Linux, Nginx, MySQL, PHP) Stack op een Ubuntu 18.04 VPS of Dedicated Server te installeren
    gemiddeld
  • Eigen cloud installeren op een Ubuntu 18.04 Dedicated Server of VPS
    gemiddeld
  • Hoe phpMyAdmin op Ubuntu 18.04 VPS of Dedicated Server te beveiligen
    gemiddeld
  • Hoe WordPress Multisite op Ubuntu 18.04 in te stellen met Apache Web Server
    gemiddeld
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me