我用从GlobalSign收到的通用串行总线令牌签署了一个PDF文件。但是我看不到Adobe的任何图标表明证书是有效的。
我从GlobalSign收到的USB令牌是一个可信任(安全/信任)证书。但我不确定为什么看不到可信/安全证书图标。
签名PDF如下所示:
我还可以从Adobe Acrobat DC看到这个图标的签名:
ICollection<ICrlClient> crlList = new List<ICrlClient> { new CrlClientOnline(chain) };
ICrlClient crl = new CrlClientOnline(chain);
IOcspClient ocsp;
ocsp = new OcspClientBouncyCastle();
//var sdf0= ocsp.GetEncoded(chain[0] , chain[1], "http://ocsp2.globalsign.com/gsalphag2");
PdfReader r = new PdfReader(hedefPDFpath + "Emre.pdf");
FileStream fos = new FileStream(hedefPDFpath + "Emre" + fi.Name, FileMode.Create);
PdfStamper stp = PdfStamper.CreateSignature(r, fos, '\0', null, true);
LtvVerification v = stp.LtvVerification;
AcroFields fields = stp.AcroFields;
List<String> names = fields.GetSignatureNames();
String sigName = names[names.Count - 1];
PdfPKCS7 pkcs7 = fields.VerifySignature(sigName);
if (pkcs7.IsTsp)
v.AddVerification(sigName, ocsp, crl, LtvVerification.CertificateOption.SIGNING_CERTIFICATE, LtvVerification.Level.OCSP_CRL, LtvVerification.CertificateInclusion.YES);
else foreach (String name in names)
v.AddVerification(name, ocsp, crl, LtvVerification.CertificateOption.WHOLE_CHAIN, LtvVerification.Level.OCSP_CRL, LtvVerification.CertificateInclusion.YES);
PdfSignatureAppearance sap = pdfStamper.SignatureAppearance;
MakeSignature.SignDetached(signatureAppearance, externalSignature, chain, crlList, ocsp, TsaCliente, estimatedSize, CryptoStandard.CMS);
执行主任在评论中澄清:
签名PDF的可靠性/可信度如何?蓝色丝带如何放置在pdf globalsign中。com/en/resources/CDS_OCSP_服务。pdf
因此,OP实际上是在努力按照GlobalSign在传单中的要求去做:
在他用GlobalSign设备和iTextSharp签署的文件上找不到确切的挂件。
这里有三个方面需要考虑:
根据PDF规范ISO 32000-1:
PDF文档可能包含以下标准类型的签名:
此处对使用权签名不感兴趣,因为它们本质上只是一种工具,通过它,可以为使用特定软件包生成的PDF激活PDF查看器中的额外功能,例如,为特定Adobe软件生成的PDF激活Adobe Reader中的功能。
另一方面,您可能对批准和认证签名都感兴趣。区别:
认证签名
批准签字
考虑到OP的图片,这张代表了批准签名:
这是一个认证签名:
iTextSharp可以创建这两种类型,参见PDFSignaturePearance。认证级别。
不过,考虑到您的代码,很明显您已经将PDF作为输入进行了签名,现在希望为之前的签名添加验证信息,然后自己签名。因此,您的签名不是文件中的第一个签名,因此不能是认证签名。
就像Adobe Reader的通用UI每隔几个主要版本就会发生变化一样,它用来表示签名验证结果的特定UI元素也会发生变化。
例如,对于您链接的GlobalSign文档,您至少可以在Adobe Reader 9上看到它所宣传的蓝色丝带条和蓝色玫瑰花结:
但在Adobe Reader DC中,它看起来不一样
由于全球标志传单可以追溯到2007年,他们显然不知道奥多比现在将如何展示丝带和玫瑰花结,将近9年后。
GlobalSign当然可以更新他们的文档。特别是,如果他们把OP指向传单,他们会做得很糟糕。
《凤凰社》想知道
签名PDF的可靠性/信任度
与GlobalSign传单上告诉我们的相反,通常不能用“在Adobe Reader中打开文件并查找这个或那个符号”来回答信任哪个签名的问题
你可以信任哪些签名,这在很大程度上取决于法律背景。你通常只想信任数字签名,这些签名(如果事情最终在法庭上得到处理)将被接受为证据。
在很长一段时间内,Adobe默认情况下仅通过一些美国CA颁发的证书进行可信签名。
因此,在很长一段时间里,例如在德国,你知道签名是一个有趣的噱头,但如果你看到奥多比阅读器完全接受它,它就毫无价值。另一方面,如果奥多比阅读器说文档没有被操纵,但阅读器不能信任签名者的身份,那么值得再检查一下,看看签名者证书是否是由合格的认证机构根据德国签名法签发的。
同时,Adobe也接受由CAs在EUTL(欧洲可信证书颁发机构列表)上颁发的证书。因此,现在人们必须看看Adobe显示的信任来源。
因此,要回答您手头案件的问题,您需要知道您的PDF收件人评估签名的法律背景。
我正在将代码从iText5迁移到iText7,目前我正在努力将一个签名添加到已经包含另一个签名的PDF中。这些签名是用我们的国民身份证(公民卡)进行的。 在iText5中,我使用了PdfStamper,但它在Itext7中丢失了... 这是我目前所掌握的: POReID(https://github.com/POReID/POReID)是用于与智能卡交互的库。 当第一次签署文件时,它工作得很好。再
我对iTextSharp有意见。我有一个带有表单字段的文档,并且我已经为签名生成了字段。当第一个人在文件上签字时,它就会正常工作。Adobe Reader显示有效签名。当我让第二个人在文档上签名时,Adobe Reader显示签名1现在是“未知签名”,签名无效。Adobe reader显示: 此签名中包含的格式或信息有错误(支持信息:SigDict/Contents非法数据)
我找不到为什么Foxit PDF阅读器显示我的签名文件无效。首先,我将空白签名容器插入pdf 我发送到外部Web服务以使用合格的签名进行签名。 接下来,我使用webservice的结果对pdf进行了签名。这是外部签名容器: 这是签名代码: 并且有结果: 找不到我做错了什么。
作为我对客户机/服务器pdf签名研究的一部分,我测试了itext pdf延迟签名示例。不幸的是,我得到的合并空签名pdf和哈希值的pdf ie输出显示无效签名。 下面是我的代码片段 我正在使用pkcss11 usb令牌进行签名
我有一个私人钥匙在档案里。“privatekey.pem”并且不知道如何创建谁能帮助我吗?我正在尝试使用IText7签名pdf。
由于akka是一个构建actor模型的工具包,而actor模型是运行在JVM内部的对象,那么创建后的actor对象的可靠性有多高。考虑到让它崩溃的性质,除非像使用毒丸或JVM关闭一样显式地杀死它,否则JVM中actor对象的可靠性有多高,actor不是自己全部杀死的。