我们的网站使用iTextSharp和BouncyCastle生成PDF并以数字方式对其进行签名。
我们被告知,我们不能使用网站的SSL证书签署PDF,我们需要一个特殊的PDF签名证书(因为Adobe只信任某些根)。获得网站使用的证书(即生成的文档的自动编程签名)的唯一方法是获得一个物理硬件设备,该设备可以访问证书的私钥。显然这个硬件设备花费了很多钱。
我们真的需要花费数千美元来签署PDF才能被Adobe信任吗?
答案 0 :(得分:4)
从技术角度来看,您可以将任何X.509证书与私钥一起使用,并正确设置密钥用法扩展以对文档进行签名。但是,验证方(通常是Adobe Reader)只会信任某些证书。 Adobe要求Adobe Reader接受的证书是按照他们的要求发布的,其中之一就是通过将私钥放到硬件上来保护私钥。
可以通过告诉Reader使用Windows证书存储验证证书,将自定义根添加为受信任的根等来调整Adobe Reader以接受其他证书,但这需要在客户端(阅读器)端执行额外操作。
此外,您还没有找到证书颁发机构,它会向您出售适合数据签名的证书,而无需您为硬件设备支付任何费用。为什么会这样? “垄断”就是答案。 Adobe已经用PDF和读者创造了一种垄断,现在让合作伙伴(和他们自己)滥用它。
USB令牌的成本约为50美元(批量购买时费用更低),但您需要向CA支付10倍以上的费用才能将此令牌交付给您。这笔费用不是为了验证你,而是为了垄断收费。
答案 1 :(得分:0)
不,没有必要使用硬件来签署PDF。看起来有人试图用一点点钱把你赶走:)
http://www.pdflib.com/products/plop-ds/是可用于通过软件签署PDF的商业产品示例。
TCPDF(http://www.tcpdf.org/)是PHP动态编写PDF的公共库,内置了PDF签名。它是开源的=)有关于如何签署PDF的示例代码。