HTTP

HTTP omleiden naar HTTPS

HTTP omleiden naar HTTPS
Of u nu zelfondertekende certificaten gebruikt of certificaten van een bekende CA, u hebt een manier nodig om deze te integreren met uw services. Een van de meest typische use-cases van een HTTP-server, dit kan een webserver of een REST API-server zijn, maar deze moet worden geconfigureerd om veilig te zijn.

De meeste webservers zoals nginx en apache luisteren standaard op poort 80 en hebben nogal wat configuratie nodig voordat ze de certificaten gaan gebruiken om het verkeer te versleutelen. Ondanks dat het is geconfigureerd, kan de webserver nog steeds HTTP-verkeer bedienen, geen probleem. Dus de bezoekers van uw website zullen gewoon http://example . typen.com in plaats van https://voorbeeld.com en het volledige verkeer blijft voor hen onversleuteld. Om dit probleem te omzeilen, moeten we de HTTP-servers zo configureren dat ze zelf alle HTTP omleiden naar HTTPS.

De setup die ik heb gebruikt een FQDN met een openbaar IP, dus ik zal een SSL-certificaat uitgeven van LetsEncrypt in plaats van een zelfondertekend certificaat. Afhankelijk van het soort webserver dat u gebruikt, kunt u dit op meerdere manieren doen. Maar de algemene stroom ervan is als volgt:

  1. Ontvang een ondertekend certificaat van een CA. In ons geval wordt dit LetsEncrypt
  2. Configureer de webserver om de coderingssleutel te gebruiken om het uitgaande HTTP-verkeer op poort 443 te coderen. Dit is de standaard HTTPS-poort.
  3. Leid alle inkomende verzoeken op poort 80 (die niet-versleutelde HTTP is) om naar poort 443, waardoor versleutelde sessies voor alle inkomende verbindingen mogelijk worden.

Laten we verschillende manieren demonstreren om te bereiken wat we willen. De eerste is de gemakkelijkste oplossing die Certbot . gebruikt.

1. Eenvoudigste manier - Certbot-plug-ins gebruiken voor Nginx of Apache

Ik zal Nginx als voorbeeld voor deze server gebruiken. Als je een andere gebruikt, zoals Apache of HAProxy, ga dan naar de officiële Certbot-pagina en selecteer je besturingssysteem en je webserver naar keuze. Voor Nginx op Ubuntu 18.04, dit zijn de commando's die je nodig hebt.

Werk eerst uw repo-index bij.

$ sudo apt-get update
$ sudo apt-get install software-properties-common

U zou de vereiste opslagplaatsen van derden moeten toevoegen, die Ubuntu mogelijk niet standaard heeft ingeschakeld.

$ sudo add-apt-repository-universe
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update

En installeer vervolgens het certbot-pakket met Nginx-plug-ins, met behulp van de onderstaande opdracht:.

$ sudo apt-get install certbot python-certbot-nginx

De instructie is verschillend voor verschillende platforms en installeer plug-ins voor de webserver indien beschikbaar. De reden waarom plug-ins ons leven zo veel gemakkelijker maken, is omdat ze automatisch de configuratiebestanden op de webserver kunnen bewerken om ook het verkeer om te leiden. Het nadeel zou kunnen zijn dat als je een zeer aangepaste server gebruikt voor een reeds bestaande website, de plug-in daar wat dingen kan breken.

Voor nieuwe websites of heel eenvoudige configuraties, zoals een reverse proxy, werkt de plug-in verrassend goed. Om de certificaten te verkrijgen en het verkeer om te leiden, voert u gewoon de onderstaande opdracht uit en volgt u de verschillende interactieve opties terwijl het pakket u er doorheen leidt.

$ sudo certbot --nginx

Uitgang:

certbot --nginx
Logboek voor foutopsporing opslaan in /var/log/letsencrypt/letsencrypt.log
Geselecteerde plug-ins: Authenticator nginx, Installer nginx
Voer e-mailadres in (gebruikt voor dringende verlengings- en beveiligingsmeldingen) (Voer 'c' t . in
annuleren): [email protected]
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Lees de Servicevoorwaarden op:
https://letsencrypt.org/documents/LE-SA-v1.2-nov-15-2017.pdf. Jij moet
ga akkoord om te registreren bij de ACME-server op
https://acme-v02.api.letencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A
 

Er zijn geen namen gevonden in uw configuratiebestanden. Vul a.u.b. uw domein in
naam/namen (gescheiden door komma's en/of spatie)  (Voer 'c' in om te annuleren): SUBDOMAIN.DOMEINNAAM.TLD

 
Kies of u HTTP-verkeer wilt omleiden naar HTTPS, HTTP-toegang verwijderenS.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Geen omleiding - Breng geen verdere wijzigingen aan in de webserverconfiguratie.
2: Redirect - Laat alle verzoeken omleiden naar beveiligde HTTPS-toegang. Kies dit voor
nieuwe sites, of als u zeker weet dat uw site op HTTPS werkt. U kunt dit ongedaan maken
wijzigen door de configuratie van uw webserver te bewerken.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Selecteer het juiste nummer [1-2] en vervolgens [enter] (druk op 'c' om te annuleren): 2
Al het verkeer op poort 80 omleiden naar ssl in /etc/nginx/sites-enabled/default
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Gefeliciteerd! Je hebt met succes https://SUBDOMAIN . ingeschakeld.DOMEINNAAM.TLD
 
U moet uw configuratie testen op:
https://www.ssllabs.com/ssltest/analyseren.html?d=SUBDOMEIN.DOMEINNAAM.TLD
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

BELANGRIJKE AANTEKENINGEN:
- Gefeliciteerd! Uw certificaat en ketting zijn opgeslagen bij:

/etc/letsencrypt/live/SUBDOMAIN.DOMEINNAAM.TLD/volledige keten.pem

Uw sleutelbestand is opgeslagen op:

/etc/letsencrypt/live/SUBDOMAIN.DOMEINNAAM.TLD/privkey.pem

Zoals in het bovenstaande voorbeeld te zien is, hoeft u alleen een geldig e-mailadres en uw domeinnaam op te geven om het certificaat te krijgen. Dit certificaat is in /etc/letsencrypt/live/SUBDOMAIN.DOMEINNAAM.TLD. De laatste map wordt genoemd naar uw FQDN.

Het belangrijkste aspect is het selecteren van de Redirect-optie en het zal het werk doen om al het HTTP-verkeer om te leiden naar HTTPS. Als u benieuwd bent naar wat deze wijzigingen zijn, kunt u de configuratiebestanden bekijken in /etc/nginx/ om er de essentie van te begrijpen.

2. De configuratiebestanden bewerken

Als u uw server handmatig wilt configureren om de certificaten te gebruiken. Voer het volgende uit om de certificaten te verkrijgen met behulp van certbot:

$ sudo certbot certonly

Net als voorheen worden de certificaten opgeslagen in de directory /etc/letsencrypt/live/uwdomeinnaam.com/

Nu kunnen we Nginx configureren om de bestanden in deze map te gebruiken. Allereerst zal ik de Debian-specifieke maplay-out verwijderen. Het siteconfiguratiebestand van de standaardpagina is: /etc/nginx/sites-available/default submap met een symbolische link naar /etc/nginx/site-enabled.

Ik zal gewoon de symbolische link verwijderen en het configuratiebestand verplaatsen naar /etc/nginx/conf.d met a .conf-extensie om dingen meer algemeen te houden en ook van toepassing te zijn op andere distributies.

$ sudo rm /etc/sites-enabled/default
$ sudo mv /etc/nginx/sites-available/default /etc/nginx/conf.d/standaard.conf
$ sudo-service nginx opnieuw opstarten

Ik zal dit standaardconfiguratiebestand wijzigen om te laten zien hoe de TLS is ingeschakeld.

Het volgende is de inhoud in uw standaardconfiguratiebestand, zonder de secties met opmerkingen:. De gemarkeerde secties zijn degene die u aan uw serverconfiguratie moet toevoegen om TLS in te schakelen en het laatste blok in dit configuratiebestand detecteert of het schema TLS gebruikt of niet. Als TLS niet wordt gebruikt, retourneert het gewoon een 301-omleidingscode naar de client en verandert de URL om in plaats daarvan https te gebruiken. Zo loopt u geen gebruikers mis

server
luister 80 default_server;
luister [::]:80 standaard_server;
luister 443 ssl;
ssl_certificate /etc/letsencrypt/live/SUBDOMAIN.DOMEIN.TLS/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/SUBDOMAIN.DOMEIN.TLD/privkey.pem;
ssl_session_cache gedeeld:le_nginx_SSL:1m;
ssl_session_timeout 1440m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers aan;
ssl_ciphers "ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-
ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256
-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256
-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128
-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE
-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE
-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3
-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256
-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS";
root /var/www/html;
indexindex.html-index.htm-index.nginx-debian.html;
server naam _;
plaats /
try_files $uri $uri/ =404;

als ($schema != "https")
retourneer 301 https://$host$request_uri;

 

Er zijn een paar extra parameters toegevoegd aan dit configuratiebestand. Inclusief parameters die de time-out aangeven, de TLS-versie die u moet gebruiken en welke versleutelingscodes de server zal gebruiken. Dit is geleend van Certbot's aanbevolen (maar optionele) configuraties voor Nginx.

Controleer nu of het configuratiebestand geldig is en start de server opnieuw op.

$ sudo nginx -t
nginx: het configuratiebestand /etc/nginx/nginx.conf syntaxis is ok
nginx: configuratiebestand /etc/nginx/nginx.conf-test is geslaagd
$ sudo-service nginx opnieuw opstarten

Conclusie

U kunt dezelfde aanpak toepassen voor meer gecompliceerde web-apps en services die HTTPS nodig hebben. Met Letsencrypt kunt u certificaten uitgeven voor meerdere domeinnamen tegelijk, en u kunt vrij eenvoudig meerdere websites achter uw nginx-webserver hosten. Als je het bovenstaande voorbeeld hebt gevolgd, probeer dan contact op te nemen met je website via http (http://SUBDOMAIN.DOMEIN.TLD) en u wordt automatisch doorgestuurd naar HTTPS.

Gebruik voor andere webservers, zoals Apache, de juiste certbot-plug-in of raadpleeg hun officiële documentatie.

Beste gamepad-toewijzingsapps voor Linux
Als je graag games op Linux speelt met een gamepad in plaats van een typisch toetsenbord- en muisinvoersysteem, zijn er enkele handige apps voor jou. ...
Handige hulpmiddelen voor Linux-gamers
Als je graag games op Linux speelt, is de kans groot dat je apps en hulpprogramma's zoals Wine, Lutris en OBS Studio hebt gebruikt om de game-ervaring...
HD Remastered Games voor Linux die nog nooit eerder een Linux-release hebben gehad
Veel game-ontwikkelaars en uitgevers komen met HD-remaster van oude games om de levensduur van franchise te verlengen, fans die compatibiliteit met mo...