ERR_SSL_PROTOCOL_ERROR Çözümü: Chrome, Android, Localhost

Önemli bilgi

ERR_SSL_PROTOCOL_ERROR, sayfa yüklenmeden önce güvenli (TLS) el sıkışmasının bozulduğu anlamına gelir. Localhost'ta bu hemen her zaman, yalnızca HTTP konuşan bir geliştirme sunucusunda https:// açtığınız demektir: http:// kullanın veya HTTPS'i açın. Herkese açık bir sitede Gizli pencerede ve başka bir ağda deneyin: yalnızca sizin cihazınızda hata çıkıyorsa nedeni çoğunlukla antivirüsün HTTPS taraması, bir VPN veya proxy ya da siteyi filtreleyen bir ağdır; her ziyaretçide çıkıyorsa sunucunun TLS kurulumudur.

Şimdi kontrol edin

ERR_SSL_PROTOCOL_ERROR düzeltme rehberi: SSL el sıkışma hatası ve Chrome, Edge ve tüm tarayıcılar için adım adım çözümler
ERR_SSL_PROTOCOL_ERROR düzeltme rehberi: SSL el sıkışma hatası ve Chrome, Edge ve tüm tarayıcılar için adım adım çözümler
Okumaya başlayın
  1. ERR_SSL_PROTOCOL_ERROR Nedir?
  2. ERR_SSL_PROTOCOL_ERROR Nasıl Görünür?
  3. ERR_SSL_PROTOCOL_ERROR'un Nedenleri
  4. Localhost'ta ERR_SSL_PROTOCOL_ERROR (Geliştiriciler İçin)
  5. ERR_SSL_PROTOCOL_ERROR Nasıl Düzeltilir (Kullanıcılar İçin)
  6. Çözüm 1: Gizli Pencereyi ve Başka Bir Ağı Deneyin
  7. Çözüm 2: Antivirüsün SSL/HTTPS Taramasını Kapatın
  8. Çözüm 3: VPN veya Proxy'yi Kapatın
  9. Çözüm 4: Tarayıcı Uzantılarını Kapatın
  10. Çözüm 5: Tarayıcı Önbelleğini ve Çerezleri Temizleyin
  11. Çözüm 6: QUIC'i (HTTP/3) Eleyin
  12. Çözüm 7: Tarayıcınızı Güncelleyin
  13. Çözüm 8: DNS Önbelleğini Temizleyin
  14. Çözüm 9: Sistem Tarih ve Saatini Kontrol Edin
  15. Çözüm 10: SSL Durumunu Temizleyin (Windows)
  16. Düzeltme 11: Ağ Ayarlarını Sıfırlayın (Son Çare)
  17. ERR_SSL_PROTOCOL_ERROR Nasıl Düzeltilir (Web Sitesi Sahipleri İçin)
  18. SSL Sertifikanızı Kontrol Edin
  19. TLS 1.2 ve TLS 1.3'ü Etkinleştirin
  20. Tam Sertifika Zincirini Yükleyin
  21. HSTS Yapılandırmasını Kontrol Edin
  22. Sunucu Yapılandırmasını Doğrulayın
  23. Android'de ERR_SSL_PROTOCOL_ERROR
  24. iPhone ve iPad'de ERR_SSL_PROTOCOL_ERROR
  25. Diğer Tarayıcılarda ERR_SSL_PROTOCOL_ERROR
  26. İlgili SSL/TLS Hata Kodları
  27. Sıkça Sorulan Sorular

ERR_SSL_PROTOCOL_ERROR Nedir?

ERR_SSL_PROTOCOL_ERROR, güvenli bağlantının TLS el sıkışması sırasında bozulduğu ve tarayıcınızın hiçbir şey yükleyemediği anlamına gelir. Chrome ve Edge bunu "Bu site güvenli bağlantı sağlayamıyor. example.com geçersiz bir yanıt gönderdi." diye gösterir. Adres localhost ise geliştirme sunucunuz büyük olasılıkla düz HTTP konuşuyordur: bunun yerine http://localhost açın (aşağıdaki geliştirici bölümüne bakın).

Her HTTPS bağlantısı bir TLS el sıkışmasıyla başlar: tarayıcı ve sunucu bir protokol sürümü (TLS 1.2 veya 1.3) ile şifreler üzerinde anlaşır ve sertifikaları değiş tokuş eder. ERR_SSL_PROTOCOL_ERROR bu pazarlığın çöktüğü anlamına gelir: karşı taraf geçerli TLS olmayan bir şeyle yanıt vermiş ya da el sıkışmayı tarayıcının sınıflandıramadığı bir biçimde reddetmiştir.

Hata, herhangi bir HTTP isteği gönderilmeden önce oluşur; bu yüzden bir HTTP durum kodu değildir. Chromium'un hata listesi onu -107 numarasıyla ve tek satırla tanımlar, "An SSL protocol error occurred": bozuk bir el sıkışma için genel bir hata; "ortak protokol sürümü veya şifre yok" diyen özel -113 hatasından farklıdır.

Sitenin TLS yapılandırmasını şimdi kontrol edin

ERR_SSL_PROTOCOL_ERROR Nasıl Görünür?

Chrome ve diğer Chromium tabanlı tarayıcılar bu hatayı tam sayfa bir uyarı olarak, "Bu site güvenli bağlantı sağlayamıyor" mesajıyla gösterir. Altında belirli hata kodunu görürsünüz. Karşılaşabileceğiniz yaygın varyasyonlar şunlardır.

  • localhost sent an invalid response (Türkçe arayüzde "localhost geçersiz bir yanıt gönderdi") — geliştiricilerin gördüğü hali: yalnızca düz HTTP konuşan yerel bir sunucuda https:// açılmıştır
  • ERR_SSL_PROTOCOL_ERROR — Chrome'un mesajın altında küçük puntoyla yazdığı hata kodu
  • net::ERR_SSL_PROTOCOL_ERROR — Chrome DevTools konsolunda görünen tam iç hata kodu
  • Bu site güvenli bağlantı sağlayamıyor — Chrome'un kullanıcıya gösterdiği başlık mesajı
  • [alan adı] geçersiz bir yanıt gönderdi — Chrome'un başlığın altında gösterdiği ayrıntılı hata metni
  • Tüm tarayıcılarda ERR_SSL_PROTOCOL_ERROR — hata Chrome, Edge, Brave ve Opera'da aynı anda görünüyorsa (tarayıcıya özgü bir hata değil, sunucu tarafında veya sistem genelinde bir sorun olduğunu gösterir)

ERR_SSL_PROTOCOL_ERROR'un Nedenleri

Bu hatanın hem istemci tarafında (cihazınız) hem sunucu tarafında (web sitesi) nedenleri vardır. Sorunun hangi tarafta olduğunu bulmak onu çözmenin ilk adımıdır. Hata her web sitesinde çıkıyorsa sorun sizin tarafınızdadır. Yalnızca belirli bir sitede çıkıyorsa sorun büyük olasılıkla sunucu tarafındadır.

  • HTTP konuşan bir sunucuya gönderilen HTTPS — en çok aranan durum: bir geliştirme sunucusunda https://localhost veya 443. portu TLS için ayarlanmamış bir site. Tarayıcı el sıkışmayı başlatır, karşılığında düz metin alır ve Chrome bunu "geçersiz bir yanıt gönderdi" diye bildirir.
  • Antivirüsün SSL/HTTPS taraması — HTTPS'i yakalayan güvenlik yazılımları (Avast, Kaspersky, Bitdefender, ESET) el sıkışmanın araya girer ve onu bozabilir; hem de tüm sitelerde aynı anda.
  • VPN veya proxy müdahalesi — HTTPS trafiğini inceleyen VPN'ler ve kurumsal proxy'ler, özellikle ağ değiştirdikten hemen sonra el sıkışmayı bozabilir.
  • Siteyi filtreleyen bir ağ — İSS, okul, iş yeri ve ulusal filtreler ile DNS tabanlı engelleyiciler, engelledikleri sitelerin el sıkışmasını bilerek bozar. Belirtisi: site mobil veride veya başka bir Wi-Fi'de açılır.
  • Sunucuda bozuk TLS kurulumu — 443. portun düz HTTP ile yanıt vermesi (TLS açılmamış bir 443 server bloğu) ya da 443. portu başka bir programın dinlemesi.
  • Tarayıcı uzantıları — HTTPS isteklerini yeniden yazan gizlilik, reklam engelleme ve güvenlik eklentileri el sıkışmaya karışabilir.
  • Eski tarayıcı durumu — sunucuyla artık uyuşmayan önbellekteki oturum verileri.
  • Çoğu zaman bununla karıştırılır — TLS 1.0 veya 1.1'de takılı kalmış bir sunucu ERR_SSL_VERSION_OR_CIPHER_MISMATCH ("Desteklenmeyen protokol") gösterir; süresi dolmuş, alan adı yanlış veya kendinden imzalı bir sertifika ya da yanlış bir saat sertifika hatası (NET::ERR_CERT_…) gösterir; bir QUIC (HTTP/3) sorunu ise ERR_QUIC_PROTOCOL_ERROR gösterir. Bkz. ERR_SSL_VERSION_OR_CIPHER_MISMATCH ve "Bağlantınız gizli değil".

Localhost'ta ERR_SSL_PROTOCOL_ERROR (Geliştiriciler İçin)

localhost sent an invalid response. ERR_SSL_PROTOCOL_ERROR hemen her zaman, yalnızca düz HTTP konuşan bir geliştirme sunucusunda https://localhost açtığınız anlamına gelir. Tarayıcı bir TLS el sıkışması başlatır, sunucu sıradan HTTP metniyle yanıt verir ve Chrome bu yanıtı geçersiz sayar. Firefox aynı hatayı SSL_ERROR_RX_RECORD_TOO_LONG olarak bildirir.

  • Sunucunun yazdırdığı adresi kullanın — https://localhost:3000 adresini http://localhost:3000 yapın. Next.js, Vite, React, Django, Rails ve Flask geliştirme sunucuları HTTPS'i siz açmadıkça HTTP sunar
  • Portu kontrol edin — portsuz https://localhost 443. port demektir. Uygulamanız 3000 veya 5173'te çalışıyorsa istek başka bir programa ulaşır ya da hiçbir yere
  • Chrome sürekli https://'e geçiyor — aynı portta çalışan eski bir uygulamadan kalan önbellekteki bir yönlendirme bunu yapabilir: önbelleğe alınan resimleri ve dosyaları temizleyin veya Gizli pencerede deneyin. (132'den önceki Chrome sürümleri localhost için bir HSTS kaydını da tutabilirdi; bunu chrome://net-internals/#hsts adresindeki Delete domain security policies bölümünden silersiniz)
  • Yerelde HTTPS gerekiyorsa (OAuth geri çağrıları, güvenli çerezler) — next dev --experimental-https komutu mkcert ile yerel olarak güvenilen bir sertifika oluşturur; Vite sertifika seçeneklerini server.https içinde alır, hızlı bir kendinden imzalı sertifika için @vitejs/plugin-basic-ssl kullanılır; başka her yerde mkcert -install && mkcert localhost 127.0.0.1 sunucunuzun yükleyebileceği dosyalar üretir
  • Kendinden imzalı sertifika farklı bir hata verir — bu değil, NET::ERR_CERT_AUTHORITY_INVALID. Gelişmiş → localhost sitesine ilerle (güvenli değil) yolunu izleyin ya da daha iyisi, mkcert sertifikası kullanın (eski allow-insecure-localhost bayrağının süresi doldu)

ERR_SSL_PROTOCOL_ERROR Nasıl Düzeltilir (Kullanıcılar İçin)

Önce 1. çözümle başlayın: iki dakikada sorunun tarayıcınızda mı, cihazınızda veya ağınızda mı, yoksa sitede mi olduğunu söyler. Sonra listede aşağı doğru ilerleyin.

Çözüm 1: Gizli Pencereyi ve Başka Bir Ağı Deneyin

Gizli pencere çerezsiz, önbelleksiz ve uzantısız başlar (orada izin vermediyseniz). Siteyi bir Gizli pencerede açın (Chrome ve Edge'de Ctrl+Shift+N, Firefox'ta Ctrl+Shift+P), ardından telefonunuzun mobil verisi gibi başka bir ağda deneyin.

Gizli pencerede açılıyorsa neden tarayıcınızdadır: bir uzantı veya eski veriler (4. ve 5. çözümler). Yalnızca başka bir ağda açılıyorsa ağınız veya bir VPN ya da proxy siteyi filtreliyor veya araya giriyordur (3. çözüm). Her yerde başarısız oluyorsa siteyi bir SSL Sorgulama aracıyla sınayın: o da başarısız olursa yalnızca site sahibi düzeltebilir.

Çözüm 2: Antivirüsün SSL/HTTPS Taramasını Kapatın

Birçok antivirüs programı (Avast, Kaspersky, Bitdefender, ESET, Norton), şifreli bağlantıları ortadaki adam proxy'si gibi davranarak yakalayan bir "HTTPS taraması" veya "SSL denetimi" özelliği içerir. Bir sitenin el sıkışmasını yanlış işlediğinde bilgisayardaki tüm tarayıcılar o sitede başarısız olur.

Antivirüsünüzde Web Shield, HTTPS Scanning, SSL Scanning veya Encrypted connections scanning adlı ayarları bulun ve geçici olarak kapatın. Hata gidiyorsa ilgili alan adını antivirüsünüzün istisna listesine ekleyebilirsiniz.

Çözüm 3: VPN veya Proxy'yi Kapatın

VPN'ler ve HTTP proxy'leri tarayıcınızla web sunucusu arasında durur. Bazı VPN'ler HTTPS trafiğini inceler ya da bağlantıları TLS'i bozuk sunuculardan geçirir. Kurumsal proxy'ler çoğu zaman TLS el sıkışmalarını bozabilen SSL denetimi (antivirüsün HTTPS taramasına benzer) kullanır.

VPN bağlantınızı geçici olarak kesin ve siteyi yüklemeyi deneyin. VPN olmadan çalışıyorsa sorun VPN'inizin SSL bağlantılarını işleyişindedir. Başka bir VPN sunucusu deneyin veya VPN sağlayıcınızla iletişime geçin.

Çözüm 4: Tarayıcı Uzantılarını Kapatın

VPN ve proxy uzantıları ile güvenlik eklentileri gibi trafiği filtreleyen veya yönlendiren uzantılar güvenli bağlantıları bozabilir.

chrome://extensions/ adresine gidin, tüm uzantıları kapatın ve sayfayı yenileyin. Hata gidiyorsa sorumlu olanı bulmak için uzantıları tek tek yeniden açın.

Çözüm 5: Tarayıcı Önbelleğini ve Çerezleri Temizleyin

Eski çerezler veya önbellekteki veriler ara sıra yolu tıkar; temizlemek bir dakika sürer.

  • Adım 1: Tarama verilerini sil penceresini açmak için Ctrl+Shift+Delete tuşlarına basın (Mac: Cmd+Shift+Delete)
  • Adım 2: Zaman aralığı için Diğer → Tüm zamanlar seçeneğini belirleyin
  • Adım 3: Çerezler ve diğer site verileri ile Önbelleğe alınan resimler ve dosyalar kutularını işaretleyin
  • Adım 4: Verileri sil'e tıklayın (oturumunuz kapalıysa Bu cihazdan sil) ve Chrome'u yeniden başlatın

Tek bir site için chrome://settings/content/all adresine gidin, alan adını arayın ve verilerini silin.

Çözüm 6: QUIC'i (HTTP/3) Eleyin

Chrome, QUIC'i (UDP üzerinden HTTP/3) normal bir TCP bağlantısıyla birlikte dener ve QUIC başarısız olunca TCP'ye döner; bu yüzden QUIC nadiren ERR_SSL_PROTOCOL_ERROR'a yol açar. Sayfa veya DevTools bunun yerine ERR_QUIC_PROTOCOL_ERROR gösteriyorsa QUIC'i kapatmak çözümdür (bkz. ERR_QUIC_PROTOCOL_ERROR):

  • Adım 1: Adres çubuğuna chrome://flags/#enable-quic yazın
  • Adım 2: Experimental QUIC protocol seçeneğini bulun
  • Adım 3: Default ayarını Disabled olarak değiştirin
  • Adım 4: Chrome'u yeniden başlatmak için Yeniden başlat'a tıklayın

QUIC kapalıyken sayfalar yine yüklenir; TCP üzerinden HTTP/2 ile. Ağ veya site düzeldikten sonra tekrar açın.

Çözüm 7: Tarayıcınızı Güncelleyin

Eski tarayıcı sürümlerinde modern sitelerin beklediği TLS özellikleri ve şifreler olmayabilir; güncellemeler TLS hatalarını giderir.

Chrome'u güncelleyin: chrome://settings/help adresine gidin veya Menü → Yardım → Google Chrome Hakkında'ya tıklayın. Chrome güncellemeleri otomatik indirir ancak uygulamak için yeniden başlatma gerektirir. Edge için: edge://settings/help. Firefox için: Menü → Yardım → Firefox Hakkında.

Çözüm 8: DNS Önbelleğini Temizleyin

Eski DNS, tarayıcınızı siteyi artık TLS üzerinden sunmayan eski bir sunucuya gönderebilir. DNS önbelleğini temizlemek yeni bir sorgu yapılmasını sağlar.

bash
# Windows (Command Prompt as Admin)
ipconfig /flushdns

# macOS
sudo dscacheutil -flushcache && sudo killall -HUP mDNSResponder

# Linux
sudo resolvectl flush-caches

# Chrome internal DNS cache
# Visit chrome://net-internals/#dns → Click "Clear host cache"

Temizledikten sonra alan adının doğru IP'ye çözüldüğünü DNS Robot'un DNS Sorgulama aracıyla doğrulayın. IP adresi yanlış görünüyorsa web sitesi barındırma sağlayıcısını değiştirmiş ve DNS henüz tam yayılmamış olabilir.

Çözüm 9: Sistem Tarih ve Saatini Kontrol Edin

Yanlış saat normalde farklı bir hata gösterir: NET::ERR_CERT_DATE_INVALID ("Saatiniz ileri" veya "Saatiniz geri"), çünkü bir sertifika yalnızca iki tarih arasında geçerlidir. Yine de elemek on saniye sürer:

  • Windows: Ayarlar → Saat ve dil → Tarih ve saat → "Saati otomatik olarak ayarla" ve "Saat dilimini otomatik ayarla" seçeneklerini açın
  • Mac: Sistem Ayarları → Genel → Tarih ve Saat → "Saati ve tarihi otomatik ayarla"yı açın
  • Linux: NTP eşitlemesini açmak için sudo timedatectl set-ntp true komutunu çalıştırın

Çözüm 10: SSL Durumunu Temizleyin (Windows)

Pek çok rehber Windows'un İnternet Seçenekleri'ndeki SSL durumunu temizle seçeneğini önerir (inetcpl.cpl → İçerik → SSL durumunu temizle). Bu, Windows'un kendi TLS kitaplığının oturum önbelleğini temizler; Windows ağ altyapısıyla yazılmış uygulamalar onu kullanır. Chrome ve Edge kendi TLS kitaplığını çalıştırdığından onlar için nadiren bir şey değiştirir.

Tarayıcıdaki karşılığı daha basittir: tüm tarayıcı pencerelerini kapatıp (sistem tepsisinde arka planda çalışan bir Chrome olup olmadığına bakın) yeniden açın. Bu, önbellekteki tüm TLS oturumlarını düşürür. Hata tam yeniden başlatmadan sonra da sürüyorsa sonraki çözümlere geçin.

Düzeltme 11: Ağ Ayarlarını Sıfırlayın (Son Çare)

Başka hiçbir şey işe yaramıyorsa ağ yığınınızı sıfırlayın. Windows'ta bu komutlar Winsock'u ve TCP/IP'yi sıfırlar; elle ayarladığınız statik IP adresleri ve DNS sunucuları da silinir. macOS ve Linux'ta ise yalnızca DNS önbelleğini temizler veya ağ hizmetini yeniden başlatır.

bash
# Windows (Command Prompt as Admin)
netsh winsock reset
netsh int ip reset
ipconfig /release
ipconfig /renew
ipconfig /flushdns

# Then restart your computer

# macOS — flush the DNS cache
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

# Linux — restart NetworkManager
sudo systemctl restart NetworkManager

ERR_SSL_PROTOCOL_ERROR Nasıl Düzeltilir (Web Sitesi Sahipleri İçin)

Birçok ziyaretçi ERR_SSL_PROTOCOL_ERROR bildiriyorsa sorun sunucudadır: genellikle 443. port düz HTTP ile yanıt veriyordur ya da o portta başka bir program çalışıyordur. Sertifika sorunları kendi hatalarını gösterir, ama oradayken onları da kontrol edin. (Birbirine uymayan bir sertifika ve anahtar, sunucunun yeni yapılandırmayı hiç yüklememesine yol açar: bir değişiklikten sonra nginx -t veya apachectl configtest ile kontrol edin.)

SSL Sertifikanızı Kontrol Edin

İlk adım, SSL sertifikanızın geçerli, doğru kurulmuş ve süresi dolmamış olduğunu doğrulamaktır. Sertifika durumunuzu, son kullanma tarihini, vereni ve sertifika zincirini anında kontrol etmek için DNS Robot'un SSL Sorgulama aracını kullanın.

Bu sertifika sorunları ERR_SSL_PROTOCOL_ERROR yerine kendi hatalarını gösterir, ama oradayken düzeltin:

  • Süresi dolmuş sertifika (NET::ERR_CERT_DATE_INVALID) — Let's Encrypt sertifikaları 90 gün geçerlidir (Şubat 2027'den itibaren 64 gün), bu yüzden yenileme otomatik çalışmalıdır; başarısız olursa (certbot zamanlayıcısı çalışmıyor, DNS doğrulaması bozuk) sertifikanın süresi sessizce dolar.
  • Yanlış alan adı (NET::ERR_CERT_COMMON_NAME_INVALID) — Sertifika example.com için verilmiştir ama site www.example.com adresinde sunulmaktadır (ya da tersi). Sertifika tam alan adıyla eşleşmeli veya bir joker karakter (*.example.com) içermelidir.
  • Kendinden imzalı sertifika (NET::ERR_CERT_AUTHORITY_INVALID) — geliştirme için uygundur, üretimde tarayıcılar tarafından asla güvenilmez.
  • İptal edilmiş sertifika (NET::ERR_CERT_REVOKED) — sertifika otoritesi onu bir anahtar ele geçirilmesi veya hatalı düzenleme sonrasında iptal etmiştir.
  • Ada uymayan sertifika (NET::ERR_CERT_COMMON_NAME_INVALID) — birkaç site aynı IP adresini paylaşıyor ve sunucu her sitenin sertifikasını seçmek için SNI (Server Name Indication) kullanmıyor.
bash
# Check certificate from command line
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com </dev/null 2>/dev/null | openssl x509 -noout -dates -subject -issuer

# Check certificate chain completeness
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com </dev/null 2>&1 | grep -E "depth|Verify"

# Renew Let's Encrypt certificate
sudo certbot renew --dry-run   # test first
sudo certbot renew

TLS 1.2 ve TLS 1.3'ü Etkinleştirin

Tüm modern tarayıcılar en az TLS 1.2 ister: TLS 1.0 ve 1.1, 2021'de RFC 8996 ile resmen kullanımdan kaldırıldı. Bir tarafın diğerinin sürümünü reddetmesi, el sıkışmayı TLS alert 70, protocol_version ile bitirir (RFC 8446 §6.2). Yalnızca TLS 1.0 veya 1.1 destekleyen bir sunucu bu hatayı değil ERR_SSL_VERSION_OR_CIPHER_MISMATCH gösterir, ama her iki durumda da başarısız olur. TLS 1.3, TLS 1.2'nin iki gidiş-dönüşü yerine tek gidiş-dönüşte bağlanır: ikisini de etkinleştirin.

bash
# Nginx — ssl_protocols in nginx.conf or site config
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers off;

# Apache — in httpd.conf or ssl.conf
SSLProtocol -all +TLSv1.2 +TLSv1.3
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
SSLHonorCipherOrder off

TLS yapılandırmanızı güncelledikten sonra web sunucunuzu yeniden başlatın (sudo systemctl restart nginx veya sudo systemctl restart apache2) ve protokollerin etkin olduğunu doğrulamak için DNS Robot'un SSL Sorgulama aracıyla test edin.

Tam Sertifika Zincirini Yükleyin

Eksik bir zincir, eksik ara sertifikayı tamamlayamayan tarayıcılarda ve uygulamalarda bir sertifika hatası (NET::ERR_CERT_AUTHORITY_INVALID) olarak görünür; bu yüzden kontrol ederken tam zinciri kurun. Sunucunuz kendi sertifikanızı ve onu güvenilir bir köke bağlayan ara sertifikaları göndermelidir.

Çoğu sertifika otoritesi bir "CA bundle" veya "full chain" dosyası sağlar. Let's Encrypt için yalnızca cert.pem değil fullchain.pem kullanın. Diğer CA'larda ara sertifikayı belgelerinden indirip sertifikanızla birleştirin.

bash
# Nginx — use fullchain, not just cert
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;

# Apache
SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem

HSTS Yapılandırmasını Kontrol Edin

HSTS (HTTP Strict Transport Security), tarayıcılara alan adınız için her zaman HTTPS kullanmalarını söyler. HSTS politikanızın max-age değeri uzunsa ve TLS kurulumunuz sonradan bozulursa tarayıcılar HTTP'ye dönemez: ziyaretçiler tıklayıp geçme imkânı olmayan bir hata sayfası görür.

HSTS başlığınızı DNS Robot'un HTTP Başlık Kontrolü aracıyla kontrol edin. Çok uzun bir max-age (2 yıl gibi) ayarladıysanız ve sertifikanızın süresi dolduysa, siteyi daha önce ziyaret eden kullanıcılar geri dönüş seçeneği olmadan HTTPS'e kilitlenir. Bunu düzeltmek için önce SSL sertifikanızı onarın; sonra tarayıcılar yeniden normal şekilde bağlanır.

Sunucu Yapılandırmasını Doğrulayın

Bu sunucu hatası geçerli bir sertifikayla bile el sıkışmayı bozar; bir tanesi ise farklı bir hata gösterir:

  • 443. portun düz HTTP sunması — sunucu tarafındaki klasik neden: nginx'te ssl olmadan listen 443; (listen 443 ssl; olmalıdır) veya 443. porta bağlı başka bir hizmet.
  • Şifre takımı uyuşmazlığı — yalnızca tarayıcıların reddettiği şifreleri sunan bir sunucu ERR_SSL_VERSION_OR_CIPHER_MISMATCH gösterir. Modern AEAD şifreleri (AES-GCM, ChaCha20) kullanın.

Dışarıdan openssl s_client -connect example.com:443 -servername example.com </dev/null ile test edin: "wrong version number" (OpenSSL) veya "tlsv1 alert protocol version" (macOS'in yerleşik openssl'i) 443. portun TLS konuşmadığı, bir sertifika çıktısı ise el sıkışmanın çalıştığı anlamına gelir.

Android'de ERR_SSL_PROTOCOL_ERROR

Android kullanıcıları ERR_SSL_PROTOCOL_ERROR hatasıyla hem Android için Chrome'da hem de WebView tabanlı uygulamalarda karşılaşır. Android sertifikaları ve ağ ayarlarını farklı yönettiği için çözümler masaüstünden biraz farklıdır.

  • Ağ değiştirin — Wi-Fi'yi kapatıp mobil veriyi deneyin (ya da tersini). Site açılıyorsa ağ siteyi filtreliyor veya araya giriyordur
  • Denemek için Gizli DNS'i kapatın — Ayarlar → Ağ ve internet → Gizli DNS → Kapalı (Chrome'da ayrıca: Ayarlar → Gizlilik ve güvenlik → Güvenli DNS kullan). Filtreleyen bir DNS hizmeti (reklam engelleme, ebeveyn denetimi) engellediği siteleri el sıkışmayı tamamlayamayan bir sunucuya yönlendirir
  • Chrome verilerini temizleyin — Ayarlar → Uygulamalar → Chrome → Depolama alanı ve önbellek → Önbelleği temizle (işe yaramazsa depolama alanını yönetme seçeneğini de kullanın)
  • Chrome'u güncelleyin — Play Store → profil resminiz → Uygulamaları ve cihazı yönet → Chrome'u güncelleyin
  • Ağ kimlik bilgilerini temizleyin — Ayarlar → Güvenlik (yeni telefonlarda: Daha fazla güvenlik ayarı → Şifreleme ve kimlik bilgileri) → Kimlik bilgilerini temizleme. Bu, kullanıcı tarafından yüklenen tüm sertifikaları siler
  • Tarih ve saati kontrol edin — Ayarlar → Sistem → Tarih ve saat → otomatik. Yanlış saat bir sertifika hatası gösterir, ama elemek hızlıdır
  • Ağ ayarlarını sıfırlayın — Ayarlar → Sistem → Sıfırlama seçenekleri, ardından Wi-Fi ve mobil ağ sıfırlaması (adı Android sürümüne göre değişir: "Bluetooth ve kablosuzu sıfırla", "Mobil Ağ Ayarlarını sıfırla")

iPhone ve iPad'de ERR_SSL_PROTOCOL_ERROR

iPhone'da Chrome ERR_SSL_PROTOCOL_ERROR gösterir; Safari ise sunucuyla güvenli bir bağlantı kuramadığını söyler (İngilizce arayüzde "can't establish a secure connection to the server"). Nedenler bilgisayardakilerle aynıdır; düğmeler farklı yerlerdedir:

  • Ağ değiştirin — Wi-Fi'yi kapatıp mobil veriyi deneyin. Site açılıyorsa Wi-Fi ağı siteyi filtreliyor veya araya giriyordur
  • Tanımadığınız VPN'leri ve profilleri kaldırın — Ayarlar → Genel → VPN ve Aygıt Yönetimi. Kendi sertifikasını veya VPN'ini yükleyen bir profil HTTPS'e araya girebilir
  • iCloud Özel Geçiş olmadan test edin — Ayarlar → [adınız] → iCloud → iCloud Özel Geçiş → kapalı, sonra yeniden deneyin
  • Ekran Süresi sınırlarını kontrol edin — Ayarlar → Ekran Süresi → İçerik ve Gizlilik Sınırlamaları, ardından web içeriği ayarı. Engellenen bir site yüklenmek yerine hata verir
  • Saati otomatik ayarlayın — Ayarlar → Genel → Tarih ve Saat → Otomatik Ayarla

Diğer Tarayıcılarda ERR_SSL_PROTOCOL_ERROR

ERR_SSL_PROTOCOL_ERROR, Chromium'a özgü bir hata kodudur. Diğer tarayıcılar aynı SSL el sıkışma hatası için farklı hata mesajları gösterir.

TarayıcıHata mesajıHata kodu
Chrome / Edge / Brave / OperaBu site güvenli bağlantı sağlayamıyor · geçersiz bir yanıt gönderdiERR_SSL_PROTOCOL_ERROR
FirefoxGüvenli Bağlantı Başarısız OlduSunucu düz HTTP ile yanıt verdiğinde SSL_ERROR_RX_RECORD_TOO_LONG; diğer el sıkışma hatalarında başka SSL_ERROR_ kodları
Safari (Mac, iPhone)Sunucuyla güvenli bir bağlantı kurulamıyor (İngilizce arayüzde "Safari can't establish a secure connection to the server")Kod gösterilmez

Hata tüm tarayıcılarda aynı anda görünüyorsa sorun ya sisteminizdedir (antivirüsün HTTPS taraması, bir VPN veya proxy, ağınız) ya da sunucudadır (443. port TLS'i düzgün sunmuyor). Yalnızca bir tarayıcıda başarısız oluyorsa o tarayıcının uzantılarını ve önbellekteki verilerini kontrol edin.

Chrome'da SSL ile ilgili birkaç hata kodu vardır. Hepsi farklı TLS el sıkışması veya sertifika sorunlarını gösterir.

Hata KoduNe Anlama GelirYaygın Neden
ERR_SSL_PROTOCOL_ERRORTLS el sıkışması tümüyle başarısız oldu443. portta düz HTTP, HTTPS taraması yapan antivirüs veya proxy, siteyi filtreleyen bir ağ
ERR_SSL_VERSION_OR_CIPHER_MISMATCH"Desteklenmeyen protokol: İstemci ve sunucu ortak bir SSL protokol sürümünü veya şifre takımını desteklemiyor"Sunucu kullanımdan kalkmış TLS 1.0/1.1 ve zayıf şifreler kullanıyor
ERR_CERT_AUTHORITY_INVALIDSertifika güvenilir bir CA tarafından imzalanmamışKendinden imzalı sertifika, eksik ara sertifika, süresi dolmuş kök
ERR_CERT_DATE_INVALIDSertifikanın süresi dolmuş veya henüz geçerli değilSertifikanın süresi dolmuş, sistem saati yanlış
ERR_CERT_COMMON_NAME_INVALIDSertifikanın alan adı URL ile eşleşmiyorSertifika example.com için, site www.example.com adresinde
ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAINSertifika sabitleme doğrulaması başarısız olduTarayıcının o site için yerleşik olarak tuttuğu bir anahtarla eşleşmeyen sertifika (Chrome, HPKP başlıklarını Ocak 2019'da, 72. sürümde kaldırdı)

Tüm SSL hatalarında sorunu DNS Robot'un SSL Sorgulama aracıyla hızlıca teşhis edebilirsiniz: sertifika durumunu, zincirin eksiksizliğini, desteklenen TLS sürümlerini ve son kullanma tarihini tek taramada gösterir.

Sayfanız sitenin "Desteklenmeyen protokol" kullandığını söylüyorsa bu hata değil ERR_SSL_VERSION_OR_CIPHER_MISMATCH'tir: bkz. ERR_SSL_VERSION_OR_CIPHER_MISMATCH nasıl düzeltilir.

Sayfa bunun yerine "example.com bağlantıyı beklenmedik şekilde kapattı" diyorsa (ERR_CONNECTION_CLOSED) bağlantı bozulmamış, kesilmiştir. Bu durum için bkz. ERR_CONNECTION_CLOSED.

SSL Sertifikanızı Şimdi Kontrol Edin

Siteyi DNS Robot'un ücretsiz SSL Sorgulama aracına yapıştırın: sunucunun kabul ettiği TLS sürümlerini ve şifreleri, sertifika zincirini, son kullanma ve iptal durumunu A+'dan F'ye kadar notlandırarak gösterir. Tüm kontroller geçerse sorun cihazınızda veya ağınızdadır.

Kaynaklar

  1. net_error_list.h (SSL_PROTOCOL_ERROR -107, SSL_VERSION_OR_CIPHER_MISMATCH -113, CERT_DATE_INVALID -201), Chromium
  2. RFC 8996: Deprecating TLS 1.0 and TLS 1.1, IETF
  3. RFC 8446: The Transport Layer Security (TLS) Protocol Version 1.3 (§6.2 alerts), IETF
  4. next CLI: using HTTPS during development, Next.js

Sıkça Sorulan Sorular

ERR_SSL_PROTOCOL_ERROR ne anlama gelir?

Her HTTPS bağlantısını başlatan TLS el sıkışmasının sayfa yüklenmeden önce bozulduğu anlamına gelir: sunucu geçerli TLS olmayan bir şey göndermiştir. Chromium buna -107 numaralı hata, "An SSL protocol error occurred" der. Bir HTTP durum kodu değildir.

Chrome'da ERR_SSL_PROTOCOL_ERROR nasıl düzeltilir?

Sayfayı bir Gizli pencerede ve başka bir ağda açın. Orada açılıyorsa uzantıları kapatın, antivirüsünüzün HTTPS taramasını ve varsa VPN veya proxy'yi devre dışı bırakıp yeniden deneyin. Her yerde ve herkes için başarısız oluyorsa sitenin sunucusu yanlış yapılandırılmıştır ve yalnızca sahibi düzeltebilir.

"localhost sent an invalid response" ne demek?

Yalnızca HTTP konuşan yerel bir geliştirme sunucusunda https:// açtınız, bu yüzden sunucu TLS el sıkışmasına düz metinle yanıt verdi. http://localhost adresini ve sunucunuzun yazdırdığı portu kullanın ya da geliştirme sunucusunda HTTPS'i açın (örneğin mkcert kullanan next dev --experimental-https).

ERR_SSL_PROTOCOL_ERROR neden tüm web sitelerinde görünüyor?

Her site başarısız oluyorsa neden web siteleri değil cihazınız veya ağınızdır: antivirüsün HTTPS taraması, bir VPN veya proxy, filtreleyen bir DNS hizmeti ya da HTTPS'e araya giren bir ağ. Bunları tek tek kapatın ve doğrulamak için başka bir ağ deneyin.

ERR_SSL_PROTOCOL_ERROR neden yalnızca tek bir web sitesinde görünüyor?

Ya o sitenin TLS kurulumu bozuktur (bir SSL denetleyicisiyle kontrol edin: oradan da başarısız oluyorsa yalnızca sahibi düzeltebilir) ya da ağınız onu filtreliyordur. Mobil veride veya başka bir Wi-Fi'de açılıyorsa ağ onu engelliyordur.

Android'de ERR_SSL_PROTOCOL_ERROR nasıl düzeltilir?

Wi-Fi yerine mobil veriyi deneyin (ya da tersini), sonra Gizli DNS kapalıyken (Ayarlar → Ağ ve internet → Gizli DNS) ve Chrome'un güvenli DNS'i kapalıyken test edin; çünkü filtreleyen DNS hizmetleri engellenen sitelerin el sıkışmasını bozar. Ardından Ayarlar → Uygulamalar → Chrome → Depolama alanı ve önbellek bölümünden Chrome'un önbelleğini temizleyin ve Chrome'u güncelleyin.

iPhone'da ERR_SSL_PROTOCOL_ERROR nasıl düzeltilir?

Wi-Fi yerine mobil veriyi deneyin: site açılıyorsa Wi-Fi ağı onu filtreliyordur. Sonra Ayarlar → Genel → VPN ve Aygıt Yönetimi bölümünde tanımadığınız VPN'leri ve profilleri kaldırın, iCloud Özel Geçiş kapalıyken test edin, Ekran Süresi'ndeki web içeriği sınırlarını kontrol edin ve saati Otomatik Ayarla'ya getirin.

ERR_SSL_PROTOCOL_ERROR tehlikeli midir?

Hatanın kendisi değildir: tarayıcınızın güvence altına alamadığı bir bağlantı üzerinden sayfayı yüklemeyi reddetmesidir. Herkese açık bir sitede onu aşmanın yollarını aramayın; nedeni kendi tarafınızda düzeltin veya sahibinin sunucuyu düzeltmesini bekleyin.

Web sitesi sahipleri ERR_SSL_PROTOCOL_ERROR'u nasıl düzeltir?

443. portun gerçekten TLS sunduğundan, sertifika ve anahtarın eşleştiğinden, TLS 1.2 ve 1.3'ün açık, TLS 1.0/1.1'in kapalı olduğundan ve tam sertifika zincirinin kurulu olduğundan emin olun. Sonra siteyi dışarıdan, sunucunun gerçekte sunduğu protokolleri ve zinciri gösteren bir SSL denetleyicisiyle test edin.

ERR_SSL_PROTOCOL_ERROR ile ERR_SSL_VERSION_OR_CIPHER_MISMATCH arasındaki fark nedir?

ERR_SSL_PROTOCOL_ERROR (-107) "el sıkışma bozuldu" diyen genel hatadır. ERR_SSL_VERSION_OR_CIPHER_MISMATCH (-113) özeldir: "İstemci ve sunucu ortak bir SSL protokol sürümünü veya şifre takımını desteklemiyor"; genellikle TLS 1.0/1.1'de veya eski şifrelerde takılı kalmış bir sunucudur. Chrome bunu "Desteklenmeyen protokol" olarak gösterir.

Yazar hakkında

Shaik Vahid

DNS Robot'un kurucusu. Vahid, yıllarca web hosting desteğinde müşterilerin alan adı, DNS kaydı, SSL sertifikası ve e-posta teslimi sorunlarını çözdü. DNS Robot'un araçlarını geliştiriyor ve bu rehberleri insanların gerçekten karşılaştığı hatalardan yola çıkarak yazıyor.

SSL Sertifika Kontrolü

SSL sertifika geçerliliğini ve güvenlik ayrıntılarını doğrulayın