Чтобы получить результат, подобный вашему снимку, т. Е. Как «Изменения не разрешены», так и «Подпись LTV включена» без какой-либо более поздней подписи или отметки времени документа, вам необходимо
- либо уже включитьвсе материалы LTV, которые валидатор Adobe требует в вашей оригинальной подписанной ревизии
- или в режиме подписи, который позволяет добавлять материалы LTV, несмотря на то, что изменения не допускаются.
К сожалению, последнееКажется, вариант еще не поддерживается должным образом Adobe Acrobat Reader.
Подробнее см. в следующих разделах.
Включить весь материал LTV в оригинальную подписанную ревизию
Прежде всегоэто не всегда возможно.Если вы хотите, чтобы материал LTV был в оригинальной подписанной ревизии, он должен быть частью подписанных данных, поэтому вы должны собрать его до подписания .Однако во многих установках, использующих службы удаленной подписи, вы не знаете, какой именно сертификат подписи будет использоваться до фактического запроса подписи.
Если это возможно, то есть, если вы знаете сертификат подписи заранееВы можете использовать класс AdobeLtvEnabling
из этого ответа о переполнении стека , чтобы включить такую информацию:
PdfStamper stamper = PdfStamper.createSignature(...);
AdobeLtvEnabling adobeLtvEnabling = new AdobeLtvEnabling(stamper);
OcspClient ocsp = new OcspClientBouncyCastle();
CrlClient crl = new CrlClientOnline();
adobeLtvEnabling.addLtvForChain(YOUR_SIGNER_CERTIFICATE, ocsp, crl, PdfName.A);
adobeLtvEnabling.outputDss();
[...preparing your signature...]
MakeSignature.signDetached(...);
( CreateSignatureComodo test testCreateLtvNoChangesAllowedCertification
)
Для этого вам, возможно, придется сделать методы AdobeLtvEnabling
addLtvForChain
и outputDss
общедоступными, поскольку AdobeLtvEnabling
изначально не предназначалось для использования таким образом.
Результат:

Используйте режим подписи, который позволяет добавлять материал LTV, но не более
В качестве альтернативы вы можете подписать свой PDFтаким образом, что позднее возможно добавление материала LTV, несмотря на сертификацию «изменения не разрешены».
Для начала необходимо использовать механизм, впервые указанный для подписей PAdES, если вы хотите добавитьLТВ материал в PDF после подписи, для которого он предназначен.Хотя этот механизм был включен в ИСО 32000-2, он не доступен в простом контексте ИСО 32000-1.Поскольку ваш скриншот относится к Adobe Acrobat, это не должно быть проблемой для вас.
Этот механизм - хранилище документов .И класс iText LtvVerification
, и класс AdobeLtvEnabling
из этот ответ о переполнении стека заполняют такие хранилища в PDF.
Разрешено ли добавлять эти хранилища безопасности документов, несмотря насертификация "без изменений"?- Это зависит ...
Если ваш PDF - это PDF-2.0: да.ISO 32000-2 характеризует изменения, разрешенные или запрещенные какой-либо сертификацией, такой как:
Изменения в PDF, которые являются инкрементными обновлениями, которые включают только данные, необходимые для добавления DSS 12.8.4.3, «Document Security Store».(DSS) "и / или метки времени документа 12.8.5," Словарь меток времени документа (DTS) "к документу не должен рассматриваться как изменение документа, как определено в следующих вариантах.
(ISO 32000-2, Таблица 257 - Записи в словаре параметров преобразования DocMDP)
Если ваш PDF является PDF-1.x с включенными расширениями PAdES: да.ETSI EN 319 142-1 требует
ограничения DocMDP (см. ISO 32000-1 1 , пункт 12.8.2.2) не должны применяться к инкрементным обновлениям документа PDF, содержащего DSSсловарь и связанные VRI, Certs, CRL и OCSP.
...
При оценке ограничений DocMDP (см. ISO 32000-1 1 , пункт 12.8.2.2)наличие элемента словаря меток времени документа следует игнорировать.
(ETSI EN 319 142-1 V1.1.1, раздел 5.4 Аттестационные данные и атрибуты архивных данных валидации)
Если ваш PDF-файл представляет собой обычный PDF-1.x, однако: нет!
Если вы хотите использовать эту опцию и добавить информацию о LTV после подписания, убедитесь, что ваш изначально сертифицированный PDF-файлявляется PDF-2 или имеет как минимум расширения PAdES.
Хотя iText 5 не поддерживает PDF-2, при создании подписи в стиле PAdES добавляются расширения PAdES.
Таким образом, если вы сертифицируете стиль PAdES, вы сможете включить LTV-подпись, даже еслисертификация «изменения не допускаются».
Поддержка Adobe Acrobat Reader DC 2019.008.20080
Проведя некоторые тесты, расширяя разрешенный без изменений сертифицированный PDF-файл только с информацией LTV, при этом PDF-файл либопомеченный как PDF-1.7 с соответствующими расширениями ETSI и Adobe или как PDF-2.0, похоже, что Adobe Acrobat еще не полностью поддерживает ни ETSI EN 319 142-1, ни ISO 32000-2: во всех тестах сертификация считалась нарушенной, см., CreateSignatureComodo test testCreateNoChangesAllowedCertificationAndLtv
.
Таким образом, в настоящее время, чтобы получить документ с разрешенной LTV сертификацией, не допускающей изменений, и чтобы Adobe Acrobat распознал это, нужно иметь толькопервый вариант выше, то есть включение всех материалов LTV в оригинальную подписанную ревизию.
Обходным путем может быть создание сертификата с разрешенным заполнением формы, затем добавление информации LTV, а затем подписание с другим (утверждение) подпись, которая изменяет документ на «без изменений» через свой словарь блокировки поля и преобразование FieldMDP, ср. CreateSignatureComodo test testCreateCertificationAndLtvAndNoChangesAllowed
.Поскольку инкрементное обновление этой подписи может быть удалено знающим человеком, это далеко не идеально.
Результат для обхода:
