Kun CONNECT palauttaa 200:n ja TLS ei heti pura, tarkista konnektorin rajabittejä ennen varmenteiden tai salakirjojen vaihtamista.

Luotu valtuutusarvo voi jo päättyä rivinvaihtoon. Toisen rivinlopun lisääminen voi päättää HTTP-otsakkeet liian aikaisin ja jättää aiotun Host-kentän tai muuta selkokielistä tekstiä pyynnön taakse.

Minimaalinen HTTP/1.1 CONNECT -pyyntö käyttää CRLF:ää rivien välissä ja tyhjää riviä lopussa:

b"CONNECT example.com:443 HTTP/1.1\r\nHost: example.com:443\r\n\r\n"

Sijoita mikä tahansa valtuutuskenttä ennen tuota viimeistä tyhjää riviä ilman upotettua rivinvaihtoa. Pythonissa "\n" edustaa rivinvaihtoa; raakamerkkijono, jossa on kenoviiva ja kirjain n, ei. Tarkista, mitä tavuja koodausapuohjelma tuottaa ennen kuin yrität poistaa niitä—vanhemmat apuohjelmat saattoivat lisätä rivinvaihtoja.

Kun CONNECT onnistuu, nuo jäljelle jäävät tavut kuuluvat tunneliprotokollalle. Harhautunut selkokielinen teksti voi päätyä vertaiselle, joka odottaa TLS:ää. Onnistumistila ei voi korjata tavuja, jotka on jo jonossa viallisen pyynnön jälkeen.

Tarkista myös vastaanottoraja. Lue välityspalvelimen täydellinen vastaus ennen pistokkeen luovuttamista TLS:lle, käsittele osittaiset luvut ja säilytä kaikki otsakkeiden jälkeen luettu. Yhden pistokeluvun ei tarvitse sisältää yhtä kokonaista viestiä.

Jos tämä jäsentäjä on sinun, vertaa redaktoitua tavuesitystä johdon kielioppiin; pidä pituudet ja rivirajat näkyvinä salaten salasana. Sovellukselle, joka tarvitsee vain välityspalvelinyhteyden, ylläpidetty konnektori välttää tarpeen omistaa tämä kehyskoodi.

Aiheeseen liittyvät artikkelit