openssl使用相关问题

1、在使用SSL* ssl  = SSL_new(ctx)后,立刻调用SSL_CTX_free(ctx)释放ctx安全吗,会不会影响到ssl使用?

答: OpenSSL使用了引用计数,SSL_CTX_free只是减少计数,当有对象在引用ctx时,不会真正的释放ctx对象,只有引用计数为0时才会真正释放。

2、非阻塞套节字,调用SSL_accept/SSL_connect进行密钥交换,还没有完成,返回-1时如何处理?
答:SSL_accept/SSL_connect返回不为1时,可以用SSL_get_error()判定是否是因为握手未完成,根据是SSL_ERROR_WANT_READ,SSL_ERROR_WANT_WRITE确定底层库是想要从socket里读还是写,然后将socket加入poll或select, 等待再次调用SSL_accept/SSL_connect。

posted @ 2022-01-11 18:30  gelare  阅读(343)  评论(0编辑  收藏  举报