没有服务器证书和“不共享密码”,当客户端连接(No server certificate and “

2019-09-27 18:51发布

我写通信的SSL服务器和客户端。 我有一个服务器下面的代码

SSL_CTX* InitServerCTX(void)
{       
   SSL_METHOD *method;
   SSL_CTX *ctx;
   SSL_library_init();
   OpenSSL_add_all_algorithms();        /* load & register all cryptos, etc. */
   SSL_load_error_strings();

  ERR_load_crypto_strings();
  OpenSSL_add_all_ciphers();

  ctx = SSL_CTX_new(SSLv23_server_method());            /* Create new context */
  if ( ctx == NULL )
  {
       ERR_print_errors_fp(stderr);
       abort();
  }

  SSL_CTX_set_cipher_list(ctx, "HIGH:MEDIUM:!eNULL:!aNULL:!RC4");

  return ctx;  }

在此之后对接受代码

 int client = accept(server, (sockaddr*)&addr, &len);       /* accept  connection as usual */
 printf("Connection: %s:%d\n",
 inet_ntoa(addr.sin_addr), ntohs(addr.sin_port));
 ssl = SSL_new(ctx);                            /* get new SSL state with context */
 SSL_set_fd(ssl, client);
 int ret = SSL_accept(ssl); 

这里是客户端代码

SSL_CTX* InitCTX(void)
{   
    SSL_METHOD *method;
    SSL_CTX *ctx;
    SSL_library_init();
    OpenSSL_add_all_algorithms();       /* Load cryptos, et.al. */
    SSL_load_error_strings();           /* Bring in and register error messages */
    ctx = SSL_CTX_new(SSLv23_client_method());          /* Create new context */
    if ( ctx == NULL )
    {
        ERR_print_errors_fp(stderr);
        abort();
    }

    SSL_CTX_set_cipher_list(ctx, "HIGH:MEDIUM:!eNULL:!aNULL:!RC4");
    return ctx;
}

对于连接它

ssl = SSL_new(ctx);                     /* create new SSL connection state */
SSL_set_fd(ssl, server);                /* attach the socket descriptor */
int ret = SSL_connect(ssl) ;

我没有使用任何证书或密钥。

当我尝试使用这种方法来连接我得到在服务器端没有共享密码错误。 我认为这是一些配置问题对于密码。 可有人请点我朝着正确的方向。

谢谢

Answer 1:

  SSL_CTX_set_cipher_list(ctx, "HIGH:MEDIUM:!eNULL:!aNULL:!RC4"); 

我没有使用任何证书或密钥。

既然你没有使用证书,也没有SRP在没有服务器进行身份认证的唯一可能的密码是这样。 但是你没有明确排除这些密码与!aNULL在客户端和服务器。 这意味着没有客户端提供或接受由服务器加密的是能够与任何身份验证,导致“没有共享密码”的工作。 从文档密码 :

A零位
密码套件提供任何身份验证。 这是目前匿名DH算法。 这些密码套件容易受到“中间人”攻击,因此它们的使用通常气馁。



文章来源: No server certificate and “no shared cipher” when clients connect