SSL_CTX_use_certificate_file 函数出现问题

mingshun 发布于 2012/08/20 20:48
阅读 5K+
收藏 0

使用 openssl 写程序,开始的时候写了一个函数 func1(),里面从初始化 openssl 到 socket 连接到 SSL_CTX_free() 整个过程都做完,可以编译通过正确执行。

然后把 func1() 复制一份成 func2(),只修改其中 socket 连接的内容,但调用 func2()的时候就出现下面的错误:

3073738952:error:02001018:system library:fopen:Too many open files:bss_file.c:169:fopen('ca-cert.pem','r')
3073738952:error:2006D002:BIO routines:BIO_new_file:system lib:bss_file.c:174:
3073738952:error:0B084002:x509 certificate routines:X509_load_cert_crl_file:system lib:by_file.c:274:
3073738952:error:02001018:system library:fopen:Too many open files:bss_file.c:398:fopen('client-cert.pem','r')
3073738952:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
3073738952:error:140AD002:SSL routines:SSL_CTX_use_certificate_file:system lib:ssl_rsa.c:470:
SSL_CTX_use_certificate_file

调用 func1() 的时候也出现同样的问题。但把其中一个函数注释掉就没有任何问题,可以正确运行。

感觉十分奇怪,难道是openssl的bug,还是我自己使用 api 的方法不正确。

希望各位 openssl 的高手指点。开发环境是 Ubuntu 12.04,使用 apt-get 安装的 openssl 开发包。

加载中
返回顶部
顶部