Neden HTTP hala yaygın olarak kullanılıyor, bunun yerine çok daha güvenli HTTPS'ye inanıyorum?
SSL/TLS hafif bir ek yüke sahiptir. Google, Gmail'i HTTPS'ye değiştirdiğinde (isteğe bağlı bir özellikten varsayılan ayara), CPU ek yükünün yaklaşık% + 1 ve ağ ek yükünün% + 2 olduğunu; ayrıntılar için bu metin konusuna bakın. Ancak bu, özel, dinamik, paylaşılmayan verilerden oluşan ve Google'ın sistemlerinde barındırılan ve çok düşük gecikme olan her yerden erişilebilen Gmail içindir. HTTPS'nin HTTP ile karşılaştırıldığında ana etkileri şunlardır:
Bağlantı başlatmak için bazı ekstra ağ gidiş dönüşleri gerekir. Bu tür bağlantılar "canlı tutulduğundan" ve mümkün olduğunda yeniden kullanıldığından, belirli bir site tekrarlanan etkileşimlerle (Gmail'de olduğu gibi) kullanıldığında bu ekstra gecikme önemsizdir; Çoğunlukla statik içerik sunan sistemler ağ ek yükünü ihmal edilemez bulabilir.
Proxy sunucuları HTTPS ile sunulan sayfaları önbelleğe alamaz (çünkü bu sayfaları bile görmezler). Yine, Gmail ile önbellekleyecek statik bir şey yok, ancak bu çok özel bir bağlam. Ağ bant genişliği onların yaşam gücü olduğundan ISS'ler önbelleğe almayı çok sever.
HTTPS, SSL/TLS içindeki HTTP'dir. TLS anlaşması sırasında sunucu, istenen sunucu adını belirtmesi gereken sertifikasını gösterir ve bu önce HTTP isteğinin kendisi sunucuya gönderilir. Sunucu Adı Gösterimi olarak bilinen bir TLS uzantısı kullanılmazsa, bu sanal barındırma işlemini engeller; bu istemciden destek gerektirir. Özellikle, Internet Explorer Windows'ta değil Sunucu Adı Gösterimini destekliyor XP (IE 7.0 ve sonraki sürümleri destekliyor, ancak yalnızca Vista ve Win7'de). WinXP kullanan masaüstü sistemlerinin mevcut pazar payı, "herkes" in Sunucu Adı Göstergesini desteklediğini varsayamaz, bunun yerine HTTPS sunucularının sunucu adı başına bir IP kullanması gerekir;.
HTTPS, aşağıdaki anlamda HTTP'den "daha güvenlidir": verilerin adı, adlandırılmış bir sunucudan geliyormuş gibi doğrulanmıştır ve aktarım, hatta kimin izleyebileceğine göre gizlidir. Bu, birçok durumda mantıklı olmayan bir güvenlik modelidir: örneğin, Youtube'dan bir videoya baktığınızda, videonun gerçekten youtube.com'dan mı yoksa (nazikçe) gönderen bazı hackerlardan mı geldiği umrumda değil. görmek istediğiniz videoyu; ve bu video yine de herkese açık verilerdir, bu nedenle gizlilik burada düşük önem taşır. Ayrıca, kimlik doğrulaması yalnızca, istemci tarayıcısının bildiği bir Sertifika Yetkilisinden gelen sunucunun sertifikasına göre yapılır. Sertifikalar ücretsiz değildir, çünkü sertifikalar CA tarafından sertifika sahibinin fiziksel olarak tanımlanmasını içerirler (ticari CA'nın sertifikalarını adil bir şekilde fiyatlandırdığını söylemiyorum; ancak Buda'nın kendisi tarafından işletilen en adil CA bile yine de bir sertifika için ücret almanız gerekir). Ticari CA sadece love HTTPS "varsayılan" olur. Dahası, X.509 sertifikalarıyla somutlaştırılan PKI modelinin İnternet için genel olarak "varsayılan olarak" gerekli olup olmadığı açık değildir (özellikle sertifikalar ve DNS arasındaki ilişkiler söz konusu olduğunda - bazıları etki alanı oluşturulduğunda sunucu sertifikası kayıt şirketi tarafından verilmelidir).
Birçok kurumsal ağda HTTPS, verilerin kulak misafiri tarafından görülemeyeceği ve bu kategorinin her türlü içerik filtresi ve virüsten koruma yazılımı içerdiği anlamına gelir. HTTPS'yi varsayılan yapmak, birçok sistem yöneticisini mutsuz eder.
Tüm bunlar HTTPS'nin Web için varsayılan protokol olarak iyi bir fikir olmamasının nedenleridir. Ancak, HTTPS'nin şu anda Web için varsayılan protokol olmamasının nedeni değildir; HTTPS varsayılan değil çünkü HTTP ilk önce oradaydı.
Daha önce verilen harika cevaplar olsa da, şimdiye kadar bir yönün göz ardı edildiğine inanıyorum.
İşte: Düz HTTP, web için varsayılan protokoldür çünkü web üzerindeki bilgilerin çoğunun güvenliğe ihtiyacı yoktur.
Soruyu veya bazı web sitelerinin/uygulamaların güvenlik endişelerini küçümsemek istemiyorum. Ancak bazen web trafiğinin ne kadarını unutabiliriz:
Birkaç kısa örnek, eminim aklınızda hızla daha fazlasını yapabilirsiniz:
Http her zaman varsayılan değerdi. Başlangıçta hiçbir şey için https gerekli değildi, bazı durumlarda güvenliğin gerekli olduğu belirgin hale geldi.
Şimdi bile, https'ye ihtiyaç duymayan çok sayıda web sitesi var, http'yi tamamen değiştirmek hala ikna edici bir argüman değil.
TLS güvenli bağlantılarını çalıştırmak için her zamankinden daha etkili mekanizmalarla CPU ek yükü daha az sorun haline geliyor.
Hiç kimse http'nin https yerine varsayılan olarak kullanılmasından kaynaklanan net bir soruna işaret etmedi.
Şifrelenmesi ve/veya çeşitli amaçlarla imzalanması gereken bir kaynak talep ederken, hiç kimse tam uri'yi yazmaktan rahatsız olmaz.
Örnek olarak gmail'i ele alalım, kullanıcılar gmail.com adresini ziyaret ettiklerinde, aslında https yerine varsayılan http protokolünü ziyaret ediyorlar. Bu noktada, rakibin trafiği durdurduğu senaryolarda güvenlik başarısız oldu. Neden? Çünkü html'yi https isteğinden çıkarmak ve http'ye yönlendirmek mümkündür.
Https aslında varsayılan protokol olsaydı, web sitelerine yaptığınız oturumlar korunurdu.
Http'nin https üzerinden neden seçildiği sorusuna yukarıdaki çeşitli cevaplar uygulanır. Dünya henüz şifrelemenin yaygın kullanımı için hazır değil.
Başkalarının zaten vermiş olduğu nedenlere ek olarak:
Sunucuda HTTPS'yi ayarlamak için ek çalışma gerekir
Sunucu yöneticisinin her etki alanı için sertifika yapılandırması gerekir. Bu, alan adının gerçek sahibi olduğunuzu kanıtlamak ve sertifika yenilemeleri almak için bir sertifika yetkilisiyle etkileşim kurmayı içerir. Bu, manuel olarak sertifika imzalama istekleri oluşturma ve yenileme satın alma veya bunu yapmak için otomatik bir işlem ayarlama (Let's Encrypt kullanan certbot gibi) anlamına gelebilir. Her iki durumda da, HTTPS kullanmamaktan daha fazla iştir.
Ek IP adresleri gereklidir
SNI (Sunucu Adı Tanımlama) desteği tarayıcılarda ve SSL istemci kitaplıklarında yaygınlaştığı için bu gerçekten sorun değil.
Bununla birlikte, geleneksel olarak, belirli bir sunucuda ve bağlantı noktasında SSL kullanan her farklı site için farklı bir IP adresi kullanmak gerekiyordu. Bu, ad tabanlı barındırma (sanal barındırma) yapma yeteneği ile etkileşime girmiştir - birçok IP'nin aynı IP adresinden barındırılmasına izin veren yaygın olarak kullanılan bir uygulamadır. HTTPS ile normal ad tabanlı barındırma çalışmaz, çünkü sunucu SSL/TLS doğrulama katmanında host HTTP isteğini içeren hostname hostname, şifresi çözülebilir.
SSL/TLS katmanında ad tabanlı barındırma işlevini etkili bir şekilde uygulayan Sunucu Adı Tanımlaması (SNI), bu sınırlamayı kaldırır.
Yavaş değişim hızı
HTTPS, birçok kişi güvenliği düşünmeye başlamadan önce zaten çok fazla yerleşik olan mevcut bir protokol olan HTTP'de bir modifikasyondu. Bir teknoloji kurulduktan ve HTTP kadar yaygın olduğu zaman, değişimin nedenleri zorlayıcı olsa bile dünyanın halefine geçmesi çok uzun zaman alabilir.
Thomas zaten mükemmel bir cevap yazdı, ancak HTTPS'nin daha yaygın kullanılmamasının birkaç nedeni daha sunacağımı düşündüm ...
Gerekli değil. Jesper'ın cevabı, "web'deki bilgilerin çoğunun güvenliğe ihtiyacı olmadığını" açıkça belirttiği gibi. Ancak, arama motorları, reklam şirketleri, ülke düzeyindeki internet filtreleri ve diğer "Big Brother" programları (ör. NSA) tarafından artan izleme miktarı ile; daha fazla gizlilik önlemine ihtiyaç duyuluyor.
Hız. Ekstra gidiş-dönüş gezileri ve sertifika iptal listeleri için ekstra istekler nedeniyle genellikle yavaş hisseder ( OCSP vb.). Neyse ki SPDY (Google tarafından oluşturuldu ve şimdi tüm büyük tarayıcılarda destekleniyor) ve bazı CloudFlare'nin ilginç çalışması bunu değiştirmeye yardımcı oluyor .
Sertifikaların fiyatı. Sertifika yetkililerinin çoğu, bir sertifika için harici miktarda para (yüzlerce dolar) almaktadır. Neyse ki ücretsiz seçenekler var , ancak bunlar çok fazla tanıtım almıyor (neden emin değilim?).
IP adreslerinin fiyatı. IPv6 yaygınlaşıncaya kadar, web siteleri IPv4 adreslerinin artan kıtlığıyla (ve dolayısıyla maliyetiyle) karşılaşacaktır. SNI , tek bir IP adresinde birden çok sertifika kullanmayı mümkün kılıyor, ancak Windows'ta SNI desteği yok XP veya IE 6, çoğu sitenin SSL sağlamak için hala özel bir IP adresine ihtiyacı vardır.
Sunucu CPU kullanımındaki artış. Bu yaygın bir inançtır, ancak Google'a göre " SSL/TLS artık hesaplama açısından pahalı değil ".
En basit açıklama ve meslektaşlarım arasında bulduğum en makul şey, her zaman HTTP ile yapıldığı, neden şimdi değiştirildiğidir.
Eğer kırılmazsa, tamir etmeyin.
Asıl cevap şu anki formlarındaki SSL sertifikalarının kullanımı oldukça zor. O kadar kullanılamazlar ki, insanlar sadece işleri halletmek için kısayollar kullandıklarından, sertifikaların güvenliğini tehdit ediyorlar. Bunu, 2 yönlü SSL (PKI sertifikaları), spesifikasyonun karmaşıklığıyla oluşturulan TLS yığın uyumsuzlukları ve konfigürasyonların çılgın sayıda kombinasyonu (şifre limitleri, seçenekler, dile özgü kütüphane hataları) ile rutin olarak ilgilenen biri olarak söylüyorum. vb.) "TLS" olarak adlandırılır.
Bunun doğru olduğuna dair kanıt olarak LetsEncrypt'in yükselişine bakın.
Caddy, LetsEncrypt kullanan bir ters proxy projesidir. Sunucu çalışırken sertifikaları yenileyebilir ve yenilemeler otomatik olduğu için insanlar gerçekten kısa süreler kullanır.