国密CA体系里面,加密密钥对是在CA端产生的,和通常的签名证书流程不一样(签名密钥对通常是用户自己产生的,发送证书请求给CA来申请证书)。
那用户怎么安全获得加密证书和私钥呢?国密规范规定,加密私钥需要通过数字信封使用用户的签名公钥加密。CA将加密私钥密文返回给用户,用户因为有对应的签名私钥,因此只有该用户才可以解开密文,获得加密私钥。过程如下:
1)用户使用U盾产生签名密钥对,生成签名证书请求,发送签名证书请求给CA;
2)CA审核生成签名证书,产生加密密钥对,生成加密证书;
3)CA生成对称密钥,使用用户签名公钥加密,输出对称密钥密文;
4)CA使用对称密钥,加密用户加密私钥,输出加密私钥密文;
5)CA返回给用户签名证书、加密证书、对称密钥密文和加密私钥密文;
6)用户导入对称密钥密文,使用U盾内部签名私钥解密,获得对称密钥句柄;
7)用户使用对称密钥句柄解密加密私钥,获得加密私钥明文。
用户使用SKF(U盾)接口时,6)和7)以及导入加密证书时,使用一个API一步完成的,所述过程是在U盾内部的处理。