gmssl 国密ssl流程测试

  • 前言
  • 一 gmssl ssl流程测试 单证书单向认证
  • 二 gmssl ssl 流程 单证书 双向认证
  • 三 gmssl gmtls 流程 双证书 单向认证
  • 四 gmssl gmtls 流程 双证书 双向认证
  • 总结

前言

普通ssl/TLS中使用的是单证书,而国密ssl(gmtls)要求的是双证书,即加密证书+签名证书。
gmssl中保留了openssl中ssl、tls的流程,同时也实现了gmtls的流程。
本章将使用gmssl命令行工具,对ssl和gmtls的流程进行测试。

注:本章使用的国密证书在之前的章节中讲了如何生成。
https://blog.csdn.net/qq_39952971/article/details/115168241

一 gmssl ssl流程测试 单证书单向认证

服务端命令:

gmssl s_server -accept 44330 -key gmcrt/2_sign.key -cert gmcrt/2_sign.crt  -CAfile gmcrt/ca.crt

客户端:

gmssl s_client -connect localhost:44330 -key gmcrt/1_sign.key -cert gmcrt/1_sign.crt -CAfile gmcrt/ca.crt

测试日志(服务端):可以看出ssl的通信流程

Using default temp DH parameters
[GMTLS_DEBUG] set sm2 signing certificate
[GMTLS_DEBUG] set sm2 signing private key
ACCEPT
SSL_accept:before SSL initialization
SSL_accept:before SSL initialization
SSL_accept:SSLv3/TLS read client hello
SSL_accept:SSLv3/TLS write server hello
SSL_accept:SSLv3/TLS write certificate
SSL_accept:SSLv3/TLS write key exchange
SSL_accept:SSLv3/TLS write server done
SSL_accept:SSLv3/TLS write server done
SSL_accept:SSLv3/TLS read client key exchange
SSL_accept:SSLv3/TLS read change cipher spec
SSL_accept:SSLv3/TLS read finished
SSL_accept:SSLv3/TLS write session ticket
SSL_accept:SSLv3/TLS write change cipher spec
SSL_accept:SSLv3/TLS write finished
-----BEGIN SSL SESSION PARAMETERS-----
CIPHER is ECDHE-SM2-WITH-SMS4-GCM-SM3
Secure Renegotiation IS supported

二 gmssl ssl 流程 单证书 双向认证

服务端命令:

gmssl s_server -verify 1 -accept 44330 -key gmcrt/2_sign.key -cert gmcrt/2_sign.crt  -CAfile gmcrt/ca.crt -state

其中-verify 1 参数表示服务端要对客户端的证书进行验证。默认只是客户端验证服务端的证书。

客户端:

gmssl s_client -connect localhost:44330 -key gmcrt/1_sign.key -cert gmcrt/1_sign.crt -CAfile gmcrt/ca.crt -state

测试日志-服务端:

verify depth is 1
Using default temp DH parameters
[GMTLS_DEBUG] set sm2 signing certificate
[GMTLS_DEBUG] set sm2 signing private key
ACCEPT
SSL_accept:before SSL initialization
SSL_accept:before SSL initialization
SSL_accept:SSLv3/TLS read client hello
SSL_accept:SSLv3/TLS write server hello
SSL_accept:SSLv3/TLS write certificate
SSL_accept:SSLv3/TLS write key exchange
SSL_accept:SSLv3/TLS write certificate request
//  服务端发出证书请求
SSL_accept:SSLv3/TLS write server done
SSL_accept:SSLv3/TLS write server doneverify return:1
SSL_accept:SSLv3/TLS read client certificate
SSL_accept:SSLv3/TLS read client key exchange
SSL_accept:SSLv3/TLS read certificate verify
SSL_accept:SSLv3/TLS read change cipher spec
SSL_accept:SSLv3/TLS read finished
SSL_accept:SSLv3/TLS write session ticket
SSL_accept:SSLv3/TLS write change cipher spec
SSL_accept:SSLv3/TLS write finished

三 gmssl gmtls 流程 双证书 单向认证

服务端命令:

gmssl s_server -gmtls -accept 44330 -key gmcrt/2_sign.key -cert gmcrt/2_sign.crt  -dkey gmcrt/2_enc.key -dcert gmcrt/2_enc.crt -CAfile gmcrt/ca.crt -state

-state参数表示打印跟多信息,方便调试。

客户端:

gmssl s_client -gmtls -connect localhost:44330 -key gmcrt/1_sign.key -cert gmcrt/1_sign.crt -dkey gmcrt/1_enc.key -dcert gmcrt/1_enc.crt -CAfile gmcrt/ca.crt -state

日志-客户端:

[GMTLS_DEBUG] set sm2 signing certificate
[GMTLS_DEBUG] set sm2 signing private key
[GMTLS_DEBUG] set sm2 encryption certificate
[GMTLS_DEBUG] set sm2 decryption private key
CONNECTED(00000003)
SSL_connect:before SSL initialization
SSL_connect:SSLv3/TLS write client hello
SSL_connect:SSLv3/TLS write client hello
SSL_connect:SSLv3/TLS read server hello
depth=1 C = CN, ST = Some-State, L = beijing, O = Internet Widgits Pty Ltd, OU = xd, CN = yaomingyue
verify return:1
depth=0 C = CN, ST = Some-State, O = Internet Widgits Pty Ltd, OU = xd, CN = yao
verify return:1
SSL_connect:SSLv3/TLS read server key exchange
SSL_connect:SSLv3/TLS read server done
SSL_connect:SSLv3/TLS write client key exchange
SSL_connect:SSLv3/TLS write change cipher spec
ssl_get_algorithm2=4a58fcd008x
SSL_connect:SSLv3/TLS write finished
SSL_connect:SSLv3/TLS write finished
SSL_connect:SSLv3/TLS read change cipher spec
SSL_connect:SSLv3/TLS read finishedNew, GMTLSv1.1, Cipher is SM2-WITH-SMS4-SM3
SSL-Session:Protocol  : GMTLSv1.1Cipher    : SM2-WITH-SMS4-SM3Session-ID: C59ADB1090F5948375648E1172F299FC6E722D0EF6C94490EE992A5852EEA087Session-ID-ctx: Master-Key: BF9BCB2B31359649CC4F0EA373B5B8674F462FA24C90147D0A8861F0129FB09E7D7F4E5AE1965A5BA336903BB6608B7CPSK identity: NonePSK identity hint: NoneSRP username: NoneStart Time: 1616571315Timeout   : 7200 (sec)Verify return code: 0 (ok)Extended master secret: no

可以看出,现在使用的协议已经变成gmtlsv1.1了。

四 gmssl gmtls 流程 双证书 双向认证

服务端命令:

gmssl s_server -verify 1 -gmtls -accept 44330 -key gmcrt/2_sign.key -cert gmcrt/2_sign.crt  -dkey gmcrt/2_enc.key -dcert gmcrt/2_enc.crt -CAfile gmcrt/ca.crt

客户端:

gmssl s_client -gmtls -connect localhost:44330 -key gmcrt/1_sign.key -cert gmcrt/1_sign.crt -dkey gmcrt/1_enc.key -dcert gmcrt/1_enc.crt -CAfile gmcrt/ca.crt -state

目前运行服务端报错:

crypto/sm2/sm2_sign.c 510: sm2_do_verify
ERROR
139865536943936:error:1417B07B:SSL routines:tls_process_cert_verify:bad signature:ssl/statem/statem_srvr.c:2941:

应该是gmssl的GMTLS的双证书双向验证流程还有问题,需要改gmssl的源码。

总结

在测试的过程中可以进行抓包查看,可以更清晰的看到ssl和gmtls的通信流程:

注:GMTLS协议的抓包查看
因为wireshark目前不支持GMTLS协议解析,所以需要改变下。
用UE将抓包文件打开,找到160101等ssl开头的数据,然后改成160303 ,再用wireshark打开,当做TLS1.3 来看。
参考如下博文:
https://blog.csdn.net/mrpre/article/details/78015580

gmssl 国密ssl流程测试相关推荐

  1. 国密SSL协议之双证书体系

    1 背景 国密SSL协议使用双证书体系.本文描述了国密双证书体系的组成和差别,并描述了在U盾里面的使用情况. 2 国密SSL双证书 国密SSL协议使用双证书体系,分别称为签名证书和加密证书,服务器和用 ...

  2. 国密SSL证书申请免费试用

    沃通提供国密SSL证书免费申请试用服务,一次申请可同时签发SM2/RSA双算法证书,试用周期1个月,用于测试国密SM2 SSL证书的运行效果和SM2/RSA双证书部署效果. 试用产品:SM2/RSA双 ...

  3. gmcurl,支持国密SSL的的curl

    gmcurl,支持国密SSL的的curl 1.curl是什么 cURL(客户端URL)是一个开放源代码的命令行工具,用来请求 Web和其他各种类型的服务器.curl有着大量的参数,常用来测试/调试服务 ...

  4. nginx服务器配置ssl协议,国密SSL协议之Nginx集成

    1 背景 Nginx自身支持标准的SSL协议,但并不支持国密SSL协议.本文描述了Nginx配置的国密SSL协议(单向)的完整过程,仅供学习和参考之用. 特点:Nginx 无需改动源码.支持任意版本. ...

  5. linux如何配浏览器证书,部署国密SSL证书,如何兼容国际主流浏览器?

    转自: 国密算法在主流操作系统.浏览器等客户端中,还没有实现广泛兼容.因此,在面向开放互联网的产品应用中,国密算法无法得到广泛应用.比如,在SSL证书应用领域,由于国际主流浏览器不信任国密算法,如果服 ...

  6. 国密浏览器如何完成SM2国密SSL协议协商

    国密浏览器需要遵循国密SSL协议规范GM/T 0024-2014.GM/T 0024-2014没有单独规范 SSL协议的文件,而是在SSL VPN技术规范中定义了国密SSL协议.国密SSL协议(SSL ...

  7. 什么是国密SSL协议?国密证书与传统SSL证书有什么区别?

    你知道什么是国密SSL协议吗?很多人听说过SSL证书.SSL协议,但是国密SSL协议却是第一次听说.一起来看看什么是国密SSL协议,以及国密证书与传统SSL证书有什么区别? 什么是国密SSL协议?国密 ...

  8. 什么是国密SSL证书?和普通SSL证书有什么区别?

    SSL证书能够有效提升网站数据传输的安全性,已成为政府企业网站提升数据安全的标配.而国密SSL证书由于加密算法不同,安全等级更高,逐渐受到越来越多用户的信赖和认可.那么国密SSL证书有哪些特点,它和传 ...

  9. 密信国密浏览器:推动SM2国密算法和国密SSL证书应用

    为什么80%的码农都做不了架构师?>>>    国密浏览器的普及是推广我国国产密码算法的关键生态要素.日前,沃通CA子公司密信技术发布密信浏览器公测版,支持SM系列国密算法和安全协议 ...

最新文章

  1. Bridge Pattern
  2. 查看mysql进程--show processlist
  3. SAP MTA打包的一些常见错误
  4. html 倒计时 插件,JavaScript使用小插件实现倒计时的方法讲解
  5. oracle 备份教研归档失败,归档日志丢失造成Rman备份失败解决办法
  6. 链表c++代码的实现
  7. C++如何使用MySQL数据库
  8. Python Tricks(九)—— 递归遍历目录下所有文件
  9. Linux -- sudoers (简单:转)
  10. 署五笔软件测试初学者,三天学会五笔打字练习测试新手教程
  11. 最大子段和问题-蛮力法、分治法、动态规划法
  12. 按键精灵卡屏检测判断窗口是否无响应或卡屏
  13. pycharm的配置——字体
  14. springboot 多模块使用Jib插件发布镜像
  15. 需求分析——确定需求细节(规则与约束)
  16. mysql计算年休假天数_如何计算年假多少天
  17. 小米平板2win下屏蔽按键
  18. 漏电监测在景观喷泉、喷水池的应用-安科瑞耿敏花
  19. java中支持mp3格式_可以播放mp3格式文件的机器,都遵守了什么协议,才能让mp3格式的文件可以:“一处保存,到处播放?...
  20. Hololens2 MRTK 关闭空间网格、性能面板

热门文章

  1. 中国可信计算机走向世界核心技术领
  2. python学习手册教程_python学习手册:如何学习python学习教程?
  3. 《惢客创业日记》2021.08.06-09(周五)惢客与征信的区别(下)
  4. Nexus7二代刷机直升android10
  5. MOS管驱动电路设计,如何让MOS管快速开启和关闭?
  6. 霍兰德职业规划测试软件,发现你的职业兴趣——霍兰德职业兴趣测试
  7. 数据库事物和分布式事物
  8. form提交--jquery.form.js
  9. C++父类与子类间构造,析构,拷贝的调用关系
  10. 子类与父类的同名成员调用和注意事项