Junior
Czym jest TLS?
sobes.tech AI
Odpowiedź od AI
TLS (Transport Layer Security) — to kryptograficzny protokół zapewniający bezpieczną komunikację w sieci, na przykład między przeglądarką internetową a serwerem.
Kluczowe funkcje:
- Uwierzytelnianie: Weryfikacja tożsamości stron (zwykle za pomocą certyfikatów X.509).
- Poufność: Szyfrowanie przesyłanych danych, aby zapobiec nieautoryzowanemu dostępowi.
- Integralność: Sprawdzanie, czy dane nie zostały zmienione podczas transmisji.
Protokół TLS działa na poziomie transportu modelu OSI (lub wyżej, w zależności od implementacji i kontekstu). Zastąpił SSL (Secure Sockets Layer). Obecne wersje to TLS 1.2 i TLS 1.3.
W kontekście Go, TLS jest używany w standardowej bibliotece net/http do obsługi HTTPS.
package main
import (
"crypto/tls"
"net/http"
"log"
)
func main() {
// Przykład konfiguracji serwera HTTP z obsługą TLS
// Wymagane pliki certyfikatu i klucza prywatnego
certFile := "server.crt"
keyFile := "server.key"
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Witaj, bezpieczny świat!"))
})
// Uruchom serwer HTTPS
log.Fatal(http.ListenAndServeTLS(":8443", certFile, keyFile, nil))
}
Interakcja odbywa się w kilku etapach (Handshake):
- ClientHello: Klient wysyła listę obsługiwanych wersji TLS, zestawów szyfrów i innych parametrów.
- ServerHello: Serwer wybiera optymalne parametry spośród zaproponowanych przez klienta.
- Certificate: Serwer wysyła swój certyfikat.
- ServerKeyExchange (opcjonalnie): Wymiana kluczy szyfrowania.
- CertificateRequest (opcjonalnie): Serwer może zażądać certyfikatu od klienta do uwierzytelniania dwustronnego.
- ServerHelloDone: Serwer informuje, że zakończył swoją część Handshake.
- Certificate (opcjonalnie): Klient wysyła swój certyfikat.
- ClientKeyExchange: Klient wysyła zaszyfrowany sekret pre-mistrza z użyciem klucza publicznego serwera, który służy do generowania kluczy sesji.
- CertificateVerify (opcjonalnie): Klient weryfikuje podpis serwera.
- ChangeCipherSpec: Klient i serwer informują o przejściu na użycie uzgodnionych kluczy sesji.
- Finished: Finalizacja Handshake z wymianą wiadomości zaszyfrowanych nowymi kluczami, w celu potwierdzenia sukcesu procedury.
TLS zapewnia niezawodny poziom bezpieczeństwa dla komunikacji sieciowej, będąc standardem dla HTTPS i innych protokołów wymagających ochrony danych.