HTTPS, Safari ile çalışmaz


16

Web sunucusu olarak Apache (ve uygulama sunucusu olarak Wildfly) ile bir EC2 örneği var, ancak bu sorunla ilgisi olmadığından emin değilim). EC2'nin önünde HTTPS'yi sonlandıran ve SSL sertifikasını uygulayan bir yük dengeleyicim var.

Hem HTTP hem de HTTPS Chrome'da iyi çalışıyor, ancak ne yazık ki Safari'de çalışmıyor. Erişim http://test.papereed.com cezası çalışır, ancak erişimde bulunan https://test.papereed.com hata veriyor

"Safari can't open the page. The error is "The operation couldn't be completed. Protocol error" (NSPOSIXErrorDomain:100)"

Sorunu çözmek için herhangi bir ipucu bulmadan / etc / httpd / logs / error_log ve / etc / httpd / logs / access_log ve Safari konsoluna baktım. Ve bu, bilgimin ne kadar ileri gittiğiyle ilgili :-( Bu sorunun nasıl izleneceğine dair herhangi bir ipucu çok takdir edilecektir.

Yanıtlar:


22

curl (HTTP / 2 desteği ile derlenmişse) aynı sorunu gösterir ancak nedenini gösterir:

http2 hatası: Geçersiz HTTP başlık alanı alındı: çerçeve türü: 1, akış: 1, ad: [yükseltme], değer: [h2, h2c]

Bağlantınızın zaten HTTP / 2 ile yapılmış olmasına rağmen sunucunuz HTTP / 2'ye yükseltme yapıyor gibi görünüyor - bu da bir anlam ifade etmiyor. Sadece bu da değil, açıkça yasaktır. Gönderen RFC 7540 bölüm 8.1.2.2 :

Bir uç nokta, bağlantıya özgü başlık alanlarını içeren bir HTTP / 2 iletisi OLMAMALIDIR; bağlantıya özgü üstbilgi alanlarını içeren tüm iletilere ZORUNLU (Bölüm 8.1.2.6) gibi davranılması GEREKİR ... Canlı Tut, Proxy Bağlantısı, Aktarım Kodlaması ve Yükseltme gibi bağlantıya özgü üstbilgi alanları

Apache bu üstbilgiyi HTTP / 2 ile göndermemesi gerektiğinden bana bir hata veriyor.

Tahminimce böyle bir konfigürasyonunuz var

Protocols h2 h2c http/1.1

Tarayıcıların TLS olmadan HTTP / 2'yi desteklemediği ve TLS üzerinden HTTP / 2 ile Yükseltme üstbilgisine gerek olmadığı göz önüne alındığında, bu yapılandırmayı

Protocols h2 http/1.1

Bu, TLS'siz gereksiz HTTP / 2 desteğini devre dışı bırakır, ancak bu şekilde Yükseltme üstbilgisinden kurtulması gerekir, çünkü bu yalnızca düz HTTP'den düz HTTP / 2'ye yükseltme için gereklidir.

EDIT: OP tarafından yapılan açıklamaya göre Protocolsyapılandırmayı değiştirmek yardımcı olmadı. Başlığı mod_http2silerek bu davranışı (yani bug) açıkça çözmek gerekiyordu Upgrade:

Header unset Upgrade

3
Teşekkür ederim! Gerçekten şu yapılandırmaya sahiptim: # Enable HTTP/2 by default # https://httpd.apache.org/docs/2.4/mod/core.html#protocols <IfModule mod_http2.c> Protocols h2 h2c http/1.1 </IfModule> Tavsiyenizi izleyerek Protocols h2 http/1.1ve yükseltme üstbilgisini kaldırmamak için değiştirdim , bunun yerine Protokolleri olduğu gibi tuttum ve aşağıdakileri ekledim: Header unset Upgradebaşlığı kaldırmak için. Burada ne olduğunu neden% 100 olduğumu söyleyemem ama şimdi Safari'de de iyi çalışıyor :-)
jola

@ jola: geribildirim için teşekkürler. Cevaba ekledim.
Steffen Ullrich

3

Bunun bir AWS / SSL sorunu yerine bir Safari sorunu olduğunu düşünüyorum. Bu hatayı aramak Google'da çok, çok sonuç alır.

SSL Shopper testi ve SSL Labs Testine göre her şey web sitesi ile kontrol edilir .

Soruna bu olası çözümü buldum .

Çözüm, Gizlilik altında Safari Tercihleri'ne gitmek ve tüm Ayrıntıları listelemekti. Bu, çerezlerin vb. Kullanıldığı tüm sitelerin bir günlüğünü sağlamıştır. Hava Durumu Ağı etki alanı sayfasını buldum ve ondan tüm içeriği temizledim. Daha sonra Hava Durumu Ağı sayfasını herhangi bir sorun olmadan yeniden yükleyebildim. Bunun diğer benzer tekil siteler için işe yarayacağını düşünüyorum.

Orada da bu Apache ile yapılabilir hangi.


Evet, bunu googledim, ancak doğrudan geçerli olan bir şey bulamadım (afaiu). Nginx için önerilen çözümü okudum ama bu apache için nasıl / geçerli olup olmadığından emin değilim.
jola

Apache hiç şüphesiz tüm Nginx'in yaptığı "Yükseltme" başlığını silebilecektir .
Tim
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.