2010-11-04 20 views
10

Yükseltme üstbilgisi alanını HTTP 1.1'de (RFC 2817) okuyordum ve HTTP için wikipedia girdisini okuyordum. Bu makale aşağıdaki deyimi vardır:HTTP Yükseltme mekanizması ne kadar iyi destekleniyor?

"Yükseltme başlığında olduğu, ancak, neredeyse varolmayan için tarayıcı desteği, bu nedenle HTTPS güvenli bir HTTP bağlantısı kurma baskın yöntem hala."

Ben iki soketi (HTTP için bir ve HTTPS diğer) dinlemek zorunda kalmamak amacıyla Yükseltme başlık alanı dayanıyordu ki benim web hizmeti uygulamaya umuyordum. Başka bir yeri doğrulayamadığım bu ifade, bunu yapmak konusunda beni biraz tedirgin ediyor. Yukarıdaki ifadenin doğru yerde herhangi bir yerde wikipedia var mı yoksa brüt bir genelleme mi?

+0

http için port 80'i ve https için 443 numaralı bağlantı noktasını kullanmak normaldir; neden iki bağlantı noktasını dinlemekten kaçınmak istiyorsunuz? – thejh

+0

^, diyor ki ve aynı portta hem SSL hem de SSL kullanmıyorsunuz, fakat bu daha da kötüsü IMHO. – Wrikken

+0

RFC 2817, Wrikken'in söylediklerini tam olarak yapmak için tasarlanmıştır ve bunun nedenlerini haklı çıkaracak bir girişe sahiptir. Neden "kötü" olduğunu söylediğine emin değilim. –

cevap

2

Bu Wikipedia sayfası için bunu araştırıyordum ve bu soruya rastladım. Ben yakın söyleyebilirim tarayıcı desteği durum etrafına baktı ve burada ettik:

  • Krom Yükseltme başlığını destekler ile belirtildiği gibi, örneğin, this bug.
  • Firefox, "Yükseltme: TLS" yi an open bug from 2005 numaralı telefona rağmen desteklemez, 2010'dan bu yana yapılan son yorum. Tahminim, yakında eklemeye devam etmeyecekler.
  • Internet Explorer 10+, büyük olasılıkla bir websocket sunucusuna bağlanmak için Yükseltme'yi kullanan this article verilir. This commit message, IE 10'un "Yükseltme: websocket" özelliğini desteklediğini de ima etmektedir.
  • Safari 6+ Yükseltmeyi destekler (bkz. here).

Desteklenen tüm tarayıcılarda, yalnızca "Yükseltme: websocket" kullanımının örneklerini buldum; hiçbiri TLS'ye yapılan yükseltmelerin işe yaramayacağını söylüyor. Dolayısıyla genel cevap, bir üretim uygulamasında buna güvenmenin riskli olmasıdır.

Sunucu desteği daha iyi görünüyor; Apache, 2.1'den beri "Yükseltme: TLS" desteğine sahipti.

0

Hepsini http’da bulundurmayı tercih ediyorum, ancak şu anki durum yaygın olarak desteklendiği için Sunucu Adı Göstergesine daha fazla eğiliyor. İstemcinin url'yi kullanarak yeni sürüme geçmesini istediğinizi belirtmek de zor. Yani, hedef sanal barındırma ise, bunu yapmanın bir yolu TLS "sunucu adı göstergesi" dir. Bkz. RFC 3546 http://www.ietf.org/rfc/rfc3546.txt veya http://en.wikipedia.org/wiki/Server_Name_Indication

+1

Durumum, bir HTTP sunucusu uygulayan özel bir programla ilgilidir. HTTPS etkinse HTTPS'ye yönlendirmeye karar verdim. "Sunucu adı gösterimi" özelliğinin gerçekten başarabilmek için yaptığım şeyle ve HTTP yükseltme mekanizmasında gerçekten yapacak bir şeyle hiçbir ilgisi yok. –