OpenSSL编程初探2 --- 关于证书文件的加载

本文详细分析了OpenSSL加载证书文件的过程,包括证书文件的编码类型(二进制和ASCII Base64)以及如何加载证书链。强调加载时必须确保文件编码类型与API参数匹配,并提供了加载完整证书链的函数示例:SSL_CTX_use_certificate_chain_file和SSL_CTX_add_extra_chain_cert。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用OpenSSL加载证书文件的过程分析与代码示例

本文由优快云-蚍蜉撼青松【主页:http://blog.youkuaiyun.com/howeverpf】原创,转载请注明出处!


 

        一般说来,当前主流网站都走的单项认证的路子,即只有服务器需向客户端发送证书,客户端不需向服务器发送证书。在这种情况下,加载证书是服务端需要做的事情。所以下面给个基于openssl的SSL服务端例程,内含加载证书的代码(有特别标注):

    // 前面省略了服务端socket套接字的创建过程
    // 接受客户端的socket连接
    m_nConversion = accept(nListen, (sockaddr *)&addr_client, &size);
    if (m_nConversion == -1)
    {
        printf("accept failed!\n");
        continue;
    }
 
    // 创建服务端SSL会话环境
    m_pServerCtx = SSL_CTX_new(SSLv23_server_method());
    if (m_pServerCtx == 0)
    {
        printf("SSL_CTX_new for Server failed!\n");
        return -1;
    }
 
/*-------------------------Begin of:服务端公私钥加载-------------------------*/
    // 为服务端指定SSL连接所用公钥证书
    //参数 m_pServerCtx,服务端SSL会话环境
    //参数 pCertPath,你存放公钥证书的路径
    //参数 SSL_FILETYPE_PEM,指定你所要加载的公钥证书的文件编码类型为 Base64
    if (SSL_CTX_use_certificate_file(m_pServerCtx, pCertPath, SSL_FILETYPE_PEM) != 1)
    {
        printf("SSL_CTX_use_certificate_file failed!\n");
        return -1;
    }
    // 为服务端指定SSL连接所用私钥
    //参数 m_pServerCtx,服务端SSL会话环境
    //参数 pKeyPath,你存放对应私钥文件的路径
    //参数 SSL_FILETYPE_PEM,指定你所要加载的私钥文件的文件编码类型为 Base64
    if (SSL_CTX_use_PrivateKey_file(m_pServerCtx, pKeyPath, SSL_FILETYPE_PEM) != 1)
    {
        printf("SSL_CTX_use_PrivateKey_file failed!\n");
        return -1;
    }
    // 检查SSL连接 所用的私钥与证书是否匹配【所以你仅有公钥
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值