大家知道在windows xp系统下有文件签名验证工具Sigverif,可以验证某个目录的文件是否有数字签名
我对一个exe文件使用signcode.exe进行签名,在签名成功后,在文件的属性里能看到一个数字签名标签。而我从系统的system32\drivers目录里找了一个sys文件,它的属性里都没有数字签名标签。
我把这两个文件(假设文件名为a.exe,b.sys)都放到一个文件夹中,用Sigverif扫描,发现竟然结果是
a.exe是没签名的,而b.sys是有签名的(显示编录在nt5.cat)。
这是怎么回事?难道signcode做的签名不被Sigverif认可,那要如何才能做出被Sigverif认可的签名呢?

解决方案 »

  1.   

    看了一下,也试过了,
    是经过验证的证书签名的文件才能被Sigverif识别出来
    而未经过验证的证书只是测试证书,
    不是正规的证书颁布机构颁布的,
    所以它不会被识别出来.该证书需要到经过授权的机构购买
      

  2.   

    登陆www.verisign.com或国内授权网站
    注册缴费,一个私钥pvr和一个证书crt
    注册控件的时候预留64K来写相关信息
    然后调用diamond打包或signcode来加密
      

  3.   

    不错,不错,来了这么多专家。谢谢风间苍月。

    打开经过签名的文件,在数字签名页里,
    选中证书,然后点详细信息,
    以过验证的会显示:该数字签名正常
    而未受信任的证书签名的文件则会显示:由于当前的策略设置,该测试根不受信任;证书路径因此而终止

    我觉得奇怪的是b.sys的属性里没有数字签名页,然后用Sigverif看到数字签名被编录到nt5.cat
    这是怎么做的呢?
    我先假设一个原因:数字签名证书可以内嵌,这样在属性里可以看到数字签名页,还可以外置放到.cat文件中。
      

  4.   

    我前面的假设是对的。
    有两种方式可以对内核模式代码签名:
    1.把要签名的文件组成一个列表,然后编进一个.cat文件,然后对.cat文件签名。
    2.直接对某个内核模式代码文件签名。
    采用第二种方式签名可以在文件的属性页看到数字签名标签。
      

  5.   


    http://www.TrustAsia.com.cn这个网站有1000多的代码签名证书,服务也很不错,刚刚给我们公司买了一个Thawte的证书。
      

  6.   

    http://www.openssl.com.cn/thread-101-1-1.html又找到一个免费的,不过时间只有一个月,没试过,有兴趣的可以试试。
      

  7.   

    http://www.wotrust.com里面也有1000多一点的证书的,有兴趣的不妨去看看:)