jntass / TASSL

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

多级根证书握手失败(原生openssl生成多级证书握手不存在该问题) #25

Closed WeWebsterchen closed 2 years ago

WeWebsterchen commented 6 years ago

在使用多级根证书握手过程遇到如下问题,麻烦看下是否加密证书设置不成功导致。 错误:在客户端与服务器端SSL_do_handshake过程中提示 Err:passed a null parameter 希望达到效果:客户端与服务器端之间通信实现双向验证,客户端和服务器端使用相同的一级根证书颁发二级根证书,二级根证书再颁发客户端/服务器端证书。服务器端及客户端二级根证书不同。(按照相同方式使用非国密版本正常握手连接) 调用方式如下: SSL_CTX_load_verify_locations(ctx, SM2_SERVER_CA_CERT, NULL); certData = cert0 + cert1 + cert[2](二级根证书) + cert[3](一级根证书); SSL_CTX_use_certificate_chain_file(ctx,certdata); SSL_CTX_use_PrivateKey_file(ctx, SM2_SERVER_ENC_KEY, SSL_FILETYPE_PEM) SSL_CTX_use_enc_PrivateKey_file(ctx, SM2_SERVER_ENC_KEY, SSL_FILETYPE_PEM) 或者不使用SSL_CTX_use_certificate_chain_file使用SSL_CTX_use_certificate_file依次添加证书也一样报错。 错误截图:截图中为verify_callback执行结果,第一个为国密一级根证书,第二为国密二级根证书,第三为国密签名证书,证书验证正常,但是SSL_do_handshake返回错误passed a null parameter。 image

jntass commented 6 years ago

已更新源码,目前可以发送证书链。