免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5347 | 回复: 6
打印 上一主题 下一主题

使用OpenSSL库写程序的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-27 13:42 |只看该作者 |倒序浏览
错误是:
21248:error:140A90A1:SSL routines:SSL_CTX_new:library has no ciphers:ssl_lib.c:1424:
代码如下:
#include <stdio.h>
#include <string.h>
#include <openssl/ssl.h>
#include <openssl/err.h>

int main(int argc, char *argv[])
{
#if 0
    unsigned char cert[] = "MIIC/DCCAeSgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBjDELMAkGA1UEBhMCQ04x\n"
        "EDAOBgNVBAgTB0JlaWppbmcxEDAOBgNVBAcTB0hhaWRpYW4xDzANBgNVBAoTBlJp\n"
        "c2luZzEaMBgGA1UECxQRQW50aXZpcnVzX0dhdGV3YXkxCzAJBgNVBAMTAkNBMR8w\n"
        "HQYJKoZIhvcNAQkBFhBjYUByaXNpbmcuY29tLmNuMB4XDTA3MDkxOTA3NDAzNVoX\n"
        "DTA4MDkxODA3NDAzNVowejELMAkGA1UEBhMCQ04xEDAOBgNVBAgTB0JlaWppbmcx\n"
        "DzANBgNVBAoTBlJpc2luZzEaMBgGA1UECxQRQW50aXZpcnVzX0dhdGV3YXkxCzAJ\n"
        "BgNVBAMTAmNhMR8wHQYJKoZIhvcNAQkBFhBjYUByaXNpbmcuY29tLmNuMIGfMA0G\n"
        "CSqGSIb3DQEBAQUAA4GNADCBiQKBgQDK60+rzVNVwFHw/NTl5DFqyVrOw9e50pD8\n"
        "zIG5iBzpc6GfEl3PGE6joHrTGzHlGUL6opT/IouBqFPsDdVU1xkvrtDmKuKgop6Q\n"
        "zqWlMnY0TwTvUl4c/kV5M2UHHJ899Q3Ff9j5QAUk5Naa2bUPbmqbmJFJLhQ2Kni9\n"
        "8bZdgQs1IQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBiBL3EPPU/f23s+7XdC7Ij\n"
        "PKcpGG7UznebPEuBfn8oDg/aRb9+I5jvp6JEcawmHFQ23ppGTf+fGev66l0ivQ8b\n"
        "vbRaSbPYih4lmJ9snYt2cah2i046JRY7hO2doTgLJC4a0qcoVJIGOuAbxCGbr7u+\n"
        "um6187Sf4yDI+w5r4yJgN+17kwirEQ54cG806xbglbgBKJbVugqojHQyfOnbDhHB\n"
        "PURAQKLbp8bBrcedORlVBv/t3QIQWgK8nx6R+Po+oxRXudsh54ljOJ79kcl89uRk\n"
        "hef6J9k30a2O2/sl8K6GB4DSPtJneQwrWkNp4HZ8O0nwcs/MFWMwFU99V2/sE2Mg";
#endif
    //char file[] = "/home/rainlx/ca/demoCA/newcerts/01.pem";

    SSL_CTX *ctx;
    BIO *bio_err;
    bio_err=BIO_new_fp(stderr,BIO_NOCLOSE);
    //unsigned char out[1000];

    //int outl = 1000;

    SSL_load_error_strings();
    ERR_load_BIO_strings();
    //ERR_load_SSL_strings();

    //OpenSSL_add_all_algorithms();

    //OpenSSL_add_all_ciphers();

    SSLeay_add_all_algorithms();

    printf("Attempting to create SSL context... ");
    ctx = SSL_CTX_new(SSLv3_method());
    if(ctx == NULL)
    {
        printf("Failed. Aborting.\n");
        ERR_print_errors(bio_err);
        return 0;
    }

    printf("\nLoading certificates...\n");
    if(!SSL_CTX_use_certificate_file(ctx, "certificate.pem", SSL_FILETYPE_PEM))
    {
        ERR_print_errors_fp(stdout);
        SSL_CTX_free(ctx);
        return 0;
    }
   
    return 0;
}

论坛徽章:
0
2 [报告]
发表于 2007-09-27 13:54 |只看该作者
你指定的加密算法套件库里面没有?

论坛徽章:
0
3 [报告]
发表于 2007-09-27 13:54 |只看该作者
补充环境:
uname -a
Linux debian 2.6.18-5-686 #1 SMP Thu Aug 30 02:19:07 UTC 2007 i686 GNU/Linux

openssl version
OpenSSL 0.9.8c 05 Sep 2006

论坛徽章:
0
4 [报告]
发表于 2007-09-27 13:59 |只看该作者
原帖由 wang9736 于 2007-9-27 13:54 发表
你指定的加密算法套件库里面没有?

用openssl命令行都可以的,自己写程序就出现这个问题。

论坛徽章:
0
5 [报告]
发表于 2007-09-27 14:00 |只看该作者
原帖由 wang9736 于 2007-9-27 13:54 发表
你指定的加密算法套件库里面没有?

用openssl命令行都可以的,自己写程序就出现这个问题。

论坛徽章:
0
6 [报告]
发表于 2007-09-27 14:06 |只看该作者
原帖由 cugb_cat 于 2007-9-27 14:00 发表

用openssl命令行都可以的,自己写程序就出现这个问题。



是是 SSL_library_init();  在你的 SSLv3_method前。

或者直接用TLS:
SSL_METHOD *TLSv1_method(void);                /* TLSv1.0 */
SSL_METHOD *TLSv1_server_method(void);        /* TLSv1.0 */
SSL_METHOD *TLSv1_client_method(void);        /* TLSv1.0 */

论坛徽章:
0
7 [报告]
发表于 2007-09-27 14:14 |只看该作者
原帖由 xhl 于 2007-9-27 14:06 发表



是是 SSL_library_init();  在你的 SSLv3_method前。

或者直接用TLS:
SSL_METHOD *TLSv1_method(void);                /* TLSv1.0 */
SSL_METHOD *TLSv1_server_method(void);        /* TLSv1.0 */
SSL_METHOD *TLSv1_ ...

可以了,我记得SSLeay_add_all_algorithms和SSL_library_init是等价的啊,前者和后者是用宏定义的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP