我有一个低容量(<500个PDF/年)的应用程序,用于在Linux上使用Java中的iText对PDF文件进行自动数字签名。
我已经让iText使用我的SSL证书向PDF添加了数字签名。这是一个有效的方法来证明PDF是由我的域(例如服务器)生成的吗?它是否可以在Adobe Reader中以某种方式获得显示“信任”的绿色复选标记?
如果不是,我应该使用一个用于PDF的证书(例如,不是我的SSL证书),这样,当用户打开PDF文档时,指示“信任”的绿色小勾号自然出现。
http://itextpdf.com/book/digitalsignatures这本书很好地向我介绍了这个主题(我在这方面的经验很少)。
这本书谈到了一个安全的Luna设备(一个HSM),但它太贵了。我只需要一个最小的解决方案,月神有很多的钟声和口哨。Luna PCIe设备更便宜,但我不需要任何功能,只需要提供一个可以用来签名的证书。此外,基于USB的SafeNet iKey设备似乎只在Windows设备上销售。有人在Linux上使用iKey吗?有可能吗?其他公司提供基于USB的设备在Linux上工作吗?
我正在寻找一个最小的解决方案,为Linux上的自动数字签名PDF服务。我相信很多小企业也有类似的需求。我只是想利用现有的知识。人们如何解决这个问题?
我看到的自动化此过程的解决方案假定大型公司使用Adobe Live Cycle,并相应地定价(例如,请参见https://www.globalsign.com/pdf-signing/compare-pdf-signing.html)。但是小企业也需要自动化。
理想情况下,有人会出售类似于SSL证书的证书,但PDF文件除外。有这种事吗?
硬件(某种程度上)是一种需求(似乎是这样)吗?如果硬件是一个要求,是否有任何最低限度的解决方案(例如,除了启用数字签名之外的有限功能)?
希望有人能帮我从树上看到森林。传统的智慧是什么?
关于使用您的SSL证书签名:在未来的iText版本中,我们要求证书的密钥用法表明证书可以用于不可否认。目前,我们将检查密钥使用情况作为开发人员的责任,但在一个完美的世界中,您应该只使用适合于不可否认的证书进行签名,而您的SSL证书可能不允许这样做。
关于绿色复选标记:除非您可以要求PDF的使用者将证书的根证书添加到受信任身份列表中,否则您总是需要存储在硬件上的公钥/私钥来获得绿色复选标记。
关于HSM/USB密钥的价格。USB密钥要便宜得多,但通常是手动使用的(通常它们有一个限制,每秒只能签名一次)。我认为GlobalSign有一种在Linux上工作的键的味道。至于HSMs,我们的一位客户告诉我们,他从Utimaco买了一台,因为它不太贵(但我不知道他有多少预算或花了多少钱)。
没有价格信息,但可能是一个很好的阅读启发:http://www.opendnssec.org/wp-content/uploads/2011/01/a-review-of-hardware-security-modules-fall-2010.pdf
我正在尝试用Itext 5和BouncyCastle 1.48验证PDF签名。我的代码适用于许多已签名的pdf,但也适用于特定客户的某些pdf。这是我的Java代码 有时我会遇到这样的例外: JAVAlang.IllegalArgumentException:getInstance:org中的未知对象。蹦蹦跳跳。asn1。Asn1在组织中列举。蹦蹦跳跳。asn1。ASN1序列。组织上的getIns
我正在ASP.NET应用程序中使用iText7对PDF进行数字签名。我用的是vb,但我也能找到一个C#答案。我们使用GlobalSign DSS以使签名不作为未知(AATL)出现。 我从我们公司的SSL证书创建了一个pfx文件,我可以使用该文件对PDF文件进行签名,但我不明白如何使用从GlobalSign获得的东西来完成同样的事情。此服务要求发送一个十六进制编码的SHA256摘要,作为返回,我接收
我正在尝试用Itext 5.4和BouncyCastle 1.49验证PDF签名(它是通过Adobe Reader X用我的数字证书手动签名的)。 但是验证结果总是出乎意料的,下面是我的Java代码: 控制台显示:完整性检查OK?真
null null
我需要使用外部服务签署pdf文档,该服务将返回PKCS1签名。这意味着我必须在IExternalSignatureContainer实例中添加公钥。我使用iText 7进行整个签名过程。 在iText网站上有一个关于这种方法的很好的例子 我在一个文件中创建了整个演唱过程的示例。必需的引用: null 示例代码(为控制台应用程序准备好的一个文件中的两个类):
我正在遵循这些准则使用OpenSSL生成自签名证书。 有人有办法解决这个问题吗?该文件存在,并且其在conf文件中的路径名正确...