【问题标题】:How to perform a rehandshake (renegotiation) with OpenSSL API?如何使用 OpenSSL API 执行重新握手(重新协商)?
【发布时间】:2015-03-09 14:20:47
【问题描述】:

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

【问题讨论】:

    标签: ssl openssl handshake


    【解决方案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

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

    【讨论】:

      猜你喜欢
      • 2016-09-25
      • 2018-09-22
      • 2011-04-13
      • 1970-01-01
      • 2012-06-16
      • 1970-01-01
      • 2014-07-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多