Проблемы с пониманием проверки цепочки сертификатов SSL
Мое приложение использует SSL для безопасной связи с сервером, и этоВозникли проблемы при проверке цепочки сертификатов. Цепочка выглядит так:
Entrust.net Безопасный центр сертификации серверов -> DigiCert Global CA -> * .ourdomain.com
Мы используем хранилище сертификатов, извлеченное из Mozilla. Он содержит сертификат Entrust.net, но не сертификат DigiCert Global CA.
Насколько я понимаю, промежуточный авторитет неНужно доверять, пока есть полномочия root, но проверка не проходит:
% openssl verify -CAfile mozilla-root-certs.crt ourdomain.com.crt
error 20 at 0 depth lookup:unable to get local issuer certificate
Так что мне нужно явно доверять DigiCert Global CA, чтобы пройти проверку? Это кажется неправильным. Но ты мне скажи!
РЕДАКТИРОВАТЬТеперь я понимаю, что файл сертификата должен быть доступен для OpenSSL заранее. Примерно так работает:
% openssl verify -CAfile mozilla-root-certs.crt -untrusted digicert.crt ourdomain.com.crt
ourdomain.com.crt: OK
Это позволяет мне предоставить копию DigiCert CA без явного указания:Я верю в этовся цепочка еще нуждается в проверке.
Но наверняка браузеры, такие как Firefox, выигралине всегда поставляется с копией каждого сертификатакогда-нибудь понадобится. Там'Всегда будут новые CA, и смысл в том, чтобы использовать безопасность корневого сертификата, чтобы убедиться, что все промежуточные CA действительны. Правильно? Так какделает эта работа? Это действительно так глупо, как выглядит?