我正在考虑从VeriSign或Thawte购买代码签名证书以签署XBAP.我的问题是:证书到期后会发生什么?299美元和599美元的1年/ 2年证书价格非常高,如果我必须在证书到期时向我的客户提供新签名的版本,那么我只会处理创建自己的证书的麻烦.现在.
我不喜欢创建自己的证书是难以将其分发给将使用我的XBAP的所有客户端计算机.我的应用程序只会在局域网上使用,所以我想我总是可以使用Windows Installer来安装我自己的家庭酿造证书(虽然我不确定如何做到这一点 - 任何人都有任何想法?).
如果我提供部分信任应用程序,这不会是一个问题 - 但我的应用程序需要Web权限,因为它将与WCF服务进行通信,因此它处于部分信任和完全信任之间的灰色区域,并且没有证书,当我尝试加载我的XBAP时,我得到了那个有趣的"不信任"信息.
有任何想法吗?
如果您 在证书有效时为代码添加时间戳,则效果是您的过期证书是好的.
来自Thawte Code Signing Certificate常见问题解答:
我可以使用代码签名证书多长时间?
代码签名证书有效期为1年或2年,具体取决于您购买证书时选择的生命周期.请注意:对于Microsoft®Authenticode®(多用途),您还应该为签名的代码添加时间戳,以避免代码在证书过期时到期.
代码签名证书到期后,带时间戳的代码是否有效?
Microsoft®Authenticode®(多用途)允许您为签名代码添加时间戳.时间戳可确保代码在证书过期时不会过期,因为浏览器会验证时间戳.时间戳服务由VeriSign提供.如果在签名代码时使用时间戳服务,则会将代码的哈希值发送到VeriSign的服务器以记录代码的时间戳.用户的软件可以区分使用不应信任的过期证书签名的代码和使用在代码签名时有效但随后过期的证书签名的代码.
注意WTD_LIFETIME_SIGNING_FLAG设置的证书:这意味着(尽管你的名字假设从名称中得知)证书在证书过期后签署的程序无效,即使程序没有改变,证书有效时也是如此签了.
这也会影响更新,因为即使客户选中该信箱来信任贵公司的所有程序,如果您的更新程序未使用相同的证书(或证书过期)进行签名,则信任也会失败.
来自:http: //download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/Authenticode_PE.docx
使用终身签名语义的时间戳处理
不希望带时间戳签名的应用程序或证书颁发机构无限期成功验证有两种选择:
•在发布者的签名证书中设置终身签名者OID.
如果发布者的签名证书除了PKIX代码签名OID之外还包含终身签名者OID,则当发布者的签名证书过期时,即使签名带有时间戳,签名也会变为无效.终身签名者OID定义如下:
szOID_KP_LIFETIME_SIGNING 1.3.6.1.4.1.311.10.3.13
•调用WinVerifyTrust时,在WINTRUST_DATA结构中设置WTD_LIFETIME_SIGNING_FLAG.
如果WinVerifyTrust调用方在WINTRUST_DATA结构中设置WTD_LIFETIME_SIGNING_FLAG并且发布者的签名证书已过期,则即使签名带有时间戳,WinVerifyTrust也会将该签名报告为无效.
如果发布者撤销包含生命周期签名者OID的代码签名证书或WinVerifyTrust调用者在WINTRUST_DATA结构中设置WTD_LIFETIME_SIGNING_FLAG,则WinVerifyTrust会在满足以下两个条件时将签名报告为有效:
•签名在撤销日期之前加上时间戳.
•签名证书仍在有效期内.有效期到期后,签名无效.
例如:https: //forum.startcom.org/viewtopic.php?f = 15&t = 2215&p = 6827&hilit = lifetime + signing#p6827
这是StartSSL证书的一个严重问题.我并不感到惊讶的是,证书的成本如此之低有限制,但在细则或旧论坛帖子中埋没这一限制而不是在产品描述中明确表示业务不佳.他们可能会在将来修复它,而其他人可能会或可能不会有相同的限制,因此在您花费之前检查电子邮件可能是明智之举.
猜猜谁不知道要问?大声笑......好吧,生活和学习.
如果确保在签署二进制文件时添加时间戳,则在证书过期时不必重新签名.只需将"/ t http://timestamp.verisign.com/scripts/timstamp.dll " 添加到signtool的命令行,除非证书被撤销且CA受信任,否则数字签名将始终标记为有效.
代码签名证书如此昂贵的原因是,有人必须验证您是否是您所说的人.在我的情况下,他们验证了地址和电话号码,并打电话给我.虽然Comodo的证书似乎稍微便宜一些.
如果计划在封闭(LAN)环境中使用它,您应该做的是设置自己的CA. Windows Server版本包括易于使用的证书颁发机构,但更简单的是通过openssl提供的demoCA设置最小的CA,openCA 由几个脚本组成.您可以在Windows上或本机上在Cygwin中运行openssl demoCA .这个demoCA由几个perl/bash脚本组成,这些脚本调用openssl命令来生成请求,签署证书/ crls等.
当您拥有自己的CA时,您需要安装的是CA根证书,因此更新用户证书将不再有麻烦,因为CA证书将保持不变.通常,CA证书应该持续5到10年,但您可以根据需要进行配置(请记住它是您自己的CA).
CA证书将安装在每台客户端计算机上.如果您的应用程序信任Windows System安全性,则应将其安装在IExplorer证书颁发机构密钥库中.如果您使用Java应用程序,则应将CA证书分发到您使用的Java密钥库中.