将一个PFX文件时导入到Windows的证书存储区时两个选项:私钥可导出和私钥不可导出。如果选择私钥不可导出,我们能用编程方式得到这个(证书存储区中的)证书的私钥吗?可以用它来做数字签名吗?
如果答案是不可以,那么,这样的不可导出私钥的证书有什么意义呢?

解决方案 »

  1.   

    这么专业的问题你用百毒这种少儿读物当然找不到...个人证书包含两个密钥,私钥一般都不导出...否则哪有安全性可言...公钥必须安装,而且公钥本来就是公开的,随便给人看没关系...用过网银吗?银行一般提供两种证书...一种简单的就是把私钥也安装到计算机证书存储区的,这种安全性低,功能受限...一种是把私钥存在UKey里,插上才能用拔下来就不能用...编程方式当然可以得到私钥,而且从证书读取私钥都要求有另外的密码保护...不能编程还怎么用,.NET的System.Security.Cryptography.X509Certificates命名空间里的那些东东就是干这个的...至于为什么,去学学PKI公钥体系...不是几句话能说清的...
      

  2.   


    用这个命名空间的东西读取PFX文件,我知道肯定是可以的;但是读取证书存储区中的东西却是不可能。我试过很多次了。
    后来我想了想,个人是这样理解的:私钥不可导出的证书都将在密钥容器中存放私钥。Windows中存放在C:\Documents and Settings\adminitrator\Application Data\Microsoft\Crypto\RSA;USBKey中存放在USBKey内部。这些密钥容器中的私钥可能是没有办法获得的,但是却可以用它来签名(原理类似于口令的MD5散列值可用于身份验证,但别人包括应用软件却无法获得口令的明文,也不需要获得)。现在我关心的是如何编程实现用密钥容器中的私钥来签名。现在就实验去……
      

  3.   

    经过长时间研究,问题解决。
    个人理解如下:
    私钥不可导出的证书都将在CSP密钥容器中存放私钥。密钥容器中的私钥是无法导出(包括编程)的。但尽管无法导出,却可以用它来签名。所有来顶者都给分!