Jak naprawić niepełny łańcuch SSL

29

Mam zainstalowany certyfikat Go Daddy SSL i działa dobrze wszędzie oprócz Androida.

https://www.ssllabs.com/ssltest/analyze.html mówi, że łańcuch jest niekompletny, a po przepełnieniu stosu czytam, że łańcuch SSL w niewłaściwej kolejności zawiedzie na Androidzie.

Ale jak mam to uporządkować? Na moim serwerze? Sam certyfikat SSL musi zostać ponownie wygenerowany? Przenieś rzeczy na FTP?

Jon
źródło

Odpowiedzi:

19

Po odpowiedzi na pytanie Zakjana, miałem problem, gdy próbowałem użyć jquery do wykonania żądania AJAX na moim nowo bezpiecznym serwerze, w widoku internetowym Androida. Działa w przeglądarce, ale nie w mojej aplikacji.

Korzystałem z tej strony: https://certificatechain.io/

Wkleiłem tekst podpisanego pliku .crt, który wróciłem z Comodo (PositiveSSL), i dało mi to podsumowanie wszystkiego, czego potrzebowałem. Zapisałem go jako moją domenę + „chain.crt” (patrz poniżej)

Następnie w moich konfiguracjach Apache wprowadziłem coś takiego dla tego konkretnego wirtualnego hosta:

SSLEngine On
SSLCertificateFile /etc/ssl/localcerts/example_com.crt
SSLCertificateKeyFile /etc/ssl/localcerts/example.com.key
SSLCACertificateFile /etc/ssl/localcerts/example.com.chain.crt

Po tym, widok strony internetowej mojej aplikacji na Androida nie miał problemu z użyciem ajax do POST na moim serwerze. Wypróbowałem to na 2 rzeczywistych urządzeniach, jednym z systemem 2.3.4, jednym z systemem 4. coś. I na emulatorze działającym 2.3. Wszystko działało.

Mam nadzieję, że to pomoże.

Richard
źródło
1
Kluczem było dla mnie dodanie SSLCACertificateFiledyrektywy i skierowanie jej do pliku CA, który dał mi mój organ. Nie działałoby, jeśli po prostu połączyłem pozostałe certyfikaty z plikiem certyfikatu.
Alex W
W starszych aplikacjach zamiast SSLCACertificateFile można użyć SSLCertificateChainFile (na wypadek, gdybyś szukał tego klucza w swoich konfiguracjach i nie mógł go znaleźć).
dr0i
Niesamowicie, ale odpowiedź @Richard korzysta ze strony certificatechain.io, a strona mówi „... zainspirowany przez cert-chain-resolvera Jana Žáka”, który odpowiedział na to pytanie tutaj: superuser.com/a/866523/92500 , dzięki @zakjan!
Andrés Morales,
To SSLCACertificateFilebył wiersz, za którym tęskniłem. Początkowo zakładałem, że mój urząd certyfikacji jest zbyt nowy, ponieważ SSL działał na żądanie niektórych przeglądarek / systemów operacyjnych, ale nie innych. Korzystanie z decoder.link/sslchecker pomogło wyjaśnić, że moja konfiguracja była nieprawidłowa, a ta odpowiedź miała poprawkę. Dziękuję Ci!!
josephdpurcell
9

Łańcuch znajdował się w pliku CRT, na którym działał oryginalny protokół SSL.

Dla GoDaddy jest drugi certyfikat - gd_bundle.crt

Skopiuj te informacje i dodaj je do crt zainstalowanego na serwerze.

Więc oryginalny crt na serwerze miał 1 certyfikat, a potem będzie miał 3 na tym samym pliku. To jest łańcuch.

Nadal mam problemy z łańcuchem zakotwiczenia na ssllabs.com, ale to nie jest problem, tylko opcja pozostawienia lub wyłączenia - zgodnie z - /security/24561/ssltest-chain-issues -contains-anchor / 24566 # 24566

Jon
źródło
2
Aby pozbyć się problemów z łańcuchem, usuń ostatni certyfikat z gd_bundle.crt
sanmai
7

Możesz rozwiązać problem niepełnego łańcucha certyfikatów ręcznie, łącząc wszystkie certyfikaty z certyfikatu z zaufanym certyfikatem głównym (wyłącznie, w tej kolejności), aby zapobiec takim problemom. Uwaga: zaufany certyfikat główny nie powinien tam być, ponieważ jest już zawarty w głównej bazie certyfikatów systemu.

Powinieneś być w stanie pobrać certyfikaty pośrednie od emitenta i złączyć je razem. Przy okazji napisałem skrypt do automatyzacji procedury, potrzeba certyfikatu do wygenerowania danych wyjściowych poprawnie powiązanych łańcuchów. https://github.com/zakjan/cert-chain-resolver

zakjan
źródło
To brzmi jak rozwiązanie, które tylko „podstępnie” podrywa lokalną maszynę do myślenia, że ​​certyfikat jest poprawnie skonfigurowany.
Alex W
Nie. Pakiet certyfikatu wyjściowego powinien zostać przesłany na serwer, który wysyła zawartość strony internetowej. Każdy klient otrzyma certyfikat wraz z półproduktami.
zakjan