Sobes.tech
Junior

Kas yra TLS?

sobes.tech AI

Atsakymas iš AI

TLS (Transport Layer Security) — tai kriptografinis protokolas, užtikrinantis saugią ryšio būdą tinkle, pavyzdžiui, tarp žiniatinklio naršyklės ir serverio.

Pagrindinės funkcijos:

  • Autentifikacija: Šalių autentiškumo patikrinimas (dažniausiai naudojant X.509 sertifikatus).
  • Konfidencialumas: Duomenų šifravimas perduodant, siekiant išvengti neteisėto prieigos.
  • Visiškumas: Patikrinimas, ar duomenys nebuvo pakeisti perdavimo metu.

Protokolas TLS veikia OSI modelio transporto sluoksnyje (arba aukštesniame, priklausomai nuo įgyvendinimo ir konteksto). Jis pakeitė SSL (Secure Sockets Layer). Dabartinės versijos: TLS 1.2 ir TLS 1.3.

Go programavimo kalboje TLS naudojamas standartinėje net/http bibliotekos HTTPS palaikymui.

package main

import (
	"crypto/tls"
	"net/http"
	"log"
)

func main() {
	// Pavyzdys, kaip sukonfigūruoti HTTP serverį su TLS
	// Reikės sertifikato ir privačiojo rakto failų
	certFile := "server.crt"
	keyFile := "server.key"

	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		w.Write([]byte("Hello, secure world!"))
	})

	// Paleisti HTTPS serverį
	log.Fatal(http.ListenAndServeTLS(":8443", certFile, keyFile, nil))
}

Ryšys vyksta keliais etapais (Handshake):

  1. ClientHello: Klientas siunčia sąrašą palaikomų TLS versijų, šifravimo rinkinių ir kitų parametrų.
  2. ServerHello: Serveris pasirenka geriausius pasiūlytus parametrus.
  3. Certificate: Serveris siunčia savo sertifikatą.
  4. ServerKeyExchange (pasirinktinai): Šifravimo raktų keitimasis.
  5. CertificateRequest (pasirinktinai): Serveris gali paprašyti kliento sertifikato dvipusiam autentifikavimui.
  6. ServerHelloDone: Serveris praneša, kad baigė savo Handshake dalį.
  7. Certificate (pasirinktinai): Klientas siunčia savo sertifikatą.
  8. ClientKeyExchange: Klientas siunčia iš anksto pasidalintą slaptažodį, šifruotą viešojo rakto, naudojamą sesijos raktų generavimui.
  9. CertificateVerify (pasirinktinai): Klientas patikrina serverio parašą.
  10. ChangeCipherSpec: Klientas ir serveris praneša, kad pereina prie naudoti suderintų sesijos raktų.
  11. Finished: Handshake pabaiga, keitimasis šifruotomis žinutėmis su naujais raktais, patvirtinant sėkmingą procesą.

TLS užtikrina patikimą saugumo lygį tinklo komunikacijoms, yra standartas HTTPS ir kitų protokolų, reikalaujančių duomenų apsaugos.