Sobes.tech
Junior

TLS nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

TLS (Transport Layer Security) — bu, ağda güvenli iletişimi sağlayan kriptografik bir protokoldür, örneğin, web tarayıcısı ile sunucu arasında.

Ana fonksiyonlar:

  • Kimlik Doğrulama: Tarafların kimliğinin doğrulanması (genellikle X.509 sertifikaları kullanılarak).
  • Gizlilik: Gönderilen verilerin şifrelenmesi, yetkisiz erişimi önlemek için.
  • Bütünlük: Verilerin iletim sırasında değiştirilmediğinin doğrulanması.

TLS protokolü, OSI modelinin taşımacılık katmanında (veya daha üstünde, uygulama ve bağlama bağlı olarak) çalışır. SSL (Secure Sockets Layer) protokolünün yerini almıştır. Güncel sürümleri TLS 1.2 ve TLS 1.3'tür.

Go bağlamında, TLS, HTTPS desteği için standart kütüphane net/http içinde kullanılır.

package main

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

func main() {
	// TLS desteği ile HTTP sunucusu ayarlama örneği
	// Sertifika ve özel anahtar dosyaları gereklidir
	certFile := "server.crt"
	keyFile := "server.key"

	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		w.Write([]byte("Güvenli, merhaba dünya!"))
	})

	// HTTPS sunucusunu başlat
	log.Fatal(http.ListenAndServeTLS(":8443", certFile, keyFile, nil))
}

İşlem birkaç aşamada gerçekleşir (Handshake):

  1. ClientHello: İstemci, desteklediği TLS sürümlerinin, şifreleme setlerinin ve diğer parametrelerin listesini gönderir.
  2. ServerHello: Sunucu, istemcinin önerdiği parametreler arasından en uygun olanları seçer.
  3. Certificate: Sunucu, kendi sertifikasını gönderir.
  4. ServerKeyExchange (opsiyonel): Şifreleme anahtarlarının değişimi.
  5. CertificateRequest (opsiyonel): Sunucu, çift taraflı kimlik doğrulama için istemciden sertifika isteyebilir.
  6. ServerHelloDone: Sunucu, Handshake'in kendi kısmını tamamladığını bildirir.
  7. Certificate (opsiyonel): İstemci, kendi sertifikasını gönderir.
  8. ClientKeyExchange: İstemci, sunucunun genel anahtarıyla şifrelenmiş pre-master gizli bilgisini gönderir, bu da oturum anahtarlarının oluşturulmasında kullanılır.
  9. CertificateVerify (opsiyonel): İstemci, sunucunun imzasını doğrular.
  10. ChangeCipherSpec: İstemci ve sunucu, anlaşılan oturum anahtarlarını kullanmaya geçtiklerini bildirir.
  11. Finished: Handshake'in tamamlanması, yeni anahtarlarla şifrelenmiş mesajların değişimi ile, işlemin başarılı olup olmadığını doğrular.

TLS, ağ iletişimi için güvenilir bir güvenlik seviyesi sağlar ve HTTPS ile diğer veri koruma gerektiren protokollerin standartıdır.