Neden kötü bir sertifika kullanırken https://gmail.com/ SSL hatası vermiyor?


5

Görünüşe göre https://gmail.com , ana bilgisayar adı için olan bir SSL sertifikası kullanıyor mail.google.com. SSL sertifikası ana bilgisayar adı tarayıcı URL’siyle eşleşmediğinden, bu neden çalışıyor? Bunun yerine bir uyarı almalıyım!

Firefox ve Chromium ile test ettim (daha önce işe yaramadı gibi görünüyor ).

Sertifikayı şu komutla kontrol ettim: echo | openssl s_client -connect gmail.com:443ki şu:

Certificate chain
 0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=mail.google.com

1
gmail.com benim için bile çalışmıyor. Doğru site ne olursa olsun, dahili olarak genişletilmiş bir doğrulama sertifikası olan mail.google.com adresine yönlendirileceğini tahmin edeceğim. Chrome, Google web sitelerini sessizce işler. Başka bir deyişle, Chrome web sitesinin Google olup olmadığını bilir. Geçerli sürümü söz konusu olan tüm tarayıcılarda kullandığını farz ediyorum
Ramhound

5
@Ramhound Bir gönderir 301 Moved Permanentlyiçin mail.google.com. Daha önce ziyaret ettiyseniz, tarayıcınız yönlendirmeyi önbelleğe alır ve gmail.comistek bile yapmaz . Muhtemelen farklı bir sertifikaya hizmet eder.
Bob,

@Bob - Evet; Google’ın yaptığını biliyordum;
Ramhound

Yanıtlar:


7

gmail.com iyi bir sertifika kullanıyor, ancak bağlandığınız sunucu, sanal ana bilgisayarları tek bir adres + bağlantı noktasında çalıştırmak için Sunucu Adı Göstergesini kullanıyor . Bunun çalışması için istemci, SSL / TLS anlaşması yapılmadan önce sunucuya hangi sanal ana bilgisayarı aradığını söylemelidir. Firefox ve Chromium (ve benzer boyuttaki diğer istemciler) bunu otomatik olarak yapar.

Etkili sertifikayı almak için openssl s_clientbu -servernameseçeneği kullanmanız gerekir .

openssl s_client -servername gmail.com -connect gmail.com:443

Lynx SNI için Google sonuçları iyi görünmüyor.


+1 Buna ek olarak, gerçekten önemli olan CN değil, ama burada önemli olan Konu Alternatif Adları'dır (örneğin, kullanımın olduğu belgenin tüm ayrıntılarına bakıldığında görülebilir echo | openssl s_client -connect gmail.com:443 -servername gmail.com | openssl x509 -text -noout).
Bruno,

@Bruno Bir şeyi özlemediğim https://mail.google.com/sürece , sertifikada SAN'lar yok . Sertifikada olmalarına rağmen https://gmail.com, soruyu sorduğun tam tersi bu. Yine de, evet, kontrol edilecek ilk şey SAN'lar olmalıdır.
Bob,

@Bob, sizin için ayrıntıları göstermek için OpenSSL komutunu deneyin şey kaçırdığınızı mail.g..: X509v3 Subject Alternative Name: DNS:mail.google.com. Soru soranın tam tersi değil, çünkü soru etkili bir şekilde neden Konu DN’de olmadığını merak ediyordu; bu, yine de ilk önce kontrol edilmesi gereken şey değildi. Bu olabilir her ikisi için SAN kullanan tek sertifika olmuştur mail.google.comve gmail.com(öyle değil). Her durumda, SAN'lar kontrol edilmesi gereken ilk şeydir, çünkü SAN'lar mevcut olduğunda CN'lerin göz ardı edilmesi gerekir, bu nedenle yalnızca sorudaki ve cevabınızdaki CN'den bahsetmek biraz önemsizdir.
Bruno,

@Buno subjectAltName, CN'nin göz ardı edilmesi gerektiği anlamına geldiğinin farkında değildim (eğer başka biriyle ilgileniyorsa RFC2818§3.1) - Daima ek olduğunu varsaymıştım . Üzgünüm. Cevabım gelince - "SSL sertifikası ana bilgisayar adı tarayıcı URL’siyle eşleşmediğinden, bu neden işe yarıyor?" o - Ya benim cevap adresleri olduğunu mu yazdınız birinden farklıdır tarayıcı yüklenirken URI, maç. (OpenSSL çıktısını bahsetmedim / kontrol etmedim / cevaplamadım, bunu göz ardı ettim).
Bob,

@Bob Aslında, bu RFC 2818'de. Şimdi de RFC 6125 var. Bazı araçlar diğerlerinden daha katıdır ( örneğin bu SO sorusuna bakınız ).
Bruno,

9

https://gmail.com/Kötü bir sertifika kullanmaz. İşte Fiddler2 tarafından yakalanan mevcut sertifikası:

== Server Certificate ==========
[Subject]
  CN=gmail.com, O=Google Inc, L=Mountain View, S=California, C=US

[Issuer]
  CN=Google Internet Authority G2, O=Google Inc, C=US

[Serial Number]
  4F4A246099981C2C

[Not Before]
  16/07/2014 10:04:37 PM

[Not After]
  14/10/2014 11:00:00 AM

[Thumbprint]
  8F1065D237732F71CAD350A3FD0089AEEAAB675E

Not edin CN=gmail.com.

HTTP isteği gerçek yanıt türü bir olduğunu 301 Moved Permanentlyiçin https://mail.google.com/. Bunun iki etkisi var:

  1. Tarayıcı, yeni bir tünel (çünkü farklı etki alanı) ve farklı sertifika ile yeni bir istek yaparak, hedefe yönlendirecektir. Bu yüzden bir mail.google.comsertifika görüyorsunuz - bu yeniden yönlendirmeden sonra . Adres çubuğuna bakarsanız, bulunduğunuz gerçek site http://mail.google.com/değil http://gmail.com/. Yeniden yönlendirme sertifikasını bir tarayıcıda yakalamak biraz zor, bu yüzden Fiddler2 kullandım.

  2. Tarayıcı bu yönlendirmeyi önbelleğe alacak ve gelecekte otomatik olarak gerçekleştirecek, hiçbir zaman başka bir istek yapmayacak https://gmail.com/(amacı bu Moved Permanently). Bu, bu soru için gerçekten önemli değil, ancak yönlendirmeyi keşfetmeyi biraz zorlaştırıyor - önbelleklerinizi temizlemeniz veya önce özel bir tarama penceresi açmanız gerekiyor.


O zaman neden openssl s_client -connect gmail.com:443mail.google.com için bir sertifika buluyor? Neden olmasa da lynx https://gmail.combir SSL hatası veriyor lynx https://mail.google.com?
Totor,

2
@Totor muhtemelen HTTP Yönlendirmelerini nasıl kullandıklarından dolayı?
BlueCacti
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.