如何使用OpenSSL API执行重新协商(重新协商)?

时间:2015-03-09 14:20:47

标签: ssl openssl handshake

如何使用OpenSSL API执行重新协商(重新协商)? 我需要两种类型:服务器启动时和客户端启动新握手时。

1 个答案:

答案 0 :(得分:1)

即使你现在可能已经弄清楚了,但我会把它作为OpenSSL泥浆中所有初学者的有用资料。

重新协商(服务器请求)

     printf("Starting SSL renegotiation on SSL server (initiating by SSL server)");
       if(SSL_renegotiate(ssl) <= 0){
               printf("SSL_renegotiate() failed\n");
                 exit(1);
        }

          if(SSL_do_handshake(ssl) <= 0){
                     printf("SSL_do_handshake() failed\n");
                 exit(1);
        }

          ssl->state = SSL_ST_ACCEPT;

             if(SSL_do_handshake(ssl) <= 0){
                     printf("SSL_do_handshake() failed\n");
                 exit(1);
     }

重新谈判(客户请求)

 printf("Starting SSL renegotiation on SSL client (initiating by SSL client)");
 if(SSL_renegotiate(ssl) <= 0){
        printf("SSL_renegotiate() failed\n");
        exit(1);
 }
 if(SSL_do_handshake(ssl) <= 0){
        printf("SSL_do_handshake() failed\n");
            exit(1);
 }

(摘自http://h71000.www7.hp.com/doc/83final/ba554_90007/ch04s03.html

此外,另一方只需拨打SSL_read即可处理请求。

要仔细检查重新协商是否成功,您可以在之后致电SSL_renegotiate_pending

此页面(及相关内容)介绍了正确实现服务器和客户端所需的所有技术(使用阻塞套接字)。