国密证书签发及国密SSL协议通信测试

发表于:2021-4-20 09:24

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:卢俊凯    来源:51Testing软件测试网原创

  随着国产商用密码算法领域的发展,国密协议在各行业的应用也愈发广泛。国密算法在TLS协议中的应用是目前国密算法普及度最高的场景,目前市面已有多种国密浏览器,支持国密算法的TLS协议。国密SSL协议以SM3算法作为哈希算法,SM2算法作为密钥协商以及加解密算法,具备极高的安全性。本文主要利用开源的gmssl,构建国密CA,签发国密证书,以及使用签发的证书进行简单的国密SSL通信测试
  在进行证书签发之前,首先准备配置好gmssl的配置文件,由于gmssl是openssl的一个国产化的分支,因此配置文件与openssl的配置规则基本相同。图1为本文使用的配置文件示例,主要是指定了证书及密钥生成路径、默认的hash算法以及签发的证书的密钥用途等相关信息。其中国密SSL协议与标准TLS协议最大的不同是,国密SSL协议需要配置双证书,其中一张证书用于签名操作,一张证书用于加密操作。

  按照配置文件建好对应的目录结构后,即可进行证书的颁发,具体的颁发过程主要包含以下几步:

  1、生成CA根证书所需私钥,指定生成私钥算法为sm2以及长度256位

  生成的私钥信息如下图所示:

  2、生成签发CA证书的证书请求,指定证书主题等信息

  生成的证书请求信息如下图所示:

  3、自签发CA根证书

  生成的根证书如下图所示:

  通过以上三步,我们就建立好了一个可以签发证书的CA。接下来即可使用该CA为通信测试的双方:服务器以及客户端,签发证书。
  国密SSL协议是双证书机制,因此需要签发签名证书与加密证书,具体的签发流程如下:

  1、创建服务器签名和加密密钥

  生成的私钥文件与ca私钥文件类似。

  2、创建服务器证书请求

  3、签发服务器双证书
  签名证书:密钥用途为数字签名。

  加密证书:密钥用途为加解密。

  通过以上三个步骤,即准备完成服务器所需密钥及证书,接下来签发客户端双证书的流程与上类似,在此不做赘述。
  通过上面的过程,目前已具备测试国密SSL协议的根证书,服务器客户端证书及私钥,接下来可以借助gmssl的s_server与s_client组件进行通信测试。
  通信测试需要开启两个终端,一个作为服务器,另一个作为客户端。
  首先开启服务器端,进入监听状态,其中 -gmtls参数指定通信协议类型,-key参数指定通信所需签名私钥,-cert参数指定签名证书,-dkey参数指定通信所需加密私钥,-dcert参数指定加密证书 -CAfile指定根证书 -verify参数证明开启双向认证,双向认证即为在通信过程中不仅客户端需要验证服务器身份,服务器也要验证客户端身份,保证双方可信。

  下一步打开客户端进行连接。
  连接后服务器日志如下所示证明已有客户端成功连接,并通过SM2-WITH-SMS4-SM3算法套件协商成功。

  客户端日志如下所示:证明握手成功,验证通过,同时协商出主密钥。

  接下来,服务器与客户端即可加密通信传输报文,通过下图表示通信测试成功。

  以上即为国密CA的创建,国密证书签发以及国密SSL协议通信测试的完整流程,通信过程中使用的SM2-WITH-SMS4-SM3算法套件,GMTLS协议版本为1.1。

      版权声明:本文出自51Testing会员投稿,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号