Как подписать PDF с подписью/сертификатом x.509

tl; dr: Я ищу инструмент CLI, который может быть загружен файлом x.509 и входным PDF файлом, а на выходе - подписанный PDF файл. Лучший сценарий для NodeJS

Привет. Я немного расстроен. Я ищу инструмент, который может подписывать файлы PDF с помощью командной строки. Я использую онлайн-сервис под названием handy-signatur.at(услуга от www.a-trust.at), которая генерирует сертификат x.509.

Я нашел страницу, в которой упоминаются несколько инструментов, но кажется, что все они устарели или я просто глуп, чтобы сделать они работают.

Я попробовал PortableSigner в частности, но для этого требуется Java 6, и я не мог заставить его работать с Ubuntu (версия для сервера и рабочего стола) 17.04.

/edit: Я не могу заставить PortableSigner работать, потому что Java 6 и 7 больше не доступны и, вероятно, даже не безопасны в использовании.

Есть ли какой-либо инструмент командной строки для подписывания PDF файлов?

Спасибо, ребята, так много!

Ответы

Ответ 1

Кажется, PortableSigner выполняет эту работу. введите описание изображения здесь

Если вас беспокоит поддержка Java 7. Попробуйте это с помощью Java 8, возможно, функции цифровой подписи все еще работают, потому что ничего не изменилось между 7 & 8

В качестве альтернативы, реализация сигнатурной программы с Java с использованием библиотек, таких как PDFBox или itext, относительно проста. Здесь у вас есть полный пример с pdfbox. Обратите внимание, что он имеет main

https://svn.apache.org/repos/asf/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateSignature.java

использование:

java org.apache.pdfbox.examples.signature.CreateSignature 
     <pkcs12_keystore> <password> <pdf_to_sign>

Ответ 2

Вы можете написать свои собственные скрипты Java, здесь ссылка http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/AcrobatDC_js_api_reference.pdf

var myEngine = security.getHandler( "Adobe.PPKLite" );
myEngine.login( "password", "/C/Users/username/Desktop/PrivateUser.pfx" );
var myInfo = {password: "password",
 reason: "SaveAs Test",
 mdp: "defaultAndComments"};
this.certifyInvisibleSign({
 oSig:myEngine,
 oInfo:myInfo,
 cDIPath:"/c/temp/sigSign.pdf",
 cLegalAttest: "Certified using JavaScript",
 bUI:false
});

Ответ 3

PortableSigner - это инструмент для цифровой подписи PDF файлов с сертификатами X.509.

Это приложение Java, поэтому требуется установка совместимой JRE (согласно веб-сайту: 1.6 и 1.7).

Вы можете сослаться на следующую ссылку, чтобы получить подробную информацию для тех же

http://portablesigner.sourceforge.net/

Ответ 4

Насколько я могу найти, openSSL - это единственный поддерживаемый инструмент, который может поддерживать ввод файла x.509 и PDF для создания подписанного PDF файла.

Смотрите справочную страницу openSSL для x509.

Я также нашел проект PortableSigner2, но он также не был текущим.