【问题标题】:Rendering PDF documents containing visual signatures using Jpedal使用 Jpedal 渲染包含视觉签名的 PDF 文档
【发布时间】:2012-03-16 22:09:30
【问题描述】:

我正在使用 Jpedal(LGPL 版本 4.48b55)渲染包含签名的文档页面,并激活了视觉表示。但是,这些签名出现时带有一个过分的问号和“签名未验证”文本。

如果我通过 Adob​​e Acrobat Reader 可视化文件,我会看到一个绿色勾号和一条说明“签名有效”的文字(因为我在列表中包含了签名的证书颁发机构)。

有没有办法强制 jPedal 使用有效证书颁发机构列表验证签名,从而使签名有效?

【问题讨论】:

  • 您是否将证书导入 java 密钥库?
  • 证书在 PDF 中还是在缓存中?
  • 根 ca 在系统密钥库中(在 CryptoAPI 中,因为我在 Windows 上工作),我是否需要将它包含到 jPedal 的 java 特定的密钥库中?
  • 打开文件时需要传入key/cert public void openPdfFile(String filename, Certificate certificate, PrivateKey key)
  • 这是商业版功能吗?我正在使用 LGPL 版本,但在 PDFDecoder o PDFReader API 中看不到该功能...

标签: java pdf digital-signature jpedal


【解决方案1】:

为了在 Java 中使用证书,您需要先将其安装在 Java Keystore 上。使用 Java 运行时提供的工具keytool 来完成此任务。

来自页面“The Most Common Java Keytool Keystore Commands”:

# Import New CA into Trusted Certs
keytool -import -trustcacerts -file /path/to/ca/ca.pem -alias CA_ALIAS -keystore $JAVA_HOME/jre/lib/security/cacerts

如果您希望您的应用程序直接使用操作系统中的密钥库,则必须为此指定一个特定的提供程序,而不是默认提供程序。

From the documentation:

Keystore 实现是基于提供者的。更具体地说, KeyStore 提供的应用程序接口是按照以下方式实现的 “服务提供者接口”(SPI)。也就是说,有一个 对应的抽象 KeystoreSpi 类,也在 java.security 包,它定义了“提供者”必须的 SPI 方法 实施。

还有:

有一个内置的默认实现,由 Sun 提供 微系统。它将密钥库实现为文件,利用 名为“JKS”的专有密钥库类型(格式)。

【讨论】:

  • 感谢您的提示。我导入成功了,可惜还是收到“Signature Not Verified”消息和问号...
  • 由于它是一个 LGPL 项目,我建议您进入代码,也许这样您可以更好地了解问题所在。
猜你喜欢
  • 2018-02-20
  • 2011-11-26
  • 2014-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多