优秀的VeriSign和混蛋的GlobalSign
由于领导不懂行,直接购买了GlobalSign的证书,结果引起了我这个开发人员痛苦的2星期之旅,说说大体情况:
目的:对买来的一个驱动程序进行签名,使之能够在Win x64情况下安装和使用
下载Windows Kits后安装,得到signtool.exe工具,用它进行签名。
公司名很快签上了,但是时间戳死活签不上,一运行就signtool就崩溃。可是
https://support.globalsign.com/customer/en/portal/articles/1491089
signtool sign /ac MSCrossCert.crt /f CodeSign.pfx /p password1234 /tr http://timestamp.globalsign.com/scripts/timestamp.dll filter.sys
文档上的例子明明写了一个例子啊,为啥我就死活运行不了呢?
一开始还以为timestamp.dll写错了,应该是timstamp.dll(少了一个e,网上搜索出来的结果都是少e的),还是不行。
最后不得不求助GlobalSign的售后,足足报告了5组测试命令与运行过程的全部情况。结果混蛋的GlobalSign售后看都不看内容,直接发给我已经看过一万遍的两个连接(其中第二个链接还是针对过时的驱动):
https://support.globalsign.com/customer/en/portal/articles/1491089
https://support.globalsign.com/customer/portal/articles/1217485
这样来来回回,整整13封邮件,问题还是没有得到解决。最后还是我发现了一件事情,他们给我的证书是不符合 RFC 3161的,所以必须用/t参数,而不是/tr。同时timestamp.dll拼写带e还是不带e,都是正确的,可是没人告诉我这件事情啊,让我疑惑了很久。
时间戳有了,signtool verify /v /kp 也显示正确无误,可是我的驱动还是无法使用,一调用就崩溃,一点有用的提示信息都没有,郁闷啊。。。因为无法判断出错原因,反反复复测试自己调用驱动的代码,试了一遍又一遍,实在是觉得自己的代码没问题,而确实是驱动本身的问题。
没办法,不能让驱动本身耽误开发,先开发业务流程吧。于是启动windows,按F8,进入“不检查签名”模式。
几天后,一切功能都开发完毕了,在“不检查签名模式”下运行良好,于是回到驱动签名的问题。
Windows正常启动模式下,死活还是无法安装驱动啊,更别提我调用的那些功能。
我还把自己的证书、密码、要签名的驱动、我签过名的驱动,全部发给了GlobalSign,要求他们帮我检查比较一下,问题到底出在哪里,可是他们看都不看(后来研究的结果表明,就是这个证书不能用来签名驱动,就这么简单的结果都不愿帮我试一下)。。。这服务,绝对差评。
无奈啊,只能在QQ群里求助,因为QQ群是全国范围的嘛,相关的高手应该都在里面了嘛。至于论坛,虽然也可提问,但是实时性太差,还要注册论坛什么的,放弃。
最后还是在一位VeriSign的朋友热心帮助下解决了问题,当场使用各种签名工具帮我实时测试,很快就有了结果。然后重新向GlobalSign申请内核证书,问题全部搞定。而且据这位VeriSign的朋友说,他们的证书不区分应用级别和内核级别,换而言之,直接就可对驱动签名。
这里是VeriSign的价格:
http://verisign.ert7.com/quotation.html
另外证书小白们,想节省时间精力、减少郁闷、加快项目开发,可联系我上面提到的两位VeriSign的朋友(QQ6220414和QQ1125803355)。
天地良心,我不是他们的托,他们也至今没有收取我一分钱(没一年之内必要买2份证书嘛!)。不过这态度和“售后”真没是没的说,明年一定买他们家的证书!
优秀的VeriSign和混蛋的GlobalSign的更多相关文章
- Linux 中优秀的文本化编辑思想大碰撞(Markdown、LaTeX、MathJax)
这样一个标题可能不太准确,因为确实无法准确地解释什么叫"文本化编辑思想".其实我这篇随笔主要是想探讨 Markdown.LaTeX.MathJax,有兴趣的朋友可以继续往下看,同时 ...
- 基于 SailingEase WinForm Framework 开发优秀的客户端应用程序(目录)
本系统文章将详细阐述客户端应用程序的设计理念,实现方法. 本系列文章以 SailingEase WinForm Framework 为基础进行设计并实现,但其中的设计理念及方法,亦适用于任何类型的客 ...
- 国内优秀的Android资源
因为一些大家都知道的原因,Android很多官方出品的优秀开发资源在国内无法访问. 国内的同行们对此也做出了很多努力,有很多朋友通过各种手段把很多优秀的资源搬运到了国内,为国内android开发者提供 ...
- [转]别再抱怨了,国内这么多优秀的Android资源你都知道吗?
因为一些大家都知道的原因,android很多官方出品的优秀开发资源在国内无法访问. 国内的同行们对此也做出了很多努力,有很多朋友通过各种手段把很多优秀的资源搬运到了国内,为国内android开发者提供 ...
- ******IT公司面试题汇总+优秀技术博客汇总
滴滴面试题:滴滴打车数据库如何拆分 前端时间去滴滴面试,有一道题目是这样的,滴滴每天有100万的订单,如果让你去设计数据库,你会怎么去设计? 当时我的想法是根据用户id的最后一位对某个特殊的值取%操作 ...
- CSDN:你认为一名优秀的技术人应该具备怎样的素质?
CSDN:你认为一名优秀的技术人应该具备怎样的素质? 王晶昱:我个人认为,符合这个世界要求的就是优秀的.在目前这个时代,我认为一个优秀的技术人员的特质可能是: 兴趣驱动,兴趣是最好的老师,写程序本身就 ...
- 优秀网站看前端 —— 小米Note介绍页面
刚开始经营博客的时候,我写过不少“扒皮”系列的文章,主要介绍一些知名站点上有趣的交互效果,然后试着实现它们.后来开始把注意力挪到一些新颖的前端技术上,“扒皮”系列便因此封笔多时.今天打算重开“扒皮”的 ...
- [.net 面向对象程序设计进阶] (23) 团队开发利器(二)优秀的版本控制工具SVN(上)
[.net 面向对象程序设计进阶] (23) 团队开发利器(二)优秀的版本控制工具SVN(上) 本篇导读: 上篇介绍了常用的代码管理工具VSS,看了一下评论,很多同学深恶痛绝,有的甚至因为公司使用VS ...
- [转] Android优秀开源项目
Android经典的开源项目其实非常多,但是国内的博客总是拿着N年前的一篇复制来复制去,实在是不利于新手学习.今天爬爬把自己熟悉的一些开源项目整理起来,希望能对Android开发同学们有所帮助.另外, ...
随机推荐
- JavaScript的闭包详解
(1)定义: 函数内部返回一个函数,返回出来的这个函数叫做被我们称之为闭包(个人理解的最简单的表现形式,) (2)为什么要使用闭包呢? 局部变量在函数执行完之后就会被GC回收,有时候我们想在外部访问内 ...
- SpriteKit所有的类
1.SKAction 2.SKCropNode 3.SKEffectNode 4.SKEmitterNode 5.SKKeyframeSequence 6.SKLabelNode 7.SKNode 8 ...
- SAX PULL解析实例
XML三种解析方式: SAX解析:基于事件驱动,事件机制基于回调函数的,得到节点和节点之间内容时也会回调事件 PULL解析:相同基于事件驱动,仅仅只是回调时是常量 DOM解析:是先把XML文件装入内存 ...
- Android Studio Gradle 缓存目录设置
======================================================== 笔者:qiujuer 博客:blog.csdn.net/qiujuer 站点:www. ...
- qDebug 学习小结
在qtcentre中看到有网友问这样一个问题: Why this doesn't work? qDebug() << "Test" << std::endl ...
- mvc和webapi同一解决方案调试办法
今天在研究WebApi的时候,用mvc端直接请求webapi接口,发现怎么也请求不了,自己搞了半天,猜测可能是webapi没有完全启动吧,解决办法是将解决方案属性改为多启动项目,具体方法如下: 直接运 ...
- MyKTV项目,走起!
MyKTV项目,走起! 第一部分:这个项目对于新手来说有一点难度,但是当你理清类之间的关系和怎样去实现功能后就会感觉轻松很多. 话不多说,先上类图: 接着是数据库表间关系: 本项目要实现以下功能: 明 ...
- Example_07_05录音提示open failed: EACCES (Permission denied)
在AndroidManifest.xml文件中加入下面这句话:<uses-permission android:name="android.permission.WRITE_EXTER ...
- js设置元素的onclick传参方法
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD ...
- sql server语句
一.基础1.说明:创建数据库CREATE DATABASE 数据库名2.说明:删除数据库drop database 数据库名3.说明:备份sql server--- 创建 备份数据的 deviceUS ...