jntass / TASSL

此仓库已停止维护,请移步https://github.com/jntass/TASSL-1.1.1
http://www.tass.com.cn
Other
291 stars 106 forks source link

国密双向认证时套件问题 #38

Open liclicli opened 6 years ago

liclicli commented 6 years ago

尝试使用s_client进行双向认证测试,发现国密方式下,配置双证书会指定使用E011(ECDHE-SM4-SM3)套件;请问双向认证时为何不能使用E013(ECC-SM4-SM3)?如果只是根据GM/T 0024-2014,双向认证并不限制所使用的套件吧? @jntass

liclicli commented 6 years ago

0024-2014的 client key exchange中提到使用ECDHE算法时要求客户端发送证书,但这个意义似乎并不明确

zhenyuwei commented 6 years ago

E011(ECDHE-SM4-SM3)套件根据0009协议给出的密钥协商流程,客户端必须发送证书;但是ECC-SM4-SM3的预主密钥是由客户端生成的随机数,且使用服务器的公钥加密发送至服务器,因此这个套件对双证书的需求是可选的,因为在0024和TLS1.1协议里面,已经给出了证书请求是可选项,非必选项。

liclicli commented 6 years ago

@zhenyuwei 非常感谢解答,不过目前我还有两个疑问

  1. 上述解答提到的0008协议具体是指什么?是某个国密标准吗?
  2. E011套件要求发送证书,需要服务端单独发送certificate request吗,还是选用了E011套件后不管服务端是否发送certificate request客户端都需要发送client certificate 和certificate verify? 非常感谢解答问题 : )
liclicli commented 6 years ago

好的,我去找找,非常感谢 @zhenyuwei

gggin commented 6 years ago

两位打扰了,我想问一下去哪里找类似GM/T 0024-2014 这一系列的文档,我没有找到,非常感谢,看两位这块比较活跃,希望可以帮助我这新手,发在这里是github好像没有私信。

liclicli commented 6 years ago

@gggin http://www.gmbz.org.cn/main/bzlb.html 国密规范都可以在这免费查看

gggin commented 6 years ago

@liclicli 感谢

jntass commented 6 years ago

理论上,当进行ssl握手时,如果客户端发送了证书在进行套件选择的时候,是可以选择ECC-SM4-SM3的,只是现在还没有支持,后续会进行支持的。

drunkenpupil commented 5 years ago

请问生成的证书怎样放到服务器上,比如Tomcat或者Nginx呢?

Klaus719 commented 5 years ago

(^_^) 大佬您好,我想请教一下,TASSL 客户端 当指定cipher “ECDHE-SM4-SM3”时,为什么总是显示私钥和证书里的公钥不匹配。以下是客户端的命令,请问有什么错误码? s_client -connect host:port -enc_cert 加密证书 -enc_key 加密证书私钥 -msg -debug -cntls -state -cipher "ECDHE-SM4-SM3" ; 把加密证书换成签名证书,加密证书私钥换成签名证书私钥也是失败。 @liclicli

Klaus719 commented 5 years ago

(^_^)大佬您好,我想请教一下,TASSL 客户端 当指定cipher “ECDHE-SM4-SM3”时,为什么总是显示私钥和证书里的公钥不匹配。以下是客户端的命令,请问有什么错误码? s_client -connect host:port -enc_cert 加密证书 -enc_key 加密证书私钥 -msg -debug -cntls -state -cipher "ECDHE-SM4-SM3" ; 把加密证书换成签名证书,加密证书私钥换成签名证书私钥也是失败。 @zhenyuwei @gggin @drunkenpupil @liclicli

Klaus719 commented 5 years ago

(^_^) 我想请教一下,TASSL 客户端 当指定cipher “ECDHE-SM4-SM3”时,为什么总是显示私钥和证书里的公钥不匹配。以下是客户端的命令,请问有什么错误码? s_client -connect host:port -enc_cert 加密证书 -enc_key 加密证书私钥 -msg -debug -cntls -state -cipher "ECDHE-SM4-SM3" ; 把加密证书换成签名证书,加密证书私钥换成签名证书私钥也是失败。 @jntass

Klaus719 commented 5 years ago

你好,请问怎么使client hello发出“ECDHE-SM4-SM3“这个密码套件,我客户端敲这个命令“s_client -connect server:port -msg -debug -cntls -state -cipher "ECDHE-SM4-SM3" ”时,client hello会跳过选择ECDHE-SM4-SM3这个密码套件,请问是为什么?麻烦解答一下,谢谢了! @liclicli @zhenyuwei @jntass @gggin @drunkenpupil

suishixingkong commented 4 years ago

你好,请问怎么使client hello发出“ECDHE-SM4-SM3“这个密码套件,我客户端敲这个命令“s_client -connect server:port -msg -debug -cntls -state -cipher "ECDHE-SM4-SM3" ”时,client hello会跳过选择ECDHE-SM4-SM3这个密码套件,请问是为什么?麻烦解答一下,谢谢了! @liclicli @zhenyuwei @jntass @gggin @drunkenpupil

我觉得你还缺少-CAfile参数,不过你这情况有可能是代码bug吧,可以调试跟踪看看