HTTP

Omdirigerer HTTP til HTTPS

Omdirigerer HTTP til HTTPS
Enten du bruker selvsignerte certs, eller certs fra velkjent CA, trenger du en måte å integrere det med dine tjenester. En av de mest typiske brukssakene til en HTTP-server, dette kan være en webserver eller en REST API-server, men den må konfigureres for å være sikker.

De fleste webservere som nginx og apache lytter som standard på port 80 og trenger ganske mye konfigurasjon før de begynner å bruke sertifikatene for å kryptere trafikken. Til tross for at den er konfigurert, kan webserveren fortsatt betjene HTTP-trafikk ikke noe problem. Så besøkende på nettstedet ditt vil bare skrive http: // eksempel.com i stedet for https: // eksempel.com og hele trafikken forblir ukryptert for dem. For å omgå dette problemet må vi konfigurere HTTP-serverne slik at de selv omdirigerer alle HTTP til HTTPS.

Oppsettet jeg har bruker en FQDN med en offentlig IP, så jeg vil utstede et SSL-sertifikat fra LetsEncrypt i stedet for å utstede et selvsignert. Avhengig av hvilken type webserver du bruker, kan du gjøre dette på flere måter. Men den generelle flyten av det er slik:

  1. Få et signert sertifikat fra en CA. I vårt tilfelle vil dette være LetsEncrypt
  2. Konfigurer webserveren til å bruke krypteringsnøkkelen til å kryptere den utgående HTTP-trafikken på port 443. Dette er standard HTTPS-port.
  3. Omdirigere alle innkommende forespørsler på port 80 (som er ukryptert HTTP) til port 443, og muliggjør derved krypterte økter for alle innkommende tilkoblinger.

La oss demonstrere forskjellige måter å oppnå det vi ønsker. Først er den enkleste løsningen som bruker Certbot.

1. Enkleste måten - Bruke Certbot-plugins for Nginx eller Apache

Jeg vil bruke Nginx som et eksempel på denne serveren. Hvis du kjører en annen, som Apache eller HAProxy, er det bare å gå til den offisielle siden for Certbot og velge operativsystemet og den valgte webserveren din. For Nginx på Ubuntu 18.04, dette er kommandoene du trenger.

Oppdater først repoindeksen din.

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

Du må legge til de nødvendige tredjepartsregistrene, som Ubuntu kanskje ikke har aktivert som standard.

$ sudo add-apt-repository universet
$ sudo add-apt-repository ppa: certbot / certbot
$ sudo apt-get oppdatering

Og installer deretter certbot-pakken med Nginx-plugins, ved hjelp av kommandoen nedenfor.

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

Instruksjonene vil være forskjellige for forskjellige plattformer og installere plugins for webserveren hvis tilgjengelig. Årsaken til at plugins gjør livene våre så mye enklere er at de automatisk kan redigere konfigurasjonsfilene på webserveren for å omdirigere trafikken også. Ulempen kan være at hvis du kjører en veldig tilpasset server for eksisterende nettsted, kan plugin-en bryte noen ting der inne.

For nye nettsteder, eller veldig enkle konfigurasjoner, som en omvendt proxy, fungerer plugin overraskende bra. For å skaffe sertifikatene og for å omdirigere trafikken, kjør bare kommandoen nedenfor og følg gjennom de forskjellige interaktive alternativene når pakken går gjennom dem.

$ sudo certbot --nginx

Produksjon:

certbot --nginx
Lagrer feilsøkingslogg til / var / log / letsencrypt / letsencrypt.Logg
Plugins valgt: Authenticator nginx, Installer nginx
Skriv inn e-postadresse (brukes til pressemeldinger om fornyelse og sikkerhet) (Skriv inn 'c' t
avbryt): YOUREMAILHERE @ EXEMPLE.COM
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Les vilkårene for bruk på
https: // letsencrypt.org / dokumenter / LE-SA-v1.2. november-15-2017.pdf. Du må
godta for å registrere deg hos ACME-serveren på
https: // acme-v02.api.letsencrypt.org / katalog
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A) gree / (C) ancel: A
 
..
Ingen navn ble funnet i konfigurasjonsfilene dine. Vennligst skriv inn domenet ditt
navn (er) (komma og / eller mellomrom skilt) (Skriv 'c' for å avbryte): UNDERDOMENE.DOMENENAVN.TLD
..
 
Velg om du vil omdirigere HTTP-trafikk til HTTPS, og fjern HTTP-tilgang eller ikke.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Ingen omdirigering - Gjør ingen ytterligere endringer i webserverkonfigurasjonen.
2: Viderekobling - Gjør alle forespørsler viderekobling for å sikre HTTPS-tilgang. Velg dette for
nye nettsteder, eller hvis du er sikker på at nettstedet ditt fungerer på HTTPS. Du kan angre dette
endre ved å redigere webserverens konfigurasjon.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Velg riktig nummer [1-2] og deretter [enter] (trykk 'c' for å avbryte): 2
Omdirigerer all trafikk på port 80 til ssl i / etc / nginx / sites-enabled / default
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Gratulerer! Du har aktivert https: // SUBDOMAIN.DOMENENAVN.TLD
 
Du bør teste konfigurasjonen din på:
https: // www.ssllabs.com / ssltest / analyse.html?d = UNDERDOMENE.DOMENENAVN.TLD
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

VIKTIGE NOTATER:
- Gratulerer! Sertifikatet og kjeden din er lagret på:

/ etc / letsencrypt / live / SUBDOMAIN.DOMENENAVN.TLD / fullchain.pem

Nøkkelfilen din er lagret på:

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

Som vist i eksemplet ovenfor, trenger du bare å oppgi en gyldig e-postadresse og domenenavnet ditt for å få sertifikatet. Dette sertifikatet er angitt i / etc / letsencrypt / live / SUBDOMAIN.DOMENENAVN.TLD. Den siste katalogen blir oppkalt etter FQDN.

Det viktigste aspektet er å velge omdirigeringsalternativet, og det vil gjøre jobben med å omdirigere all HTTP-trafikk til HTTPS. Hvis du er nysgjerrig på hva disse endringene er, kan du inspisere konfigurasjonsfilene i / etc / nginx / for å få kjernen i det.

2. Redigere Config-filene

Hvis du vil konfigurere serveren din manuelt til å bruke sertifikatene. For å få sertifikatene ved bruk av certbot, kjør:

$ sudo certbot bare

Som før lagres sertifikatene i katalogen / etc / letsencrypt / live / dittdomenenavn.com /

Nå kan vi konfigurere Nginx til å bruke filene i denne katalogen. Først og fremst skal jeg kvitte meg med Debians spesifikke katalogoppsett. Standardsides nettstedkonfigurasjonsfil er / etc / nginx / sites-available / default underkatalog med symlink til / etc / nginx / site-enabled.

Jeg vil bare slette symlinket og flytte konfigurasjonsfilen til / etc / nginx / conf.d med en .conf utvidelse bare for å holde ting mer generalisert og gjeldende for andre distros også.

$ sudo rm / etc / sites-enabled / default
$ sudo mv / etc / nginx / nettsteder-tilgjengelig / standard / etc / nginx / conf.d / standard.konf
$ sudo service nginx start på nytt

Jeg vil endre denne standardkonfigurasjonsfilen for å demonstrere hvordan TLS er aktivert.

Følgende er innholdet i standardkonfigurasjonsfilen uten de kommenterte delene. De uthevede delene er den du bør legge til i serverkonfigurasjonen for å aktivere TLS, og den siste blokken i denne konfigurasjonsfilen oppdager om ordningen bruker TLS eller ikke. Hvis TLS ikke blir brukt, returnerer den ganske enkelt en 301-viderekoblingskode til klienten og endrer URL-en slik at den bruker https i stedet. På denne måten vil du ikke gå glipp av brukere

server
hør 80 standard_server;
hør [::]: 80 standard_server;
hør 443 ssl;
ssl_certificate / etc / letsencrypt / live / SUBDOMAIN.DOMENE.TLS / fullchain.pem;
ssl_certificate_key / etc / letsencrypt / live / SUBDOMAIN.DOMENE.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 ";
root / var / www / html;
indeksindeks.html-indeks.htm indeks.nginx-debian.html;
Server navn _;
plassering /
try_files $ uri $ uri / = 404;

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

 

Det er noen ekstra parametere lagt til i denne konfigurasjonsfilen. Inkludert parametere som erklærer tidsavbrudd, TLS-versjonen du bør bruke, og hvilken krypteringskoder som serveren skal bruke. Dette ble lånt fra Certbots anbefalte (men valgfrie) konfigurasjoner for Nginx.

Sjekk nå om konfigurasjonsfilen er gyldig, og start serveren på nytt.

$ sudo nginx -t
nginx: konfigurasjonsfilen / etc / nginx / nginx.conf syntaks er ok
nginx: konfigurasjonsfil / etc / nginx / nginx.conf test er vellykket
$ sudo service nginx start på nytt

Konklusjon

Du kan bruke samme tilnærming for mer kompliserte webapper og -tjenester som trenger HTTPS. Med Letsencrypt kan du utstede sertifikater for flere domenenavn samtidig, og du kan være vert for flere nettsteder bak nginx-webserveren din ganske enkelt. Hvis du fulgte eksemplet ovenfor, kan du prøve å nå ut til nettstedet ditt ved hjelp av http (http: // SUBDOMAIN.DOMENE.TLD) og du vil bli omdirigert til HTTPS automatisk.

For andre webservere, som Apache, bruk riktig certbot-plugin eller se deres offisielle dokumentasjon.

Mus Legg til musebevegelser i Windows 10 ved hjelp av disse gratisverktøyene
Legg til musebevegelser i Windows 10 ved hjelp av disse gratisverktøyene
De siste årene har datamaskiner og operativsystemer utviklet seg sterkt. Det var en tid da brukere måtte bruke kommandoer for å navigere gjennom filad...
Mus Kontroller og administrer musebevegelser mellom flere skjermer i Windows 10
Kontroller og administrer musebevegelser mellom flere skjermer i Windows 10
Dual Display Mouse Manager lar deg kontrollere og konfigurere musebevegelse mellom flere skjermer, ved å bremse bevegelsene nær grensen. Windows 10/8,...
Mus WinMouse lar deg tilpasse og forbedre musemarkørenes bevegelse på Windows PC
WinMouse lar deg tilpasse og forbedre musemarkørenes bevegelse på Windows PC
Hvis du vil forbedre standardfunksjonene til musepekeren, bruk freeware WinMouse. Det legger til flere funksjoner som hjelper deg å få mest mulig ut a...