Od czasu uaktualnienia przeglądarki Firefox do wersji 38 napotykam problem podczas wysyłania określonego formularza na stronie internetowej https://usercenter.checkpoint.com/ Większość strony działa normalnie, ale wysyłanie formularza podczas otwierania zgłoszenia do pomocy technicznej (adres URL w dzienniku poniżej ) powoduje, że Firefox nie powiedzie się w negocjacjach TLS. Strona błędów Firefoksa prawie niczego nie wyjaśnia:
Bezpieczne połączenie nie powiodło się
Połączenie z serwerem zostało zresetowane podczas ładowania strony.
- Nie można wyświetlić strony, którą próbujesz wyświetlić, ponieważ nie można zweryfikować autentyczności otrzymanych danych.
- Skontaktuj się z właścicielami witryny, aby poinformować ich o tym problemie.
Zgłoś ten błąd
Raportowanie adresu i informacji o certyfikacie dla usercenter.checkpoint.com pomoże nam zidentyfikować i zablokować złośliwe strony. Dziękujemy za pomoc w tworzeniu bezpieczniejszej sieci!
Automatycznie zgłaszaj błędy w przyszłości Więcej informacji…
W internetowej konsoli programisty widzę tylko to:
19:58:44.470 This site makes use of a SHA-1 Certificate; it's recommended you use certificates with signature algorithms that use hash functions stronger than SHA-1.1 AjaxCall
19:58:44.589 POST https://usercenter.checkpoint.com/usercenter/portal/js_pane/supportId,CreateServiceRequestId [178ms]
Pierwszy wiersz to tylko ostrzeżenie, że w przyszłości SHA-1 nie będzie obsługiwany. Czy muszę coś włączyć, aby zobaczyć przyczynę niepowodzenia TLS? Informacje o TLS i certyfikacie z konsoli znajdują się poniżej:
Nie widzę tam nic złego. Z rozpaczy próbowałem bezskutecznie grać z parametrami TLS about:config
:
security.tls.insecure_fallback_hosts
security.tls.unrestricted_rc4_fallback
security.tls.version.fallback-limit
security.tls.version.max
security.tls.version.min
Test Qualy SSL nie pokazuje niczego całkowicie niewłaściwego: https://www.ssllabs.com/ssltest/analyze.html?d=usercenter.checkpoint.com
W bazie wiedzy Red Hat znajduje się obiecujący artykuł: Firefox 38 i serwery SSL / TLS, które nie tolerują wersji TLS, ale rozwiązanie jest dostępne tylko dla płacących klientów.
Sprawdziłem także Kompatybilność strony dla przeglądarki Firefox 38 .
pytania
- Jak mogę rozwiązać problem z przyczyną niepowodzenia TLS?
- Czy w Firefoksie są inne konfigurowalne przez użytkownika białe listy, na których mogę spróbować dodać adres strony internetowej, która nie działa?
- Jakie mogą być przyczyny nie pojawienia się dopiero po wysłaniu określonego formularza, gdy konsola pokazuje, że żądanie POST trafia do tego samego hosta,
usercenter.checkpoint.com
co poprzednia udana komunikacja?
{Distinguished Name, Serial Number}
czyni certyfikat unikalnym, dzięki czemu można go jednoznacznie wybrać; patrz RFC 4158 . Ale zapoznaj się z poniższymi zastrzeżeniami dotyczącymi wyboru, ponieważ nie jest to łatwe. Ponadto Checkpoint nie powinien wysyłać starego certyfikatu G5 jako części łańcucha.Odpowiedzi:
Zastosowanie
openssl s_client
. To szwajcarski scyzoryk do takich rzeczy. I użyjopenssl x509
do zrzucenia certyfikatów.Zazwyczaj interesują Cię takie
{Issuer, Subject}
pary w łańcuchu:Zwróć uwagę, w jaki sposób wystawca na serwerze staje się przedmiotem kolejnego wyższego certyfikatu. Gutmann przedstawia następujący schemat w swojej książce Engineering Security :
U góry katalog główny urzędu certyfikacji jest samopodpisany, a problem i temat są takie same. Gdyby istniał poziom 3, byłby to:
Ale zwykle nie widzisz tego w łańcuchu, ponieważ musisz mu zaufać. A część wymagań dla kotwicy zaufania polega na tym, że już ją masz, aby mieć pewność, że nie zostanie zmieniona.
Używanie nazw podmiotów i wystawców polega na wykorzystaniu nazw wyróżniających . Innym sposobem na utworzenie łańcucha jest użycie
KEYIDs
. Czasami można go zobaczyć za pomocą identyfikatora klucza podmiotu (SKI) i identyfikatora klucza urzędu (AKI). Identyfikatory kluczy to tylko odciski palców przetworzonego klucza publicznego.Czytanie na temat nazw wyróżniających można znaleźć w standardach takich jak RFC 4514 ; oraz używanie KEYID w standardach takich jak RFC 4518 , która dotyczy budowania ścieżki.
Wygląda na to, że problem dotyczy przeglądarki (ale patrz poniżej). Wygląda na to, że brakuje mu
Class 3 Public Primary Certification Authority
odcisku palcaa1 db 63 93 91 6f 17 e4 18 55 09 40 04 15 c7 02 40 b0 ae 6b
.Kiedy odwiedzam główny certyfikat firmy Symantec i pobieram publiczny główny urząd certyfikacji klasy 3 , mogę utworzyć ścieżkę do sprawdzania poprawności (zwróć uwagę
Verify return code: 0 (ok)
poniżej).Należy pobrać i zainstalować
Class 3 Public Primary Certification Authority
w zaufanym sklepie głównym przeglądarki. Lub określ, dlaczego przeglądarka nie wykorzystuje go do budowy ścieżki (patrz dalej).Mozilla i Firefox omawiają
Class 3 Public Primary Certification Authority
w poście na blogu: Wycofywanie certyfikatów za pomocą 1024-bitowych kluczy RSA . Zgodnie z tym postem wycofali oni ten certyfikat urzędu certyfikacji od Firefoksa 32. Naprawdę ich nie winię, ponieważ klucze te są używane długoterminowo do operacji podpisywania urzędów certyfikacji i potrzebują „mocniejszych” parametrów, ponieważ muszą żyć 10–30 lat (dosłownie).Checkpoint musi uzyskać nowy certyfikat serwera wydany w ramach certyfikatu (łańcucha) ze współczesnymi parametrami, np. CA z 4096-bitowymi modułami RSA i SHA-256. Lub podrzędny urząd certyfikacji z 2048-bitowymi modułami RSA i SHA-256 ...
(Zobacz także, co nie działało dla mnie poniżej).
Oto przykład sprawdzania poprawności certyfikatu serwera za pomocą publicznego głównego urzędu certyfikacji klasy 3 za pomocą OpenSSL
s_client
:Wcześniej powiedziałem: „U góry katalog główny urzędu certyfikacji jest samopodpisany, a problem i temat są takie same” . Oto zrzut tego katalogu głównego urzędu certyfikacji z podpisem własnym, w którym podmiot i wystawca są tacy sami. Pokazuje także 1024-bitowe moduły i sha1WithRSAEncryption.
Wcześniej powiedziałem: „Punkt kontrolny musi uzyskać nowy certyfikat serwera wydany w ramach certyfikatu (łańcucha) o współczesnych parametrach, takich jak CA z 4096-bitowymi modułami RSA i SHA-256. Lub Podrzędny CA z 2048-bitowymi modułami RSA i SHA-256 ... ” .
Oto, co mi nie zadziałało: zrootowanie lub zakotwiczenie zaufania w silniejszym podrzędnym urzędzie certyfikacji
VeriSign Class 3 Public Primary Certification Authority - G5
, a nie w słabszym 1024-bitowym głównym urzędzie certyfikacji.EDYCJA : jest to spowodowane błędem w OpenSSL 1.0.2a i niższych. Zostało to naprawione w OpenSSL 1.0.2b. Zobacz Oczekiwane zachowanie w celu weryfikacji, kiedy podwładny w łańcuchu jest awansowany na samopodpisanego roota?
Problem praktyczny polega na ponownym wystawianiu przez firmę Symantec certyfikatu o tej samej nazwie i tym samym kluczu publicznym, więc nazwa wyróżniająca , identyfikator klucza podmiotu i identyfikator klucza urzędu nie uległy zmianie; ale tylko zmiana numeru seryjnego .
Znalazłem go poniżej ze względu na różne numery seryjne między certyfikatem wysłanym w łańcuchu a tym pobranym z witryny Symantec. Potem stało się jasne, że wydany ponownie certyfikat został zmieniony z Podrzędnego urzędu certyfikacji na Główny urząd certyfikacji.
Możesz użyć
-showcerts
OpenSSL,s_client
aby zobaczyć certyfikaty w łańcuchu:To, co zwykle robię, to skopiowanie certyfikatu zakodowanego w PEM do łańcucha, a następnie
pbpaste
wklejenie go do terminala i potokowanie go do OpenSSLx509
. Na przykład tutaj sąVeriSign Class 3 Public Primary Certification Authority - G5
wysyłane Poziom 2 jako część łańcucha:źródło
Można to naprawić, wpisując about: config w pasku adresu, a następnie wybierając „Będę ostrożny, obiecuję!” przycisk. W tym momencie kliknij dwukrotnie opcję security.tls.insecure_fallback_hosts, a następnie dodaj adres, do którego próbujesz uzyskać dostęp.
Musiałem usunąć „https: \” (wstaw oba ukośniki odwrotne, administrator usunął mój drugi) z mojego adresu, aby go uruchomić, ale wyniki mogą się różnić, więc może spróbuj obu.
Jest to poprawne od wersji Firefox 43.0.1.
źródło
security.tls.insecure_fallback_hosts
tak nie było. Później w komentarzu napisano, że problem był po stronie serwera. Serwer zamykał połączenia.Jeśli spojrzysz na publiczny główny urząd certyfikacji VeriSign klasy 3 - G5 dostarczony wraz z
openssl s_client ... -showcerts
oraz publiczny główny urząd certyfikacji VeriSign klasy 3 - G5 udostępniony do pobrania, zobaczysz, że są to różne certyfikaty. Dlatego Verisign ponownie wydało certyfikat z tą samą nazwą wyróżniającą i podmiotowym kluczem publicznym .Wersja łańcuchowa publicznego głównego urzędu certyfikacji VeriSign klasy 3 - G5 ma następujący numer seryjny i nie jest podpisana przez siebie (zauważ, że podmiot i wystawca różnią się):
Pobrana wersja z Symantec certyfikatów głównych z VeriSign Class 3 Public Primary Certification Authority - G5 ma następujący numer seryjny, i to jest autopodpisywany (zawiadomienie Temat i Emitent są takie same):
Naprawdę jest tylko jedna poprawka tutaj.
Punkt kontrolny powinien przestać wysyłać starą wersję Publiczny główny urząd certyfikacji VeriSign klasy 3 - jednostka podrzędna G5 w łańcuchu.
Jest tak, ponieważ w praktyce te ścieżki weryfikacji i wyboru certyfikatów będą mylone, ponieważ stary certyfikat G5 i nowy certyfikat G5 są zbyt podobne. Są zbyt podobne, ponieważ używają tej samej nazwy wyróżniającej i tego samego identyfikatora klucza podmiotu / identyfikatora klucza organu .
Teoretycznie możesz wyodrębnić stary certyfikat G5 z łańcucha wysłanego przez serwer i umieścić go w sklepie Mozilla Trust Store. Ale mocno podejrzewam, że dezorientuje to agentów użytkowników próbujących zbudować ścieżkę, ponieważ jedyną zmianą jest numer seryjny.
Aby zrozumieć zamieszanie, spójrz na RFC 4158 i jak wybrać certyfikat. Jednym ze sposobów jest
{Distinguished Name, Serial Number}
krotka. Ale weryfikowany certyfikat nie zawiera numeru seryjnego wystawcy. Zawiera tylko nazwę wyróżniającą i identyfikator klucza urzędu .Sekcja 3.5.12 Identyfikatory kluczowych kluczy (KID) określa:
Ale nie jest to wymagane i brakuje go w magazynie dostarczonym przez Symantec. Aby zobaczyć to z pierwszej ręki, zrzuć pośredni poziom 1 wysłany w łańcuchu. Nazywa się VeriSign Class 3 Secure Server CA - G3 . Zauważ, że ma identyfikator klucza urzędu , ale nie ma numeru seryjnego :
źródło