如何使用 x.509 签名/证书对 PDF 进行签名

tl;dr:我正在寻找一个CLI工具,可以输入x.509文件和输入PDF,然后输出签名的PDF。NodeJS 的最佳方案

嘿,你好。我有点沮丧。我正在寻找一种可以使用命令行对PDF文件进行签名的工具。我确实使用了一个名为 handy-signatur.at(来自 www.a-trust.at 的服务)的在线服务,该服务生成x.509证书。

我发现一个页面提到了几个工具,但似乎所有这些工具都过时了。

我特别尝试了PortableSigner,但这需要Java 6,我无法让它在Ubuntu(服务器和桌面版)17.04上运行。

/编辑:我无法让 PortableSigner 工作,因为 Java 6 和 7 不再可用,甚至可能不安全使用。

是否有任何命令行工具可以对PDF进行签名?

非常感谢你们!


答案 1

似乎便携式签名者做了这项工作。enter image description here

如果你担心Java 7支持。尝试使用Java 8,可能数字签名功能仍然有效,因为在7和8之间没有任何重要变化

或者,使用PDFBox或itext等库使用Java实现签名程序相对容易。这里有一个完整的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
});

推荐