背景
国密SSL协议使用双证书体系。本文描述了国密双证书体系的组成和差别,并描述了在U盾里面的使用情况。
国密SSL双证书
国密SSL协议使用双证书体系,分别称为签名证书和加密证书,服务器和用户持有两对SM2独立的密钥对。其中加密证书和签名证书主要的区别就是密钥用法(KeyUsage)不一样(当然对应的密钥等也不一样),使用相同的DN。密钥用法具体是:
签名证书:Digital Signature, Non-Repudiation (c0)
加密证书:Key Encipherment, Data Encipherment, Key Agreement (38)
国密SSL加密证书的颁发流程
国密CA体系里面,加密密钥对是在CA端产生的,和通常的签名证书流程不一样(签名密钥对通常是用户自己产生的,发送证书请求给CA来申请证书)。
那用户怎么安全获得加密证书和私钥呢?国密规范规定,加密私钥需要通过数字信封使用用户的签名公钥加密。CA将加密私钥密文返回给用户,用户因为有对应的签名私钥,因此只有该用户才可以解开密文,获得加密私钥。过程如下:
1)用户使用U盾产生签名密钥对,生成签名证书请求,发送签名证书请求给CA;
2)CA审核生成签名证书,产生加密密钥对,生成加密证书;
3)CA生成对称密钥,使用用户签名公钥加密,输出对称密钥密文;
4)CA使用对称密钥,加密用户加密私钥,输出加密私钥密文;
5)CA返回给用户签名证书、加密证书、对称密钥密文和加密私钥密文;
6)用户导入对称密钥密文,使用U盾内部签名私钥解密,获得对称密钥句柄;
7)用户使用对称密钥句柄解密加密私钥,获得加密私钥明文。
用户使用SKF(U盾)接口时,6)和7)以及导入加密证书时,使用一个API一步完成的,所述过程是在U盾内部的处理。
国密U盾伴侣
目前大部分国密U盾的管理工具,并不支持国密证书请求产生和国密证书应答导入。www.GMSSL.cn提供一个《国密U盾辅助工具》,支持国密生成证书请求/导入证书应答操作。目前支持龙脉科技的mToken GM3000。
下载请参见https://www.gmssl.cn/gmssl/index.jsp?go=ukey
1)生成证书请求
2)提交签名证书请求给https://www.gmssl.cn/gmssl/index.jsp?go=ca
3)www.gmssl.cn生成签名证书/加密证书/加密私钥密文
4)导入证书应答
国密测试CA
www.GMSSL.cn提供一个国密测试CA。通过国密CA,配合国密U盾伴侣,可以给用户生成国密双证书,然后可以通过国密浏览器,就使用证书登录国密双向认证的网站了。
CA参见https://www.gmssl.cn/gmssl/index.jsp?go=ca