最近在用openssl写毕设,要用openssl做客户端和服务端的双向认证。但现在的问题是,就算客户端设置了
SSL_CTX_set_verify(ssl_ctx,SSL_VERTIFY_FAIL_IF_NO_PEER_CERT,NULL)客户端还是不能发证书过来,
测试的时候发现问题应该不在服务端上,因为粗略的看了一下,设置这一句和没有这一句的时候同一个程序发给客户端的包大小是不一样的。
在服务端用ssl_get_peer_certificate() 是收不到证书的,但是握手却能成功,很奇怪。
(也就是说尽管设置了,SSL_VERTIFY_FAIL_IF_NO_PEER_CERT,但是不论客户端有没有加载证书都能成功握手,,SSL_VERTIFY_FAIL_IF_NO_PEER_CERT设置根本没有意义)
在网上搜了一下,这方面的内容几乎没有,在百度知道上搜索到了一个类似的问题,http://zhidao.baidu.com/question/303072079.html 提问者好像说客户端需要二级CA证书才可以,但是不知道原理是什么。
最近刚刚接触openssl,连证书生成都还不熟练。
不知道我的问题和这个二级CA证书是否有关。希望有大神能帮忙解决这个问题。。
先谢过了!