tl; dr:我正在寻找一个可以提供x.509文件和输入PDF的CLI工具,并且输出带有签名的PDF。 NodeJS的最佳方案
你好。我有点沮丧。我正在寻找一种可以使用命令行对PDF文件进行签名的工具。我使用名为handy-signatur.at(来自www.a-trust.at的服务)的在线服务生成x.509证书。我发现page提到了几个工具,但似乎所有工具都已过时,或者我只是愚蠢地让它们起作用。
我特别尝试过PortableSigner,但这需要Java 6而我无法在Ubuntu(服务器和桌面版)17.04上运行。
/ edit:我无法让PortableSigner工作,因为Java 6和7已不再可用,甚至可能无法安全使用。
是否有任何命令行工具可以签署PDF?
非常感谢你们!
答案 0 :(得分:8)
似乎PortableSigner做了工作。
如果您担心Java 7支持。尝试使用Java 8,可能数字签名功能仍然有效,因为7& 8
之间没有重要的变化或者,使用像PDFBox或itext这样的库实现Java签名程序相对容易。这里有一个完整的pdfbox示例。请注意,它有一个main
用法:
java org.apache.pdfbox.examples.signature.CreateSignature
<pkcs12_keystore> <password> <pdf_to_sign>
答案 1 :(得分:1)
您可以在此处编写自己的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
});
答案 2 :(得分:1)
据我所知,openSSL是唯一可以支持输入x.509文件和PDF以生成签名PDF文件的维护工具。
请参阅the openSSL man page for x509。
我还找到了一个PortableSigner2项目,但它也不是最新的。
答案 3 :(得分:0)
PortableSigner 是一种使用X.509证书对PDF进行数字签名的工具。
它是一个Java应用程序,因此需要安装兼容的JRE(根据网站:1.6和1.7)。
您可以参考以下链接获取相同
的详细信息答案 4 :(得分:0)
正如其他人所提到的,openssl命令可以做到这一点,但是花了我一段时间才找到一个例子。 这是一个带有示例的网站:
以及在链接不起作用的情况下的命令:
To sign:
openssl dgst -sha256 -sign mycert.key -out sign.txt.sha256 sign.txt
mycert.key是x509证书的私钥。
To verify:
openssl dgst -sha256 -verify mycert.pub -signature sign.txt.sha256 sign.txt
mycert.pub是证书的公钥(不是证书本身)。