OpenSSL zwraca inny certyfikat SSL niż ten pokazany przez Chrome

13

Podczas sprawdzania adresu URL CDN Sparkfun za pomocą OpenSSL za pomocą następującego polecenia:

openssl s_client -showcerts -connect dlnmh9ip6v2uc.cloudfront.net:443

Nazwa pospolita zwrócona w certyfikacie to ta *.sparkfun.com, której nie można zweryfikować, ale jeśli załadujesz hosta w Chrome, wyświetlana jest nazwa pospolita*.cloudfront.net

Co tu się dzieje?

Powoduje to problem, ponieważ środowisko, w którym jestem na serwerach proxy SSL przez Squid SSL_Bump, który generuje certyfikat podpisany przez mój lokalnie zaufany urząd certyfikacji dla domeny. Działa to dla wszystkich domen, ale powyżej, ponieważ CN nie pasuje, ponieważ nowy certyfikat jest generowany przy użyciu OpenSSL.

EDYCJA - sprawdziłem, że to samo dzieje się z OpenSSL na serwerze w zdalnym centrum danych, które ma bezpośrednie połączenie z Internetem bez żadnych serwerów proxy ani filtrowania.

EDYCJA - Problem jest spowodowany przez SNI, jak zaakceptowano, ale w celu uzupełnienia informacji, dlaczego powoduje problem z Squid i SSL_Bump:

Ten projekt nie będzie obsługiwał przekazywania informacji SNI na serwer źródłowy i sprawi, że takie wsparcie będzie nieco trudniejsze. Jednak przekazywanie SNI ma swoje poważne wyzwania (wykraczające poza zakres tego dokumentu), które znacznie przewyższają dodatkowe trudności związane z przesyłaniem.

Zaczerpnięte z: http://wiki.squid-cache.org/Features/BumpSslServerFirst

Geoffrey
źródło

Odpowiedzi:

23

CloudFront wykorzystuje SNI, sposób na używanie wielu certyfikatów na jednym adresie IP. Wszystkie nowoczesne przeglądarki obsługują to, podobnie jak polecenie s_client openssl, ale s_client nie robi tego magicznie. Musisz to powiedzieć, aby go użyć:

openssl s_client -servername dlnmh9ip6v2uc.cloudfront.net  -connect dlnmh9ip6v2uc.cloudfront.net:443 -showcerts
Dennis Kaarsemaker
źródło
2
Yaaay Dennis, to moje „ oooh, nie wiedziałem tego ” posortowane dzisiaj dla SF, a jeszcze nie jest jeszcze 9 rano! +1 ode mnie
MadHatter
9

Chrome obsługuje SNI , mówiąc serwerowi, który certyfikat wysłać. s_clientKomenda nie.

Jest więcej szczegółów użytkowania CloudFront dnia -SNI tutaj .

Podczas korzystania z niestandardowego protokołu SSL SNI niektórzy użytkownicy mogą nie mieć dostępu do treści, ponieważ niektóre starsze przeglądarki nie obsługują SNI i nie będą w stanie nawiązać połączenia z CloudFront w celu załadowania wersji HTTPS treści. Aby uzyskać więcej informacji o SNI, w tym listę obsługiwanych przeglądarek, odwiedź naszą stronę FAQ .

i:

SNI Custom SSL opiera się na rozszerzeniu SNI protokołu Transport Layer Security, który pozwala wielu domenom obsługiwać ruch SSL na tym samym adresie IP, włączając w to przeglądarkę nazw hostów, z którą próbują się połączyć. Podobnie jak w przypadku niestandardowego niestandardowego protokołu SSL dedykowanego protokołu IP CloudFront dostarcza treści z każdej lokalizacji brzegowej Amazon CloudFront i zapewnia takie same zabezpieczenia, jak funkcja niestandardowego protokołu SSL dedykowanego protokołu IP. SNI Custom SSL działa z większością nowoczesnych przeglądarek, w tym Chrome w wersji 6 i nowszej (działającej w systemie Windows XP i nowszym lub OS X 10.5.7 i nowszą), Safari w wersji 3 i nowszej (działającej w Windows Vista i nowszej lub Mac OS X 10.5. 6. i nowsze), Firefox 2.0 i nowsze oraz Internet Explorer 7 i nowsze (działające w systemie Windows Vista i nowszych). Starsze przeglądarki, które nie obsługują SNI, nie mogą nawiązać połączenia z CloudFront w celu załadowania wersji HTTPS treści.

David Schwartz
źródło
s_client dobrze obsługuje SNI ...
Dennis Kaarsemaker
W każdym razie +1 ode mnie ze względu na doskonałą dokumentację.
MadHatter
Nie powiedziałem, s_clientże nie obsługuje CLI. Powiedziałem, że s_clientpolecenie (w PO) nie.
David Schwartz
@DavidSchwartz - Właściwie mój klient OpenSSL obsługuje SNI i mogę zweryfikować, korzystając z informacji tutaj opisanych.
Geoffrey
@Geoffrey Zgadzam się. To polecenie w PO, które nie obsługuje SNI.
David Schwartz