ssl双向验证

        一般情况下ssl加密连接都只是单向认证,是客户端验证服务端的证书。例如常见的web服务,是客户端验证服务端的证书,防止遇到假冒的网站,正规的网站都有权威机构签名的证书,浏览器会帮助用户校验服务端的证书,如果证书是可信的,说明网站是可信的可如果证书不可信,浏览器会有提示,提示一般在地址栏前面有个锁形符号。
        服务端在发送完server hello后将自己的证书发送给客户端,客户端此时可选的验证服务端的证书。客户端虽然是可选验证,但是连接仍然是加密连接,只是没有验证连接对端的身份。客户端用服务端证书的公钥加密一个预主密钥发送给服务端,以供双方后续产生加密密钥。
        双向认证是在建立一个加密连接时,双方互相验证对方的身份,此时在上述一般情况下ssl加密连接的基础上,客户端也要提供自己的证书以供服务端验证,如果证书不正确,服务端会断开连接。双向认证时双方可以使用密钥协商算法协商出一个预主密钥,供后续产生加密密钥。

服务端的代码如下:

int loadCertFile(SSL_CTX* ctx, const char* CertFile, const char* KeyFile, const char* caFile)
{
    if(!ctx)
    {
        return errcode;
    }
    // load cert
    if(CertFile && SSL_CTX_use_certificate_file(ctx, CertFile, SSL_FILETYPE_PEM) <= 0)
    {
        return errcode;
    }

    // load private key
    if(KeyFile && SSL_CTX_use_PrivateKey_file(ctx,KeyFile, SSL_FILETYPE_PEM) <= 0)
    {
        return errcode;

    }

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值