Bir alışveriş sitesinin linkine tıklıyorsunuz, ama site yerine Chrome'da düz, gri bir sayfa açılıyor: başlıkta "Bu site güvenli bağlantı sağlayamıyor", altında "shop.example geçersiz bir yanıt gönderdi." satırı, Windows Ağ Teşhislerini çalıştırmanızı öneren bir link ve en altta ERR_SSL_PROTOCOL_ERROR. Sayfayı yenilediğinizde aynı ekran geri geliyor; Edge de aynı kodu gösteriyor.
Sitede gerçekten bir arıza olabilir; ama bilgisayarınızdaki ya da ağınızdaki bir şeyin araya girmesi de en az o kadar sık görülür. Bu yazıda önce kodun ne anlama geldiğini ve güvenli bağlantı kurulurken hangi aşamada çıktığını anlatıyoruz. Ardından test sunucularında yeniden ürettiğimiz nedenleri, çözümleri hangi sırayla denemeniz gerektiğini, site sizinse neye bakacağınızı ve proxy ile VPN'in bu hatadaki yerini ele alıyoruz.
ERR_SSL_PROTOCOL_ERROR ne demek?
Adresi https:// ile başlayan siteler TLS (Transport Layer Security) kullanır; adres çubuğundaki asma kilidin arkasındaki şifreleme budur. Eski adı SSL'dir ve bu hata kodunda olduğu gibi hâlâ yer yer karşımıza çıkar. Sayfa gelmeden önce tarayıcı ile sunucu kısa bir el sıkışma yapar: bir TLS sürümünde ve şifreleme yönteminde anlaşırlar, sunucu kimliğini kanıtlar ve iki taraf da şifreleme anahtarlarını oluşturur. TLS 1.3'ü tanımlayan RFC 8446 standardı, el sıkışma başarısız olursa bağlantının kesildiğini söyler.
Chrome ile Edge, Chromium adlı açık kaynak kodun üzerine kuruludur. Chromium'un ağ hataları listesi, -107 numaralı bu hatayı tek cümleyle tanımlar: "An SSL protocol error occurred." (Bir SSL protokol hatası oluştu.)
TLS hatalarını bu numaralara çeviren Chromium kodu, tanımın neden bu kadar genel olduğunu da gösterir: daha belirgin bir kodu olmayan her el sıkışma hatası -107 olarak bildirilir. Yani kod, el sıkışmanın bozulduğunu söyler; kimin bozduğunu söylemez.
Bu bir sertifika uyarısı da değildir. "Bağlantınız gizli değil" uyarısı ve NET::ERR_CERT_ ile başlayan kodlar daha sonraki bir aşamada, tarayıcı sitenin sertifikasını değerlendirirken çıkar; bu hatada ise el sıkışma o aşamaya gelmeden durmuştur. Sertifika sorunlarını Bağlantınız Gizli Değil Hatası Nedir, Nasıl Çözülür? yazımızda anlattık.
"Bu site güvenli bağlantı sağlayamıyor" ekranı ne anlatıyor?
| Ekrandaki satır | Ne anlatıyor? |
|---|---|
| "Bu site güvenli bağlantı sağlayamıyor" | Chrome'un el sıkışma hatalarında kullandığı başlık |
| "example.com geçersiz bir yanıt gönderdi." | Tarayıcının ilk mesajına gelen cevap geçerli bir TLS cevabı değil. Chrome sitenin adını yazar, ama cevabı sitenin mi yoksa aradaki bir cihazın mı gönderdiğini ayırt edemez |
| "Windows Ağ Teşhislerini çalıştırmayı deneyin." | Sistemin ağ sorun gidericisine giden link; sunucu cevap verdiği için çoğu zaman bir sorun bulamaz |
ERR_SSL_PROTOCOL_ERROR ve Yeniden Yükle | Hata kodu ve sayfayı yeniden deneyen düğme |
Bu satırları Chromium'un Türkçe çeviri dosyalarıyla karşılaştırdık, Windows 11'de Chromium 145'in ekranında da gördük; Mac'te linkin metni "Ağ Teşhislerini çalıştırmayı deneyin." olur. Edge de Chromium üzerine kuruludur ve aynı kodu gösterir, ama sayfadaki ifadeler farklı olabilir. Sertifika uyarısından farklı olarak bu sayfada Gelişmiş düğmesi yoktur, çünkü ortada devam edilecek güvenli bir bağlantı bulunmaz.
El sıkışma hangi aşamada bozuluyor?
Güvenli bir sayfa açılırken bağlantı saniyenin küçük bir kesrinde şu duraklardan geçer:
- Bağlantı. Tarayıcı sunucuya genellikle 443 numaralı porttan bağlanır. Port, sunucudaki bir hizmetin kapı numarasıdır; 443 de güvenli sitelerin standart kapısıdır. Bu adım başarısız olursa karşınıza "Bu siteye ulaşılamıyor" hatası çıkar (Bu Siteye Ulaşılamıyor Hatası Nedir, Neden Çıkar?).
- Client Hello. Tarayıcı desteklediği TLS sürümlerini ve şifreleme yöntemlerini sıralar, bağlanmak istediği sitenin adını da bildirir.
- Server Hello. Sunucu bu listeden bir sürüm ve bir yöntem seçer. Bu yazıdaki nedenlerin çoğu bu durakta ortaya çıkar. Tarayıcıya TLS olarak okuyamadığı bir şey gelir: sıradan bir web sayfası, bir engel sayfası ya da anlamsız baytlar. RFC 8446'nın 5. bölümü, böyle beklenmedik bir mesaj alan TLS yazılımının bağlantıyı kesmesini şart koşar.
- Certificate. Sunucu sertifikasını gönderir. Bu aşamadaki bir hata bu sayfayı değil, sertifika uyarısını getirir.
- Finished. İki taraf anahtarları doğrular, asma kilit görünür ve sayfa isteği yola çıkar.
Tarayıcı ile sunucunun 3. durakta ortak bir TLS sürümü yoksa, örneğin sunucu yalnız TLS 1.0 ya da 1.1 sunuyorsa, başlık aynı kalır ama kod ERR_SSL_VERSION_OR_CIPHER_MISMATCH olur.
ERR_SSL_PROTOCOL_ERROR neden çıkar?
| Neden | Kimde görülür? | Kim düzeltir? |
|---|---|---|
| Site, güvenli bağlantı portunda şifresiz HTTP sunuyor | Herkeste, her cihazda | Site sahibi |
Yalnız HTTP ile çalışan bir cihazın ya da test sunucusunun adresine https:// yazılmış | Yalnız o adreste | Siz: kendi cihazınız için http:// |
| Şifreli trafiği tarayan antivirüs el sıkışmayı bozuyor | Bir bilgisayarda birçok sitede | Siz: programı güncelleyin ya da ayarlayın |
| Trafiği filtreleyen VPN, reklam engelleyici ya da "koruma" uygulaması | Bir cihazda birçok sitede | Siz: denemek için kapatın |
| Bir ağ filtresi kendi şifresiz sayfasıyla cevap veriyor | O ağdaki herkeste, engellenen sitelerde | Ağın yöneticisi |
| Trafiğe müdahale eden bir tarayıcı uzantısı | Tek bir tarayıcıda | Siz: uzantıyı kapatın |
Başlıca nedenleri kendi bilgisayarımızda küçük test sunucularıyla yeniden oluşturduk. Chromium 145'te, güvenli bağlantı portundan şifresiz HTTP ile cevap veren bir sunucu da, Client Hello mesajına anlamsız baytlarla cevap veren bir sunucu da ERR_SSL_PROTOCOL_ERROR verdi. Yalnız TLS 1.0 ve 1.1 sunan sunucu ERR_SSL_VERSION_OR_CIPHER_MISMATCH verdi; el sıkışmanın ortasında kesilen bağlantı ise ERR_CONNECTION_CLOSED ya da ERR_CONNECTION_RESET hatasına yol açtı.
Sorun sizde mi, sitede mi?
- Başka iki üç güvenli site açın. Onlar da açılmıyorsa neden cihazınızda ya da ağınızdadır.
- Hata veren siteyi telefonunuzda Wi-Fi kapalıyken açın. Mobil veride de aynı hata çıkıyorsa site bozuktur; beklemekten ya da site sahibine haber vermekten başka yapacağınız bir şey yoktur.
- Mobil veride açılıyorsa aynı Wi-Fi'ye bağlı başka bir cihazla deneyin. O da hata veriyorsa sorun ağdadır; açılıyorsa bilgisayarınızdaki bir yazılımdadır.
- Gizli pencere açın. Chrome'da sağ üstte Diğer > Yeni Gizli pencere'yi seçin. Uzantılar gizli pencerede yalnız izin verdiyseniz çalışır; sayfa gizli pencerede açılıyorsa sorun büyük olasılıkla bir uzantıdadır.
Bilgisayarda nasıl çözülür?
Her adımdan sonra sayfayı yenileyin.
- Uzantıları kapatın. Chrome'da sağ üstte Diğer > Uzantılar > Uzantıları yönet'i seçin ve VPN, proxy, reklam engelleme ya da "güvenlik" uzantılarını kapatın (Google'ın adımları). Edge'de adres çubuğunun sağındaki Uzantılar'ı, ardından Uzantıları yönet'i seçin ve uzantıları yanlarındaki düğmeyle kapatın (Microsoft'un adımları). Hata kaybolursa sorunlu uzantıyı bulmak için uzantıları tek tek yeniden açın.
- Güvenlik yazılımınızı kontrol edin. HTTPS taraması, SSL taraması ya da web koruması özelliği olan programlar her el sıkışmanın ortasına yerleşir. Yalnız bu özelliği duraklatın, sayfayı bir kez yenileyin ve özelliği yeniden açın. Duraklatmak işe yaradıysa korumayı kapalı bırakmak yerine programı güncelleyin ya da destek ekibine yazın.
- VPN'i ve filtreleme uygulamalarını kapatın. Trafiği kendi üzerinden geçirerek reklam engelleyen uygulamalar da buna dahildir. Windows'ta unutulmuş bir proxy ayarı kalıp kalmadığına da bakın; nasıl kaldırılacağını Chrome ve Windows'tan Proxy Nasıl Kaldırılır? yazısında anlattık.
- Tarayıcıyı güncelleyin. Chrome'da sağ üstte Diğer > Yardım > Google Chrome Hakkında'yı seçin; Yeniden başlat düğmesi görünürse ona da tıklayın (Google'ın adımları). Edge'de adres çubuğuna
edge://settings/helpyazın; açılan sayfa sürümünüzü gösterir ve güncelleme varsa yüklemenizi sağlar. Güvenlik yazılımının, tarayıcının gönderdiği el sıkışmayı tanıması gerekir; ikisinden biri çok eski kalınca tarama bozulabilir. - Tarayıcıyı tamamen kapatıp yeniden açın. Chrome ve Edge, son el sıkışmaların ayrıntılarını bellekte tutar; tarayıcıyı tamamen kapatmak bu kayıtları siler.
Hata neden yalnız bir ağda çıkıyor?
Okullar, iş yerleri, oteller, ebeveyn denetimi olan modemler ve bazı internet servis sağlayıcıları web sitelerini filtreler. Bazı filtreler güvenli bir siteyi engellerken sitenin yerine kendileri cevap verir ve şifresiz, sıradan bir sayfa gönderir. Tarayıcı Server Hello beklerken karşısına bir web sayfası çıkar; bu, şifresiz HTTP ile cevap veren test sunucumuzda gördüğümüz durumun aynısıdır.
İş yeri ya da okul ağındaysanız bilgi işlem ekibine sorun; engel bir arıza değil, ağın sahibinin kararıdır. Kurumların şifreli trafiği nasıl denetlediğini DPI (Derin Paket İncelemesi) Nedir ve Nasıl Çalışır? yazımızda anlattık.
localhost ya da modem sayfası neden bu hatayı veriyor?
Bilgisayarınızdaki bir geliştirme sunucusu örneğin http://localhost:3000 adresinde çalışıyor, ama tarayıcı https://localhost:3000 adresini açıyor. Sunucu Client Hello mesajına şifresiz HTTP ile cevap verir ve Chrome, testimizde olduğu gibi ERR_SSL_PROTOCOL_ERROR gösterir. 192.168.1.1 gibi adreslerdeki modemler, yazıcılar, kameralar ve ağ diskleri de aynı şekilde davranabilir.
Kendi ağınızdaki kendi cihazınız için adresin başına http:// yazın; adreste port varsa onu da ekleyin. Test sunucusunun HTTPS kullanması gerekiyorsa bunu sunucunun kendi ayarlarından, bilgisayarınızın güvendiği bir sertifikayla açın. Herkese açık bir sitede ise bunu asla yapmayın: http:// ile açılan sayfa her şeyi şifresiz gönderir.
Site sizinse: sunucuda neye bakmalı?
Ziyaretçiler bu hatayı bildiriyorsa ve siz de mobil veriye bağlı bir telefondan aynı hatayı görüyorsanız sunucuyu kontrol edin:
- Dışarıdan test edin. Qualys'in SSL Server Test aracı, herkese açık sitenizin sunduğu TLS sürümlerini ve gönderdiği sertifika zincirini listeler.
- 443 numaralı portun gerçekten TLS ile çalıştığından emin olun. nginx'te
sslparametresilistensatırında olmalıdır; tek başınalisten 443;yazılırsa sunucu, güvenli bağlantı portunda şifresiz HTTP sunar. Apache'de mod_ssl'inSSLEngineyönergesi varsayılan olarak kapalıdır; bu yüzden<VirtualHost *:443>bloğundaSSLEngine onbulunmalıdır. - TLS 1.2 ve 1.3 sunun. RFC 8996, TLS 1.0 ve 1.1'i 2021'de resmen kullanımdan kaldırdı; yalnız bu sürümleri sunan bir sunucu Chrome'da
ERR_SSL_VERSION_OR_CIPHER_MISMATCHhatası alır. nginx, 1.23.4 sürümünden beri varsayılan olarak TLS 1.2 ve 1.3 sunar. - Alan adının arkasındaki bütün sunuculara bakın. Yük dengeleyici ya da CDN (içerik dağıtım ağı) kullanıyorsanız yanlış ayarlanmış tek bir makine, hatayı yalnız bazı ziyaretçilere ya da bazı bölgelere gösterir. Başka bir ülkedeki ziyaretçinin ne gördüğünü anlamak için testi o ülkeden bir IP adresiyle, örneğin bir Residential Proxy üzerinden yapın.
- Her değişiklikten sonra yapılandırmayı yeniden yükleyin.
En sade hâliyle bir nginx bloğu aşağıdaki gibidir. ssl_protocols satırı varsayılan değeri tekrarlar; yalnız başka bir yerde değiştirilmişse bir işe yarar:
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/ssl/example.com/fullchain.pem;
ssl_certificate_key /etc/ssl/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
}Süresi dolmuş bir sertifika, uyuşmayan bir alan adı ya da eksik ara sertifika bu sayfayı değil, sertifika uyarısını getirir.
İleri seviye: 443 numaralı portta TLS açık mı?
Bu kontrol, komut satırı kullanan site sahipleri içindir. curl, Windows 10, Windows 11 ve macOS'ta hazır gelir; Windows PowerShell'de curl.exe yazın, çünkü orada curl başka bir komutun kısayoludur. Komut, güvenli bağlantı portuna bilerek şifresiz bir istek gönderir:
curl -I http://example.com:443example.com yerine kendi alan adınızı yazın ve cevabın ilk satırına bakın:
HTTP/1.1 200 OKgibi normal bir durum satırı ya da bir yönlendirme: 443 numaralı port şifresiz HTTP ile cevap veriyor, yani TLS kapalı. Şifresiz HTTP ile çalışan test sunucumuzHTTP/1.0 200 OKcevabını verdi.400 Bad Request: nginx, TLS portuna şifresiz HTTP geldiğinde bu cevabı verir; sayfasında "The plain HTTP request was sent to HTTPS port" yazar. TLS açık.curl: (52) Empty reply from server: sunucu şifresiz isteği cevapsız bıraktı; TLS test sunucumuz da böyle davrandı. TLS açık.
Proxy ya da VPN kullanıyorsanız ne olur?
Bu hatanın nedeni nadiren normal bir proxy'dir. Tarayıcı https:// ile başlayan bir site için proxy'den bir tünel, yani siteye uzanan doğrudan bir hat ister ve siteyle el sıkışmayı bu tünelin içinden yapar; proxy şifreli baytları okumadan iletir. Testimizde güvenli bağlantı portundan şifresiz HTTP ile cevap veren bir site, proxy ile de proxy olmadan da aynı ERR_SSL_PROTOCOL_ERROR hatasını verdi; doğru ayarlanmış bir site ise proxy'den olduğu gibi geçti. Yani proxy ya da VPN sunucusu değiştirmek bozuk bir siteyi düzeltmez.
Proxy kaynaklı sorunlar başka kodlarla görünür. Tüneli reddeden bir proxy ERR_TUNNEL_CONNECTION_FAILED hatasını verir (err_tunnel_connection_failed Hatası Nedir, Nasıl Çözülür?). Bir proxy uzantısına HTTPS proxy olarak girilen bir HTTP proxy ise testimizde "İnternet bağlantısı yok" sayfasını ve ERR_PROXY_CONNECTION_FAILED hatasını getirdi (Proxy Hatası Nedir?). İstisna, şifreli trafiği bilerek açan yazılımlardır: hata ayıklama proxy'leri ve sizden sertifika yüklemenizi isteyen ücretsiz VPN uygulamaları el sıkışmanın içine girer ve onu bozabilir (MITM Proxy Nedir?).
Proxynet'in ağ geçidi tünelleri şifresini çözmeden iletir; cihazınıza bizden hiçbir sertifika yüklemezsiniz. Tarayıcıda HTTPS Proxy kullanmak için Windows ve Chrome Proxy Ayarları Nasıl Yapılır? yazısındaki adımları izleyin. Betiklerde Playwright, testimizde hatayı net::ERR_SSL_PROTOCOL_ERROR olarak bildirdi; Python'da WRONG_VERSION_NUMBER içeren bir SSLError ise çoğu zaman https:// ile yazılmış bir HTTP proxy adresine işaret eder (Max Retries Exceeded With URL Hatası).
Sık yapılan hatalar
- Sayfayı atlamanın yolunu aramak. Ortada şifreli bir bağlantı yoktur, dolayısıyla geçilecek bir uyarı da yoktur.
http://verilerinizi şifresiz gönderir; onu kendi modeminiz ya da test sunucunuz için saklayın. - Antivirüsü kapalı bırakmak. Yalnız tarama özelliğini, yalnız tek bir deneme için duraklatın.
- Önbelleği ve çerezleri tekrar tekrar temizlemek. İkisi de el sıkışmada kullanılmaz.
- Windows'ta SSL durumunu temizlemek. Windows'un internet seçeneklerindeki Clear SSL state (SSL durumunu temizle) düğmesi Internet Explorer döneminden kalmadır ve Windows'un kendi önbelleğini boşaltır. Chrome ve Edge şifrelemeyi kendileri yapar ve bu kayıtları tarayıcının içinde tutar; tarayıcıyı tamamen kapatmak onları siler.
- chrome://flags'te QUIC'i kapatmak. HTTP/3'ün kullandığı QUIC protokolünün kendi hata kodu vardır:
ERR_QUIC_PROTOCOL_ERROR. - Bu hata için saati düzeltmeye çalışmak. Yanlış tarih sertifika denetimini bozar; o durumda bu sayfa değil, saat ya da sertifika uyarısı çıkar.
Karar rehberi
| Durumunuz | Ne yapmalısınız? |
|---|---|
| Tek bir site her cihazda ve her ağda hata veriyor | Site bozuk; bekleyin ya da site sahibine haber verin |
| Bir bilgisayarda bütün güvenli siteler hata veriyor | Önce uzantılar, sonra güvenlik yazılımı, sonra VPN ve filtreleme uygulamaları |
| Hata yalnız bir Wi-Fi ağında çıkıyor | Bir ağ filtresi; ağı yöneten kişiye sorun |
| Sayfa gizli pencerede açılıyor | Uzantıları tek tek kapatın |
Adres localhost ya da 192.168.x.x | Kendi cihazınız için http:// yazın |
| Site sizin | listen 443 ssl ya da SSLEngine on satırına ve TLS 1.2 ile 1.3'e bakın |
Sıkça sorulan sorular
ERR_SSL_PROTOCOL_ERROR neden bütün tarayıcılarda çıkıyor?
Neden tarayıcının dışındadır: bir güvenlik yazılımı, bir VPN ya da filtreleme uygulaması veya ağın kendisi. Uzantılar Chrome, Edge ve Firefox arasında taşınmaz, ama antivirüs taraması ve ağ filtreleri hepsini etkiler. Tek bir site her yerde hata veriyorsa sorun sitenin ayarlarındadır.
Android telefonda ERR_SSL_PROTOCOL_ERROR nasıl çözülür?
Wi-Fi ile mobil veri arasında geçiş yapın, VPN'i ve reklam engelleme uygulamalarını kapatın (bunların çoğu telefonda bir VPN bağlantısı olarak çalışır), Chrome'u Google Play'den güncelleyin ve telefonu yeniden başlatın. Site mobil veride de açılmıyorsa sorun sitenin tarafındadır.
ERR_SSL_PROTOCOL_ERROR atlanabilir mi?
Hayır; zaten atlanacak bir şey yoktur. Şifreli bağlantı hiç kurulmamıştır, bu yüzden Chrome devam etme seçeneği sunmaz. http:// yazmak verilerinizi şifresiz gönderir; bu yalnız kendi modeminiz ya da test sunucunuz için kabul edilebilir.
localhost neden ERR_SSL_PROTOCOL_ERROR veriyor?
Geliştirme sunucunuz şifresiz HTTP ile çalışıyor, tarayıcı ise onu https:// ile açıyor. Port numarasıyla birlikte http://localhost adresini kullanın ya da sunucunun ayarlarından HTTPS'i açın.
ERR_SSL_PROTOCOL_ERROR bilgisayarımın hacklendiğini mi gösterir?
Genellikle hayır; çoğu durumun arkasında bir güvenlik yazılımı, bir filtre, bir uzantı ya da yanlış ayarlanmış bir site çıkar. Kurmadığınız bir yazılım şifreli trafiğe müdahale ediyorsa zararlı yazılım taraması yapın ve bir sitenin ya da uygulamanın istediği sertifikayı asla yüklemeyin.
VPN ya da proxy bu hatayı giderir mi?
Site bozuksa gidermez: VPN de proxy de aynı el sıkışmayı aynı sunucuya taşır. Hatayı ağınızdaki bir filtre çıkarıyorsa bu, ağın sahibinin kararıdır; ona sorun.
Özet
ERR_SSL_PROTOCOL_ERROR, TLS el sıkışmasının daha sertifikaya sıra gelmeden bozulduğunu gösterir; çoğu zaman tarayıcıya geçerli bir Server Hello yerine başka bir şey gelmiştir. Önce hatanın tek bir sitede mi yoksa bütün sitelerde mi çıktığına bakın, sonra sırayla uzantıları, güvenlik yazılımını, VPN ile filtreleme uygulamalarını ve en son ağı eleyin; localhost ya da modem sayfasında http:// kullanın. Site sizinse 443 numaralı portun TLS 1.2 ya da 1.3 ile çalıştığından emin olun. Normal bir proxy tüneli el sıkışmaya dokunmaz; proxy türlerini ve hangisinin ne işe yaradığını proxy sayfamızda bulabilirsiniz.




