我的应用程序有一个 SSL 证书,我想用它来使用 iText 对 PDF 文件进行数字签名。证书的扩展名为 .cer,由证书签名机构 (CA) 提供。
问题是我无法将此 .cer 证书转换为使用 itext 库签署 PDF 时所需的 java 密钥库。我拥有的代码是:
这段代码显然会抛出Invalid keystore format IOException。
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(new FileInputStream("C:\\abc.cer"), "abcd".toCharArray());
String alias = (String) ks.aliases().nextElement();
PrivateKey key = (PrivateKey) ks.getKey(alias, "abcd".toCharArray());
java.security.cert.Certificate[] chain = ks.getCertificateChain(alias);
PdfReader reader = new PdfReader("C:\\test.pdf");
FileOutputStream fout = new FileOutputStream("C:\\signed.pdf");
PdfStamper stp = PdfStamper.createSignature(reader, fout, '\0');
PdfSignatureAppearance sap = stp.getSignatureAppearance();
sap.setCrypto(key, chain, null, PdfSignatureAppearance.WINCER_SIGNED);
sap.setReason("Test Reason");
sap.setLocation("Test Location");
sap.setVisibleSignature(new Rectangle(10, 10, 20, 20), 1, null);
stp.close();
请让我知道如何将 SSL 证书转换为 java 密钥库并将其用于签署 pdf 文件。