Problem ze zrozumieniem weryfikacji łańcucha certyfikatów SSL

Moja aplikacja używa protokołu SSL do bezpiecznej komunikacji z serwerem i ma problem z weryfikacją łańcucha certyfikatów. Łańcuch wygląda tak:

Urząd certyfikacji bezpiecznego serwera Entrust.net -> DigiCert Global CA -> * .ourdomain.com

Używamy magazynu certyfikatów wyciągniętego z Mozilli. Zawiera certyfikat Entrust.net, ale nie certyfikat DigiCert Global CA.

Rozumiem, że pośredniemu autorytetowi nie trzeba ufać, dopóki uprawnienie root jest, ale weryfikacja nie powiedzie się:

% openssl verify -CAfile mozilla-root-certs.crt ourdomain.com.crt
error 20 at 0 depth lookup:unable to get local issuer certificate

Czy więc muszę wyraźnie ufać DigiCert Global CA, aby weryfikacja przebiegła? To wydaje się złe. Ale powiedz mi!

EDYTOWAĆ: Teraz rozumiem, że plik certyfikatu musi być dostępny dla OpenSSL z przodu. Coś takiego działa:

% openssl verify -CAfile mozilla-root-certs.crt -untrusted digicert.crt ourdomain.com.crt
ourdomain.com.crt: OK

Dzięki temu mogę dostarczyć kopię CA DigiCert bez wyraźnego stwierdzenia „ufam”, cały łańcuch nadal wymaga weryfikacji.

Ale z pewnością przeglądarki takie jak Firefox nie zawsze będą dostarczane z kopią każdego pojedynczego certyfikatu, którego kiedykolwiek będą potrzebować. Zawsze pojawią się nowe urzędy certyfikacji i chodzi o to, aby użyć zabezpieczeń certyfikatu głównego, aby upewnić się, że wszystkie pośrednie urzędy certyfikacji są ważne. Dobrze? Więc jakrobi ta praca? Czy to naprawdę takie głupie, na jakie wygląda?

questionAnswers(2)

yourAnswerToTheQuestion