从操作系统获取的数字证书,通过x509到底能不能得到私key?  我研究了一下下,发现数字证书类型不同得到的东西也不同,有的类型的证书能获取到公key和私key,有的就只能获取到公key.  还有的复合型证书,就是多用途的那种,也是只能获取到公key. 可是获取不到私key就没法解密东西呀,不知道大家都是怎么获取到私key的.

解决方案 »

  1.   

    首先,私钥根据用途分为两种,签名私钥和加密私钥。
    签名私钥通常是由加密设备产生,比如USBKEY,在产生证书的时候就会在USBKEY里边的芯片产生一个签名私钥和一个签名公钥,签名公钥导出以后传输到CA制作签名证书,而签名公钥在USBKEY里边是取不出来的,这样才保证签名的唯一性和不可否认性。
    加密私钥一般由CA的KMC(密钥管理中心)产生,如果放到证书里那么就是可以导出,如果没放到证书里就不能导出,如果你要本机解密,可以发证书的时候发成P12文件(包含公钥和私钥),导入系统以后证书库里的证书就包含私钥,用CSP的函数或者C#的对应类方法可以解密。不对称的密钥体系本来就是为了保护信息传输的。就是说甲有乙的公钥,加密以后发给有私钥的乙解密,至于私钥怎么分发,要看具体业务需求来制定密钥分发策略。