日期:2014-05-19  浏览次数:20962 次

对数字证书编程有深入研究的来喝杯茶交流下

    从操作系统获取的数字证书,通过x509到底能不能得到私key?

    我研究了一下下,发现数字证书类型不同得到的东西也不同,有的类型的证书能获取到公key和私key,有的就只能获取到公key.

    还有的复合型证书,就是多用途的那种,也是只能获取到公key.   可是获取不到私key就没法解密东西呀,不知道大家都是怎么获取到私key的.

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

不对称的密钥体系本来就是为了保护信息传输的。就是说甲有乙的公钥,加密以后发给有私钥的乙解密,至于私钥怎么分发,要看具体业务需求来制定密钥分发策略。
------解决方案--------------------
up