Мы добавили два сертификата CA — 1 корневой CA и 1 связанный промежуточный CA — в соответствующую ОС.трастовый магазин(/etc/ssl/certsна нашей SuSE 11), поскольку они не были предоставлены доверенным хранилищем ОС (и, вероятно, никогда не будут, поскольку их нет в репозитории).
Недавно эти два сертификата исчезли после автоматического обновления, что привело к тому, что клиенты больше не могли подключаться через TLS.
Оглядываясь назад, мы не уверены, сделали ли мы обычную перефразировку записей, т.е.
# c_rehash /etc/ssl/certs
ЕСЛИ бы мы не делали повторную переписку: Могло бы это стать причиной удаления соответствующих сертификатов во время обновления?
Или всегда ли существует риск потери сертификатов, если они добавляются в хранилище доверенных сертификатов вручную (в рассматриваемой системе есть две библиотеки SSL: openssl и mozilla-nss)?
решение1
Вы не добавляете подчиненные CA в хранилище trust-anchor. Вы только явно доверяете Root CA (trust-anchor) и неявно доверяете всем сертификатам, подписанным этим Root CA или любым подчиненным CA этого Root.
Если вы не можете построить цепочку между конечным субъектом и якорем доверия, проверьте, представляет ли конечный субъект все сертификаты между собой и якорем доверия. СмотритеRFC 5256 Раздел 7.4.2, в частности certificate_list
;, в котором указано, что все сертификаты (с опциональным корневым сертификатом) должны быть представлены в рукопожатии TLS.
Кстати, клиенты Microsoft имеют возможность загружать отсутствующие подчиненные сертификаты CA, если URL-адрес сертификата указан в расширении AIA. Другие, такие как Mozilla Firefox, не будут использовать это расширение, ссылаясь на конфиденциальность пользователей в качестве оправдания.
Обратите внимание, что если вы явно доверяете подчиненному CA, нет гарантии, что ваш клиент будет проверять отзыв своего сертификата. Если в будущем подчиненный будет скомпрометирован и отозван корневым CA, ваш клиент вполне может продолжать доверять ему. Это будет зависеть от реализации.