HTTP

Omdirigerer HTTP til HTTPS

Omdirigerer HTTP til HTTPS
Uanset om du bruger selvsignerede certs eller certs fra velkendte CA, har du brug for en måde at integrere det med dine tjenester. En af de mest typiske brugstilfælde for en HTTP-server, dette kan være en webserver eller en REST API-server, men den skal konfigureres til at være sikker.

De fleste webservere som nginx og apache lytter som standard til port 80 og har brug for en hel del konfiguration, før de begynder at bruge certifikaterne til at kryptere trafikken. På trods af at den er konfigureret, kan webserveren stadig servicere HTTP-trafik ikke noget problem. Så besøgende på dit websted vil bare skrive http: // eksempel.com i stedet for https: // eksempel.com og hele trafikken forbliver ukrypteret for dem. For at omgå dette problem er vi nødt til at konfigurere HTTP-serverne, så de selv omdirigerer alle HTTP til HTTPS.

Den opsætning, jeg har, bruger en FQDN med en offentlig IP, så jeg udsteder et SSL-certifikat fra LetsEncrypt snarere end at udstede en selvsigneret. Afhængigt af typen af ​​webserver, du bruger, kan du gøre dette på flere måder. Men den generelle strøm af det er sådan:

  1. Få et underskrevet certifikat fra en CA. I vores tilfælde vil dette være LetsEncrypt
  2. Konfigurer webserveren til at bruge krypteringsnøglen til at kryptere den udgående HTTP-trafik på port 443. Dette er standard HTTPS-porten.
  3. Omdiriger alle indgående anmodninger på port 80 (som ikke er krypteret HTTP) til port 443 og muliggør derved krypterede sessioner for alle indgående forbindelser.

Lad os demonstrere forskellige måder at opnå det, vi ønsker. Først er den nemmeste løsning, der bruger Certbot.

1. Den nemmeste måde - Brug af Certbot-plugins til Nginx eller Apache

Jeg bruger Nginx som et eksempel på denne server. Hvis du kører en anden, som Apache eller HAProxy, skal du bare besøge den officielle Certbot-side og vælge dit OS og din valgte webserver. Til Nginx på Ubuntu 18.04, dette er de kommandoer, du har brug for.

Opdater først dit repo-indeks.

$ sudo apt-get opdatering
$ sudo apt-get install software-egenskaber-fælles

Du bliver nødt til at tilføje de krævede tredjepartsregistre, som Ubuntu muligvis ikke har aktiveret som standard.

$ sudo add-apt-repository univers
$ sudo add-apt-repository ppa: certbot / certbot
$ sudo apt-get opdatering

Og installer derefter certbot-pakken med Nginx-plugins ved hjælp af kommandoen nedenfor.

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

Instruktionen vil være forskellig for forskellige platforme og installere plugins til webserveren, hvis den er tilgængelig. Årsagen til, at plugins gør vores liv så meget lettere, er at de automatisk kan redigere konfigurationsfilerne på webserveren for også at omdirigere trafikken. Ulempen kan være, at hvis du kører en meget tilpasset server til et eksisterende websted, kan pluginet muligvis bryde nogle ting derinde.

For nye websteder eller meget enkle konfigurationer, som en omvendt proxy, fungerer pluginet overraskende godt. For at få certifikaterne og for at omdirigere trafikken skal du blot køre nedenstående kommando og følge de forskellige interaktive muligheder, mens pakken fører dig gennem dem.

$ sudo certbot --nginx

Produktion:

certbot --nginx
Gemme fejllog til / var / log / letsencrypt / letsencrypt.log
Valgte plugins: Authenticator nginx, Installer nginx
Indtast e-mail-adresse (bruges til presserende fornyelses- og sikkerhedsmeddelelser) (Indtast 'c' t
annuller): YOUREMAILHERE @ EKSEMPEL.COM
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Læs servicevilkårene på
https: // letsencrypt.org / dokumenter / LE-SA-v1.2. november-15-2017.pdf. Du må
accepter for at registrere dig hos ACME-serveren på
https: // acme-v02.api.letsencrypt.org / bibliotek
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A) gree / (C) ancel: A
 
..
Der blev ikke fundet nogen navne i dine konfigurationsfiler. Indtast venligst dit domæne
navn (er) (komma og / eller mellemrum adskilt) (Indtast 'c' for at annullere): SUBDOMÆNE.DOMÆNENAVN.TLD
..
 
Vælg om HTTP-trafik skal omdirigeres til HTTPS eller ej, fjernelse af HTTP-adgang.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Ingen omdirigering - Foretag ingen yderligere ændringer i webserverkonfigurationen.
2: Omdirigering - Foretag alle anmodninger omdirigeret for at sikre HTTPS-adgang. Vælg dette til
nye websteder, eller hvis du er sikker på, at dit websted fungerer på HTTPS. Du kan fortryde dette
ændre ved at redigere din webserver konfiguration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Vælg det passende nummer [1-2] og derefter [enter] (tryk på 'c' for at annullere): 2
Omdirigerer al trafik på port 80 til ssl i / etc / nginx / sites-enabled / default
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Tillykke! Du har aktiveret https: // SUBDOMAIN.DOMÆNENAVN.TLD
 
Du skal teste din konfiguration på:
https: // www.ssllabs.com / ssltest / analyser.html?d = underdomæne.DOMÆNENAVN.TLD
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

VIGTIGE BEMÆRKNINGER:
- Tillykke! Dit certifikat og kæde er gemt på:

/ etc / letsencrypt / live / SUBDOMAIN.DOMÆNENAVN.TLD / fullchain.pem

Din nøglefil er gemt på:

/ etc / letsencrypt / live / SUBDOMAIN.DOMÆNENAVN.TLD / privkey.pem

Som vist i eksemplet ovenfor skal du kun angive en gyldig e-mail-adresse og dit domænenavn for at få certifikatet. Dette certifikat er angivet i / etc / letsencrypt / live / SUBDOMAIN.DOMÆNENAVN.TLD. Den sidste mappe vil blive opkaldt efter din FQDN.

Det vigtigste aspekt er at vælge indstillingen Redirect, og det vil gøre jobbet med at omdirigere al HTTP-trafik til HTTPS. Hvis du er nysgerrig efter, hvad disse ændringer er, kan du inspicere konfigurationsfilerne i / etc / nginx / for at få kernen af ​​det.

2. Redigering af Config-filerne

Hvis du manuelt vil konfigurere din server til at bruge certifikaterne. For at få certifikaterne ved hjælp af certbot skal du køre:

$ sudo certbot certonly

Som før gemmes certifikaterne i telefonbogen / etc / letsencrypt / live / ditdomænenavn.com /

Nu kan vi konfigurere Nginx til at bruge filerne i denne mappe. Første ting først vil jeg slippe af med det Debian-specifikke kataloglayout. Standardsides webstedskonfigurationsfil er / etc / nginx / sites-available / default underkatalog med et symlink til / etc / nginx / site-enabled.

Jeg vil bare slette symlinket og flytte konfigurationsfilen til / etc / nginx / conf.d med en .conf udvidelse bare for at holde tingene mere generaliserede og gældende for andre distroer også.

$ sudo rm / etc / sites-enabled / default
$ sudo mv / etc / nginx / sites-available / default / etc / nginx / conf.d / standard.konf
$ sudo service nginx genstart

Jeg vil ændre denne standardkonfigurationsfil for at demonstrere, hvordan TLS er aktiveret.

Følgende er indholdet i din standardkonfigurationsfil uden de kommenterede sektioner. De fremhævede sektioner er den, du skal tilføje til din serverkonfiguration for at aktivere TLS, og den sidste blok i denne konfigurationsfil registrerer, om ordningen bruger TLS eller ikke. Hvis TLS ikke bruges, returnerer den simpelthen en 301-omdirigeringskode til klienten og ændrer URL'en til at bruge https i stedet. På denne måde går du ikke glip af brugerne

server
lyt 80 standard_server;
lyt [::]: 80 default_server;
lyt 443 ssl;
ssl_certificate / etc / letsencrypt / live / SUBDOMAIN.DOMÆNE.TLS / fuldkæde.pem;
ssl_certificate_key / etc / letsencrypt / live / SUBDOMAIN.DOMÆNE.TLD / privkey.pem;
ssl_session_cache delt: le_nginx_SSL: 1m;
ssl_session_timeout 1440m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
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 ";
rod / var / www / html;
indeksindeks.html-indeks.htm-indeks.nginx-debian.html;
server navn _;
Beliggenhed /
try_files $ uri $ uri / = 404;

hvis ($ skema != "https")
returner 301 https: // $ host $ request_uri;

 

Der er et par ekstra parametre tilføjet til denne konfigurationsfil. Inkluderende parametre, der erklærer timeout, den TLS-version, du skal bruge, og hvilke krypteringskodere serveren bruger. Dette blev lånt fra Certbots anbefalede (men valgfri) konfigurationer til Nginx.

Kontroller nu, om konfigurationsfilen er gyldig, og genstart serveren.

$ sudo nginx -t
nginx: konfigurationsfilen / etc / nginx / nginx.conf syntaks er ok
nginx: konfigurationsfil / etc / nginx / nginx.conf test er vellykket
$ sudo service nginx genstart

Konklusion

Du kan anvende den samme tilgang til mere komplicerede webapps og -tjenester, der har brug for HTTPS. Letsencrypt lad dig udstede certifikater til flere domænenavne på én gang, og du kan være vært for flere websteder bag din nginx-webserver ganske let. Hvis du fulgte ovenstående eksempel, kan du prøve at nå ud til dit websted ved hjælp af http (http: // SUBDOMAIN.DOMÆNE.TLD), og du omdirigeres automatisk til HTTPS.

For andre webservere, som f.eks. Apache, skal du bruge det relevante certbot-plugin eller henvise til deres officielle dokumentation.

Mus Sådan ændres mus og touchpad-indstillinger ved hjælp af Xinput i Linux
Sådan ændres mus og touchpad-indstillinger ved hjælp af Xinput i Linux
De fleste Linux-distributioner leveres som standard med "libinput" -biblioteket til at håndtere inputhændelser på et system. Det kan behandle inputhæn...
Mus Remap dine museknapper forskelligt til anden software med X-Mouse Button Control
Remap dine museknapper forskelligt til anden software med X-Mouse Button Control
Måske har du brug for et værktøj, der kan ændre din muses kontrol med hver applikation, du bruger. Hvis dette er tilfældet, kan du prøve en applikatio...
Mus Microsoft Sculpt Touch Wireless Mouse Review
Microsoft Sculpt Touch Wireless Mouse Review
Jeg har for nylig læst om Microsoft Sculpt Touch trådløs mus og besluttede at købe den. Efter at have brugt det et stykke tid besluttede jeg at dele m...