Cloud & IT Cert Prep · Oppitunti

SSL-terminointi ja tahmeat istunnot

Siirrätte TLS:n päätelaitteesta load balancerille ACM-varmenteilla ja otatte sticky session -istunnot käyttöön, kun tilalliset työkuormat edellyttävät asiakassidonnaisuutta.

Oppitunti 4/413 vaihetta

SSL-terminointi ja tahmeat istunnot on ilmainen Cloud & IT Cert Prep-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Cloud & IT Cert Prep-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Cloud & IT Cert Prep-kurssilla on yhteensä 4 oppituntia.

SSL/TLS:n päättäminen kuormantasaajassa

SSL/TLS:n päättäminen tarkoittaa, että kuormantasaaja purkaa saapuvan HTTPS-liikenteen salauksen, tarkastelee selväkielistä HTTP-pyyntöä (reitityspäätöksiä varten) ja salaa pyynnön tarvittaessa uudelleen ennen sen välittämistä taustajärjestelmään. Kun päättäminen tapahtuu ALB:ssä, sovelluspalvelimet voivat vastaanottaa kuormantasaajalta salaamatonta HTTP-liikennettä, mikä yksinkertaistaa taustajärjestelmän määrityksiä.

Kuormantasaajassa tapahtuva päättäminen vähentää sovelluspalvelinten suorittimen kuormitusta (yhteyskohtaista TLS-kättelyä ei tarvita), mahdollistaa sisältöön perustuvan reitityksen (joka edellyttää HTTP-otsakkeiden lukemista) ja keskittää varmenteiden hallinnan.

AWS Certificate Manager (ACM) -integraatio

AWS Certificate Manager (ACM) hankkii, hallinnoi ja uusii SSL/TLS-varmenteet ilman lisäkustannuksia. ALB ja NLB integroituvat suoraan ACM:ään: valitset ACM-varmenteen HTTPS-kuuntelijan määrityksissä, ja kuormantasaaja esittää sen yhteyttä muodostaville asiakkaille.

ACM-varmenteet uusitaan automaattisesti ennen niiden vanhenemista – manuaalista uusimista ei tarvita, eikä vanhentuneista varmenteista aiheudu käyttökatkoja. Julkisten varmenteiden tapauksessa ACM vahvistaa verkkotunnuksen omistajuuden DNS-validoinnilla (CNAME-tietue Route 53:ssa) tai sähköpostivalidoinnilla. Sisäiseen käyttöön ACM Private CA voi myöntää yksityisiä varmenteita.

# Request a public certificate in ACM
aws acm request-certificate \
  --domain-name api.example.com \
  --subject-alternative-names '*.example.com' \
  --validation-method DNS \
  --region us-east-1

# Create an HTTPS listener using the ACM certificate
aws elbv2 create-listener \
  --load-balancer-arn arn:aws:elasticloadbalancing:us-east-1:123456789:loadbalancer/app/my-alb/abc \
  --protocol HTTPS \
  --port 443 \
  --ssl-policy ELBSecurityPolicy-TLS13-1-2-2021-06 \
  --certificates CertificateArn=arn:aws:acm:us-east-1:123456789:certificate/cert-id \
  --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:us-east-1:123456789:targetgroup/my-tg/xyz

Server Name Indication (SNI)

SNI (Server Name Indication) on TLS-laajennus, jonka ansiosta yksi IP-osoite (ja siten yksi ALB- tai NLB-kuuntelija) voi tarjota useita TLS-varmenteita eri verkkotunnuksille. Asiakas sisällyttää tavoittelemaansa isäntänimeä koskevat tiedot TLS ClientHello -viestiin, ja kuormantasaaja valitsee sopivan varmenteen.

ALB tukee SNI:tä natiivisti: voit liittää useita ACM-varmenteita yhteen HTTPS-kuuntelijaan. ALB valitsee oikean varmenteen automaattisesti asiakkaan SNI-isäntänimen perusteella. Näin kullekin verkkotunnukselle ei tarvita erillistä kuuntelijaa tai kuormantasaajaa, joten SSL:ää käyttävä virtuaalipalvelu voidaan toteuttaa aidosti.

# Add a second certificate to an existing HTTPS listener (SNI)
aws elbv2 add-listener-certificates \
  --listener-arn arn:aws:elasticloadbalancing:us-east-1:123456789:listener/app/my-alb/abc/lis456 \
  --certificates CertificateArn=arn:aws:acm:us-east-1:123456789:certificate/second-cert-id

SSL-suojauskäytännöt

ALB ja NLB tukevat määritettäviä SSL-suojauskäytäntöjä, jotka määrittävät, mitä TLS-protokollaversioita ja salausmenetelmäpaketteja kuormantasaaja hyväksyy asiakkailta. AWS tarjoaa ennalta määritettyjä käytäntöjä (esim. ELBSecurityPolicy-TLS13-1-2-2021-06), joita päivitetään uusien haavoittuvuuksien löytyessä.

Vaatimustenmukaisuusvaatimukset voivat edellyttää tiettyjä TLS-versioita: PCI-DSS 3.2.1 edellyttää vähintään TLS 1.2 -versiota; monet nykyaikaiset standardit suosittelevat TLS 1.0- ja 1.1-versioiden poistamista käytöstä kokonaan. Käytä käytäntöä, joka sulkee pois vanhentuneet protokollat ja heikot salausmenetelmäpaketit. Suosi käytäntöjä, jotka sisältävät TLS 1.3:n paremman eteenpäin suuntautuvan salaisuuden ja suorituskyvyn vuoksi.

# List available SSL policies
aws elbv2 describe-ssl-policies \
  --query 'SslPolicies[*].{Name:Name,TLSVersions:SslProtocols}' \
  --output table

Päästä päähän -salaus ja päättäminen

ALB:ssä on kaksi erilaista TLS-lähestymistapaa:

  • SSL:n päättäminen (yleisin): ALB purkaa salauksen kuormantasaajassa ja välittää selväkielisen HTTP:n kohteille. Tämä on yksinkertaista, mahdollistaa reitityksen tarkastelun ja vähentää palvelinten suorittimen kuormaa. Taustajärjestelmän liikennettä ei salata VPC:n sisällä.
  • Päästä päähän ulottuva TLS: ALB purkaa salauksen ja salaa liikenteen uudelleen ennen sen välittämistä kohteille (ALB:n ja kohteen välillä käytetään HTTPS:ää). Tämä kuluttaa enemmän suorittimen resursseja ja edellyttää varmenteita kohteissa, mutta varmistaa VPC:n sisäisen salauksen tiukkojen vaatimustenmukaisuusvaatimusten tilanteissa.

NLB:n TLS-läpivientitilassa NLB ei pura salausta lainkaan, vaan välittää raakaa TCP-liikennettä kohteelle, joka käsittelee TLS:n. Sovelluspalvelin hallinnoi omaa varmennettaan.

Istuntojen pysyvyys: mitä ja miksi

Istuntojen pysyvyys (myös istuntosidonnaisuus) varmistaa, että kaikki saman asiakkaan pyynnöt reititetään johdonmukaisesti samaan kohteeseen kohderyhmän sisällä. Tätä tarvitaan tilallisissa sovelluksissa, jotka tallentavat istuntotiedot yksittäisten palvelinten muistiin (jaetun ElastiCache-välimuistin sijaan).

Ilman istuntojen pysyvyyttä tilaton kuormantasaaja saattaa lähettää pyynnön 1 palvelimelle A (joka tallentaa istunnon) ja pyynnön 2 palvelimelle B (jolla ei ole istuntotietoja). Tällöin käyttäjä voi vaikuttaa uloskirjautuneelta tai menettää ostoskorin sisällön. Istuntojen pysyvyys sitoo asiakkaan tiettyyn kohteeseen istunnon ajaksi.

Evästepohjainen pysyvyys ALB:ssä

ALB tukee kahdenlaisia pysyvien istuntojen evästeitä:

  • Kestoon perustuva pysyvyys (kuormantasaajan luoma eväste): ALB luo evästeen nimeltä AWSALB (ALB:tä varten) ja määrittää sille vanhenemisajan. Eväste sisältää salatun viittauksen kohteeseen. Asiakas lähettää tämän evästeen myöhemmissä pyynnöissä.
  • Sovelluspohjainen pysyvyys: käyttää sovelluksesi aiemmin asettamaa evästettä. ALB lukee määrittämäsi evästeen nimen, luo siitä salatun version omaan evästeeseensä ja käyttää sitä pysyvään reititykseen säilyttäen samalla alkuperäisen sovellusevästeen.

Pysyvyys määritetään kohderyhmäkohtaisesti, ja sen kestoksi voidaan määrittää 1 sekunnista 7 päivään.

# Enable duration-based sticky sessions on a target group
aws elbv2 modify-target-group-attributes \
  --target-group-arn arn:aws:elasticloadbalancing:us-east-1:123456789:targetgroup/my-tg/xyz \
  --attributes \
    Key=stickiness.enabled,Value=true \
    Key=stickiness.type,Value=lb_cookie \
    Key=stickiness.lb_cookie.duration_seconds,Value=86400

Istuntojen pysyvyyden haitat

Vaikka istuntojen pysyvyys ratkaisee tilallisten sovellusten ongelman, se tuo mukanaan kompromisseja:

  • Epätasainen kuorman jakautuminen: jotkin kohteet voivat vastaanottaa enemmän liikennettä, jos tietyt asiakkaat ovat poikkeuksellisen aktiivisia, mikä kumoaa kuormantasauksen tarkoituksen
  • Skaalauksen rajoitukset: jos pysyvä kohde muuttuu toimimattomaksi, istunnot katkeavat – asiakkaan on aloitettava uusi istunto uuden kohteen kanssa, jolloin muistiin tallennetut istuntotiedot menetetään
  • Heikentynyt joustavuus: istuntojen pysyvyys vaikeuttaa instanssien tyhjentämistä ja lopettamista kapasiteettia pienennettäessä

Hyvä käytäntö: poista istuntojen pysyvyyden tarve siirtämällä istuntotila ulkoiseen palveluun, kuten ElastiCacheen tai DynamoDB:hen. Näin sovelluksestasi tulee aidosti tilaton ja vaakasuuntainen skaalaus voidaan hyödyntää kokonaan.

NLB:n TLS-kuuntelija ja läpivienti

NLB tukee TLS-kuuntelijoita portissa 443 (tai missä tahansa portissa) TLS:n päättämistä varten ALB:n tapaan. NLB purkaa liikenteen salauksen, salaa sen tarvittaessa uudelleen ja välittää sen kohteille. Vaihtoehtoisesti NLB voi välittää salatun TCP-liikenteen purkamatta sitä, jos määrität TCP-kuuntelijan – tässä tilassa sovelluspalvelin käsittelee TLS:n päästä päähän.

ACM:n avulla toteutettu NLB:n TLS:n päättäminen tarjoaa samat varmenteiden hallinnan edut kuin ALB, mutta ilman HTTP-tason ominaisuuksia. Käytä NLB:n TLS:n päättämistä, kun tarvitset staattiset IP-osoitteet ja TLS:n päättämisen tai kun taustajärjestelmän protokolla ei ole HTTP (esim. mukautettu TCP-protokolla).

Yhteyksien tyhjennyksen ja istuntojen pysyvyyden yhteisvaikutus

Kun pysyvä kohde poistetaan rekisteristä (esim. Auto Scaling -kapasiteetin pienennyksen aikana), yhteyksien tyhjennys antaa käynnissä oleville pyynnöille aikaa valmistua. Pysyviltä asiakkailta, joilla on edelleen tyhjennettävään kohteeseen viittaava AWSALB-eväste, tulevat uudet pyynnöt kuitenkin määritetään automaattisesti uudelle kohteelle – kyseisen asiakkaan pysyvyys evätään.

Tämä rekisteristäpoistoviiveen ja evästeen mitätöinnin yhdistelmä varmistaa hallitut siirtymät: olemassa olevat pitkäkestoiset pyynnöt saadaan päätökseen, ja kyseisten asiakkaiden uudet pyynnöt reititetään sujuvasti terveille kohteille ilman, että loppukäyttäjä näkee niitä virheinä.

SSL:n ja istuntojen hallinnan parhaat käytännöt

Tutkinnossa olennaiset parhaat käytännöt:

  • Käytä ACM-varmenteita automaattista uusimista varten – älä koskaan hallinnoi varmenteita manuaalisesti kuormantasaajissa
  • Käytä TLS 1.2+ -suojauskäytäntöjä; poista TLS 1.0 ja 1.1 käytöstä PCI-/HIPAA-vaatimustenmukaisuuden vuoksi
  • Suosi tilattomia arkkitehtuureja (istunto ElastiCachessa/DynamoDB:ssä) istuntojen pysyvyyden sijaan
  • Käytä SNI:tä ALB:ssä useiden verkkotunnusten tarjoamiseen yhdestä kuuntelijasta ilman erillisiä kuormantasaajia ja niiden useita varmenteita
  • Kun vaatimustenmukaisuus on tiukkaa (VPC:n sisäiset tiedot on salattava), käytä HTTPS-kohderyhmiä päästä päähän ulottuvalla TLS:llä, älä pelkästään kuormantasaajassa tapahtuvaa päättämistä

Pikatarkistus

Testaa, miten hyvin ymmärrät tämän oppitunnin AWS Solutions Architect (SAA-C03) -käsitteet.

Oppitunnin yhteenveto

Tässä oppitunnissa opit, että ALB:n SSL/TLS:n päättäminen ACM-varmenteilla tarjoaa automaattisen uusimisen ja SNI-tuen useille verkkotunnuksille, SSL-suojauskäytännöt määrittävät TLS-version ja salausmenetelmäpaketit vaatimustenmukaisuutta varten ja että istuntojen pysyvyys reitittää käyttäjät samaan kohteeseen tilallisissa sovelluksissa, mutta sen sijaan kannattaa yleensä siirtää istuntotila ulkoiseen ElastiCache-palveluun. Seuraavaksi tutustumme Auto Scaling Group -ryhmiin ja käynnistysmallineihin.

Aloita maksutta

Opi Cloud & IT Cert Prep tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
150
Oppitunnit
600

Usein kysytyt kysymykset

Onko oppitunti ”SSL-terminointi ja tahmeat istunnot” ilmainen?

Kyllä – oppitunnin ”SSL-terminointi ja tahmeat istunnot” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Cloud & IT Cert Prep-kurssin, päivitä CoddyKit PROhon. Cloud & IT Cert Prep-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”SSL-terminointi ja tahmeat istunnot”?

Siirrätte TLS:n päätelaitteesta load balancerille ACM-varmenteilla ja otatte sticky session -istunnot käyttöön, kun tilalliset työkuormat edellyttävät asiakassidonnaisuutta. Harjoittelet Cloud & IT Cert Prep-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Cloud & IT Cert Prep-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Cloud & IT Cert Prep-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”SSL-terminointi ja tahmeat istunnot”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Cloud & IT Cert Prep-oppitunnilla?

Kyllä. Jokainen Cloud & IT Cert Prep-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. ALB, NLB ja GLB: milloin mitäkin käytetään
  2. Target Groupit ja kuntotarkistukset
  3. Listener-säännöt ja polkupohjainen reititys
  4. SSL-terminointi ja tahmeat istunnot
← Takaisin: Cloud & IT Cert Prep