Отзыв не может быть проверен
Но когда я открываю тот же документ на компьютере моего босса, он показывает, что подлинность подписи не может быть проверена даже после того, как сертификат был доверенным, но если я открываю свойства сертификата, он говорит, что сертификат действителен и отзыв был выполнен успешно. Что может быть причиной этого?
Поскольку я не могу проверить компьютер вашего босса, это наверняка будут догадки. Так...
Даю ему шанс
Вы говорите, что сертификат был доверенным, но задействовано много сертификатов. Итак, кому из них вы доверились? Судя по твоему скриншоту
![На компьютере моего начальника это показывает, что личность подписавшего не может быть проверена, но на вкладке отзыва, когда я просматриваю свойства сертификата, указано, что сертификат подписи действителен](https://i.stack.imgur.com/7KCWd.png)
вы не доверяете сертификату пользователя (в противном случае этот сертификат не проверялся бы на соответствие CRL, а был бы признан доверенным без дальнейших проверок).
Возможно, вы доверяете корневому сертификату ЦС на компьютере вашего начальника. Если да, необходимо проверить не только сертификат конечного пользователя, но и промежуточный сертификат ЦС (SAPO Class 4 CA) ! Вероятно, в этом и заключается ваша проблема
Таким образом, когда вы находитесь на вкладке отзыва, выберите промежуточный сертификат и посмотрите, можно ли выполнить для него проверку отзыва. Если нет, то это проблема, с которой вы столкнулись.
ПС: это не так
ОП проверил идею, упомянутую выше, но
Поэтому я вернулся и проверил все сертификаты, и кажется, что проверка CRL выполняется, как и ожидалось.
Таким образом, это не так просто, как я думал выше
разница в настройке заключалась в том, что я доверял сертификату, которым я подписался, в качестве корневого сертификата, поэтому он отображался как успешно подписанный на моей машине, теперь я настроил свои параметры безопасности, чтобы получить те же результаты, что и на компьютере моего босса. .
Итак, разница между результатами на этих двух компьютерах объяснена.
Чтобы определить, связана ли проблема с определением статуса отзыва сертификата ЦС или вашего пользовательского сертификата, не могли бы вы еще раз изменить настройки и доверять сертификату ЦС?
Если после этого изменения проблема остается, проблема, скорее всего, связана с вашим пользовательским сертификатом и проверкой статуса его отзыва. Если он исчезнет, проблема, скорее всего, связана с проверкой статуса отзыва сертификата ЦС.
Теперь я доверяю ЦС, у него все еще есть та же проблема, но если я доверяю сертификату пользователя, пометив флажок «Использовать этот сертификат как доверенный корень» и «Сертифицированные документы», подпись отображается как действительная, а LTV включен, но только если я помечаю его как корень.Во всех остальных случаях в подписи есть предупреждение о том, что проверки отзыва не проводились.
Если вы сразу доверяете своему пользовательскому сертификату, подпись проверяется положительно без дальнейших церемоний. В конце концов, вы доверяете этому сертификату...
Помимо этого, уже есть проблема при проверке сертификата пользователя. Я постараюсь исследовать больше.
PPS: Вот почему...
Если ничего не помогло, начните проверять подпись или так я думал после того, как не смог найти ничего действительно плохого в сертификате. Я открыл подпись в утилите ASN.1 Dump и...
...
<30 42>
2174 66: SEQUENCE {
<06 09>
2176 9: OBJECT IDENTIFIER '1 2 840 113583 1 1 8'
<31 35>
2187 53: SET {
<30 33>
2189 51: SEQUENCE {
<A0 31>
2191 49: [0] {
<30 2F>
2193 47: SEQUENCE {
<2D 2D>
2195 45: Unknown (Reserved) {
<2D 2D>
2197 45: Unknown (Reserved) {
<2D 42>
2199 66: Unknown (Reserved) {
<45 47>
2201 71: [APPLICATION 5]
: 'IN X509 CRL-----.MIIfZzCCHU8CAQEwDQYJKo0...*.H..'
: '............0...Ix<..N+'
: Error: IA5String contains illegal character(s).
Error: Inconsistent object length, 7 bytes difference.
: }
Error: Inconsistent object length, 30 bytes difference.
: }
Error: Inconsistent object length, 32 bytes difference.
: }
Error: Inconsistent object length, 32 bytes difference.
: }
Error: Inconsistent object length, 32 bytes difference.
: }
Error: Inconsistent object length, 32 bytes difference.
: }
Error: Inconsistent object length, 32 bytes difference.
: }
Error: Inconsistent object length, 32 bytes difference.
: }
Error: Inconsistent object length, 32 bytes difference.
: }
...
Таким образом, есть синтаксические ошибки в самой подписи, точнее внутри атрибута информации об отзыве сертификата подписи PDF (OID 1 2 840 113583 1 1 8).
(Глядя на этот регион с помощью другого средства просмотра, можно увидеть текст (!) "-----BEGIN X509 CRL-----" - кажется, что текстовое представление CRL здесь недопустимо.)
Таким образом, Adobe Reader при попытке проверить отзыв сертификата во время проверки подписи проверяет атрибут подписи, который можно использовать для добавления информации об отзыве уже во время подписания, находит неверное значение атрибута и, кажется, останавливает проверку проверки с ошибкой...
Код, используемый для заполнения окна сведений о сертификате, кажется, закодирован отдельно.
Почему так?
Может возникнуть вопрос, каким образом текстовое представление CRL оказалось включенным в атрибут информации об отзыве сертификата подписи PDF вашей подписи.
Я просмотрел этот встроенный «CRL». Он в формате PEM и обрезается после 47 байт. Поэтому я получил доступ к CRL по URL-адресу, указанному в сертификате (https://pki.trustcentre.co.za/crl/sapo_c4ca.crl), и я действительно получил (полный) CRL в текстовом формате PEM. Код создания подписи, похоже, пытался включить его как есть, но он отключился.
Неправильно ли PKI предоставляет этот CRL в формате PEM, а не в формате DER? Или код создания подписи ошибается, предполагая найти CRL в кодировке DER в указанной позиции?
Текущая спецификация для сертификата инфраструктуры открытых ключей Интернета X.509 и профиля списка отозванных сертификатов (CRL) (RFC 5280) указывает:
Когда используется схема URI HTTP или FTP, URI ДОЛЖЕН указывать на один CRL в кодировке DER, как указано в [RFC2585].
(Раздел 4.2.1.13. Точки распространения CRL)< /эм>
Но это не говорит ничего эквивалентного о схеме HTTPS URI!
Поскольку PKI использует схему HTTPS, можно считать, что PKI соответствует букве RFC.
Несмотря на то, что схема HTTPS, по сути, является просто защищенным вариантом схемы HTTP, и поэтому PKI окончательно и без необходимости нарушает дух RFC, похоже, что она не нарушает его букву.
Таким образом, классы, извлекающие CRL (например, CrlClientOnline
в iText), должны лучше проверять формат полученного CRL и при необходимости преобразовывать его.
С поддержкой LTV или без поддержки LTV
Объяснение
Еще одна странная вещь, для подписи с отметкой времени, когда я добавляю корневой сертификат в качестве доверенного корневого сертификата в Adobe, он говорит, что LTV не включен, но если я добавляю сам сертификат GlobalTrustFinder в качестве доверенного сертификата, он говорит, что LTV включен. Есть ли причина, по которой он это сделает?
Это довольно очевидно:
Если вы доверяете корневому сертификату, отзыв должен быть проверен для промежуточного ЦС и сертификатов конечного объекта. Поскольку в ваш документ не встроены CRL или ответы OCSP, ваша отметка времени не поддерживает LTV.
С другой стороны, если вы явно доверяете сертификату конечного объекта, тому самому сертификату, который создал отметку времени, валидатор Adobe немедленно доверяет отметке времени. Нет необходимости проверять отзыв явно доверенного сертификата... Таким образом, в этом случае включена отметка времени LTV.
(Термин «LTV включен» — это термин Adobe с очень переменным значением. Сведения об этом термине и другой терминологии, связанной с LTV, см. в разделе Общие сведения в этот ответ и другие ответы, на которые есть ссылки оттуда,)
Последующие вопросы
Что касается временных меток, я немного запутался, я следовал примерам кода в сообщении, которое вы рекомендовали, и код, который я использовал, был вариантом этого, но в принципе таким же, почему ответы CRL и OCSP не были встроены ?
Большая разница заключается в том, что код в моем указанном ответе делает не применять отметку времени документа, он просто добавляет информацию, связанную с проверкой (сертификаты, CRL, ответы OCSP).
Собственный термин Adobe «с поддержкой LTV» относится к подписи документа или отметке времени документа, для которой «вся информация, необходимая для проверки всех соответствующих подписей (включая подписи CRL, Ответы OCSP и метки времени, используемые в процессе проверки) в контексте настроек безопасности проверяющего Adobe Reader содержатся в PDF-файле». Ваш код после добавления информации, связанной с проверкой, добавляет метку времени документа, поэтому информация, необходимая для проверки этой метки времени, как правило, еще не доступна в PDF.
Стандартный термин ETSI «PDF-документ с LTV» относится к подписанному PDF-файлу с информацией, связанной с проверкой (например, PDF-файл с поддержкой LTV) плюс отметка времени окончательного документа.
Пример кода iText, который вы использовали, пытается создать «PDF-документ ETSI с LTV» и, следовательно, должен быть изменен, чтобы вместо этого попытаться создать PDF-файл, в котором все подписи документа и отметки времени имеют Adobe «LTV-enabled».
Что касается добавления crls и ocsps, насколько я понял, для добавления LTV нужно добавить валидацию ко всем подписям в документе и метку конечного времени документа, как я это сделал в приведенном мной коде, разве это не кейс?
Существуют разные варианты использования в контексте LTV, и в зависимости от конкретного варианта использования может потребоваться добавить различную информацию.
person
mkl
schedule
12.11.2015