Удалить CA из списка доверенных ЦС, доверяя ему более старые сертификаты


4

Допустим, что какой-то центр сертификации изменил свою политику безопасности, и мы не доверяем ее новым сертификатам.

Есть ли удобный способ для организации удалить этот центр сертификации из своего списка доверенных ЦС, но все же отслеживать и доверять более старым действительным сертификатам, которые были выпущены?

+1

Отличный вопрос по теме Security.SE, который я раньше не видел. Добро пожаловать на сайт! 12 авг. 132013-08-12 20:45:37

  0

Является ли изменение политики сопровождается сменой сертификата ca? И какое программное обеспечение проверяет, какие сертификаты доверять? 12 авг. 132013-08-12 21:16:56

  0

@mkl, содержимое сертификата остается неизменным. Программное обеспечение является браузером, но вы можете предложить любой другой инструмент, если это уместно. 12 авг. 132013-08-12 21:38:36

2

Обычные сертификаты обработки программного обеспечения (например, веб-браузеры) не проверяются в прошлом; когда они рассматривают сертификат (например, для SSL-сервера), они хотят знать, достоверны ли содержимое сертификата . «Хранилища сертификатов», управляемые операционными системами, относятся к этой модели. «Подтверждение доверия» (так называемый «корневой ЦС») является либо доверенным, либо не доверенным. Нет понятия «это был доверял».

Validation в прошлом имеет смысл только в присутствии time stamps: документ подписан, и штамп времени применяется на подписи (или кодировку документа и его подписи). Временная метка должна быть проверена на текущую дату (поэтому сертификат TSA должен быть действительным сейчас), но тогда сама подпись и сертификат подписчика могут быть подтверждены на дату отметки времени. Это позволяет проверять сигнатуры даже после истечения срока действия соответствующих сертификатов, хотя для этого требуются также такие дополнительные объекты, как CRL или ответы OCSP; дополнительные временные метки могут потребоваться с регулярными интервалами. Существуют некоторые новые стандарты для такого процесса, например. PAdES (с «долгосрочным» форматом) или ERS (который касается только части временных штампов, но делает это хорошо).

В любом случае, такое использование требует понятия временных диапазонов прилагается к доверенным якорям. В настоящее время предпринимаются усилия (особенно в ЕС) для определения стандартного формата для этого (так называемый TSL) (ЕС действительно пытается найти не, чтобы сказать, что это список «хорошего корневого ЦС», но каждый это понимает так). Даты действия прикрепляются к каждому корневому ЦС в этом списке.

Некоторое программное обеспечение, которое делает валидацию в прошлом , может использовать хранилище сертификатов «доверенный корневой центр сертификации ОС» напрямую. Действительно, «доверительный якорь» номинально представляет собой комбинацию (отличительное имя X.500) и открытый ключ (см. RFC 5280, раздел 6.1.1, пункт (d)). Однако широко распространенной практикой является использование сертификатов в качестве формата кодирования для корневого центра сертификации. Такой сертификат будет включать имя и открытый ключ, но также и другие поля, в частности две даты для диапазона допустимости. Поэтому некоторые приложения будут использовать корневые ЦС даты как указание на временной диапазон, в течение которого корневому ЦС действительно нужно было доверять.

В этом контексте выполнимо то, что вы заботитесь. Действительно, достаточно изменить даты в корневом сертификате CA. Сначала экспортируйте его как «raw DER» (не PEM/Base64). Затем откройте какой-нибудь редактор двоичных файлов и измените даты в нем; они используют либо UTCTime, либо GeneralizedTime, поэтому их внутреннее представление основано на ASCII. UTCTime использует формат YYMMDDhhmmss (две цифры за год, два месяца и т. Д.); с GeneralizedTime, все похоже, за исключением четырех цифр за год (и может быть миллисекунды). Просто измените поля года, месяца и дня, чтобы они соответствовали вашим потребностям. После того, как сертификат был изменен, импортируйте его обратно в свой магазин доверия и удалите исходный. И вуаля! у вас есть корневой ЦС с измененными датами.

Конечно, изменение содержания сертификата таким образом нарушает подпись , которая была применена к сертификату. Но это корневой центр сертификации: он использует формат кодировки сертификата в качестве удобства, но это не настоящий сертификат. Подпись есть, потому что в формате сертификата есть необязательный слот для подписи, но ничего фактически проверяет эту подпись. Действительно, сертификат часто самоподписан. Поэтому нарушение подписи не должно иметь значения.

Повторяю, однако, что эти даты имеют значение только в контексте некоторого программного обеспечения, которое выполняет «валидацию в прошлом», поэтому все это зависит от того, что такое на самом деле такое программное обеспечение: корневые сертификаты CA в хранилище доверенных ОС даты действия (и вы можете изменить их «вручную», как описано выше), но программное обеспечение, которое прошло проверку, не обязательно использует эти даты для управления корневыми сертификатами ЦС. Он может использовать другой источник, например. TSL.