代码签名证书和文档签名证书之间的区别

时间:2015-07-29 02:51:51

标签: pdf-generation tcpdf digital-certificate

我正在寻找一份文档签名证书,根据Adobe的AATL签署PDF,但我注意到,例如,Digicert对Document Signing Certificate的收费明显不同于Code Signing Certificate。我们计划使用证书进行PDF的自动签名,因此我无法看到USB令牌(由文档签名证书提供)非常有用。考虑同一个CA:Digicert签署的证书/私钥对,以及AATL(因此它们的根证书是相同的吗?)使用代码签名证书就足以在Adobe读者上验证?

Digicert的客户支持说:

  

如果您通过自己的软件使用证书,那么就是代码   签名证书可能有效,因为它链接回受信任的证书   DigiCert root。我无法确认代码是否签名   签名将转换为PDF,但因为我们不正式   使用代码签名证书支持PDF签名。

如果有人有这方面的经验,我会很感激。

1 个答案:

答案 0 :(得分:2)

这些代码签名证书很可能具有System.Runtime.InteropServices.ExternalException was unhandled _HResult=-2147467259 _message=A generic error occurred in GDI+. HResult=-2147467259 IsTransient=false Message=A generic error occurred in GDI+. Source=System.Drawing ErrorCode=-2147467259 StackTrace: at System.Drawing.Graphics.MeasureString(String text, Font font, SizeF layoutArea, StringFormat stringFormat) at System.Drawing.Graphics.MeasureString(String text, Font font, Int32 width) at System.Windows.Forms.ThreadExceptionDialog..ctor(Exception t) at System.Windows.Forms.Application.ThreadContext.OnThreadException(Exception t) at System.Windows.Forms.Timer.TimerNativeWindow.OnThreadException(Exception e) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData) at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.Run(Form mainForm) at Alpha_Strategy_Engine.Program.Main() in c:\Users\Jeffery\Documents\Visual Studio 2013\Projects\Alpha Strategy Engine\Program.cs:line 50 InnerException: 扩展名,其值为extKeyUsage (2 5 29 37),可能还有codeSigning (1 3 6 1 5 5 7 3 3),但没有允许其他用途的值。 (至少在我手边有代码签名证书就是这种情况。)

MSDN为扩展密钥用法扩展指定如果扩展名存在,则证书必须仅用于指定的目的之一。

因此,如果如上所述设置了相关证书中的扩展密钥用法,则使用此类代码签名证书签署非代码违反了X.509公钥基础结构证书的基本规范。

关于你的核心问题

  

我们计划使用证书自动签署PDF ...使用代码签名证书是否足以在Adobe读者上验证?

有可能Adobe Reader拒绝使用代码签名证书生成的PDF签名,如果它现在还没有,那么在将来的版本中可能会很好。