如何使用PEM文件对Java中的PDF进行数字签名?

如何使用PEM文件对Java中的PDF进行数字签名?,java,pdf,digital-signature,pem,Java,Pdf,Digital Signature,Pem,我已将数字证书导出到windows中受密码保护的PFX文件 如何用它对pdf进行数字签名?是一个很好的java API,用于处理pdf文件。 还有一个很好的文档和示例: 还有一个签署PDF文档的示例我们可以使用存储在各种格式文件、Windows CryptoAPI和通过PKCS 11在硬件设备上的证书来签署PDF文档。我正在使用Aspose PDF java sdk签署PDF。对于任何库,前两个步骤可能都是相同的 如果您还没有证书,请使用openssl生成ssl私钥。显然,这将发出警告,因为它不

我已将数字证书导出到windows中受密码保护的PFX文件

如何用它对pdf进行数字签名?

是一个很好的java API,用于处理pdf文件。 还有一个很好的文档和示例:


还有一个签署PDF文档的示例

我们可以使用存储在各种格式文件、Windows CryptoAPI和通过PKCS 11在硬件设备上的证书来签署PDF文档。

我正在使用Aspose PDF java sdk签署PDF。对于任何库,前两个步骤可能都是相同的

如果您还没有证书,请使用openssl生成ssl私钥。显然,这将发出警告,因为它不是由CA签名的

openssl req -x509 -newkey rsa:2048 -keyout testkey.pem -out testcert.pem -days 365
接下来,将密钥转换为pkcs12格式的证书

openssl pkcs12 -name test -export -in testcert.pem -inkey testkey.pem -out test.pfx
最后,使用Aspose Pdf或其他库对Pdf进行签名

        PdfFileSignature pdfSignSingle = new PdfFileSignature();
        //Open the pdf
        pdfSignSingle.bindPdf(pdfFileInputStream);

        // Load the certificate using the com.aspose.pdf.PKCS1 object
        PKCS1 pkcs1 = new PKCS1(certificateFileInputStream, certificatePassword);
        pkcs1.setAuthority("Sample Person");
        pkcs1.setReason("I want to sign");
        pkcs1.setContactInfo("some contact info");
        pkcs1.setLocation("here");
        pkcs1.setShowProperties(false);

        // Apply the signature. (0,0) is in the lower left corner.
        pdfSignSingle.sign(1, true, new Rectangle(100, 100, 150, 50), pkcs1);
        // Apply the signature image
        pdfSignSingle.setSignatureAppearanceStream(imageFileInputStream);

        pdfSignSingle.save(pdfFileOutputStream);

仅仅证书是不够的,还需要私钥。或者您已经导出了这两个?包含私钥。是否有其他边界条件?开源?许可证限制?商业封闭源代码使用?