Junior
TLS nima?
sobes.tech AI
AIdan javob
TLS (Transport Layer Security) — bu, tarmoqda xavfsiz aloqa ta'minlaydigan kriptografik protokol, masalan, veb-brauzer va server o'rtasida.
Asosiy funksiyalar:
- Autentifikatsiya: Tomonlarning haqiqiyligini tekshirish (odatda X.509 sertifikatlari yordamida).
- Maxfiylik: Uzatilyotgan ma'lumotlarni shifrlash, ruxsatsiz kirishni oldini olish uchun.
- Boshqaruv: Ma'lumotlar uzatish jarayonida o'zgartirilmaganligini tekshirish.
TLS protokoli OSI modelining transport qatlamida (yoki yuqoriroq, amalga oshirish va kontekstga qarab) ishlaydi. SSL (Secure Sockets Layer) protokoli o'rnini bosdi. Hozirgi versiyalari TLS 1.2 va TLS 1.3.
Go kontekstida, TLS net/http standart kutubxonasida HTTPS ni qo'llab-quvvatlash uchun ishlatiladi.
package main
import (
"crypto/tls"
"net/http"
"log"
)
func main() {
// TLS bilan HTTP serverini sozlash misoli
// Sertifikat va shaxsiy kalit fayllari talab qilinadi
certFile := "server.crt"
keyFile := "server.key"
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Xavfsiz, salom dunyo!"))
})
// HTTPS serverini ishga tushirish
log.Fatal(http.ListenAndServeTLS(":8443", certFile, keyFile, nil))
}
Interaksiya bir nechta bosqichda (Handshake) yuzaga keladi:
- ClientHello: Mijoz TLS ning qo'llab-quvvatlanadigan versiyalarini, shifrlash to'plamlarini va boshqa parametrlarni yuboradi.
- ServerHello: Server mijoz taklif qilgan parametrlar orasidan eng optimalini tanlaydi.
- Certificate: Server o'z sertifikatini yuboradi.
- ServerKeyExchange (ixtiyoriy): Shifrlash kalitlari almashinuvi.
- CertificateRequest (ixtiyoriy): Server mijcidan sertifikat so'rashi mumkin, ikki tomonlama autentifikatsiya uchun.
- ServerHelloDone: Server Handshake ning o'z qismi tugaganini bildiradi.
- Certificate (ixtiyoriy): Mijoz o'z sertifikatini yuboradi.
- ClientKeyExchange: Mijoz, serverning umumiy kalitidan shifrlangan pre-master sirini yuboradi, bu sessiya kalitlarini yaratishda ishlatiladi.
- CertificateVerify (ixtiyoriy): Mijoz, server imzosini tekshiradi.
- ChangeCipherSpec: Mijoz va server, kelishilgan sessiya kalitlaridan foydalanishga o'tishini bildiradi.
- Finished: Handshake ning yakunlanishi, yangi kalitlar bilan shifrlangan xabarlar almashinuvi orqali, jarayon muvaffaqiyatli bo'lganligini tekshirish.
TLS tarmoq aloqalari uchun ishonchli xavfsizlik darajasini ta'minlaydi, HTTPS va boshqa ma'lumotlarni himoyalash talab qiladigan protokollar uchun standarti hisoblanadi.