簡體   English   中英

使用SSL證書簽署PDF文件

[英]Using SSL certificate for signing PDF files

我的應用程序具有SSL證書,我想使用它對iText進行PDF文件的數字簽名。 證書的擴展名是.cer,由證書簽名機構(CA)提供。

問題是我無法將此.cer證書轉換為使用itext庫對PDF簽名時所需的java keystore。 我擁有的代碼是:

顯然,此代碼將引發無效的密鑰庫格式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文件。

首先,證書不是“ SSL證書”。 它們是x.509證書,其中一些可用於SSL / TLS身份驗證。 如果您擁有此類證書,則不能將其用於其他目的,包括PDF簽名。

接下來,.cer文件是證書的公共部分,它不包含私鑰。 您需要證書私鑰來簽署任何東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM