WSS (WebSocket Secure), WebSocket bağlantısının TLS ile şifrelenmiş halidir; wss:// şeması ile kullanılır ve HTTPS ile aynı sertifika altyapısına dayanır. Tarayıcı, HTTPS sayfasından yalnızca wss:// bağlantısına izin verir; şifresiz ws:// "mixed content" nedeniyle engellenir.
Nasıl çalışır?
- İstemci, TLS el sıkışmasını tamamlar (sertifika doğrulanır).
- Aynı bağlantı üzerinde HTTP
Upgrade: websocketisteği gönderilir. - Sunucu
101 Switching Protocolsyanıtı verir. - Bundan sonra iki yönlü mesajlar TLS ile korunan kanalda akar.
Varsayılan port 443'tür; bu sayede çoğu güvenlik duvarından sorunsuz geçer.
Nginx ters proxy yapılandırması
location /ws/ {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 3600s;
}
TLS sonlandırma Nginx'te yapılır; arka uç uygulama düz WebSocket konuşabilir. Upgrade ve Connection başlıkları unutulursa bağlantı 400 veya 426 hatasıyla düşer. proxy_read_timeout değeri kısa kalırsa boşta bekleyen bağlantılar kesilir.
Test
openssl s_client -connect alanadi.com:443 -servername alanadi.com
npx wscat -c wss://alanadi.com/ws/
Sık hatalar
- "Mixed content" uyarısı: Sayfa HTTPS iken
ws://kullanılmış. - Sertifika hatası: Alan adı sertifikanın SAN listesinde yok veya zincir eksik.
- Yük dengeleyicinin WebSocket desteğinin ve zaman aşımı ayarının kapalı olması.
Sertifikanızı SSL denetleme aracıyla denetleyebilir, alt alan adı kullanan servisler için Wildcard SSL seçeneğini değerlendirebilirsiniz.