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