Ошибка openssl: 1416D006: подпрограммы SSL: tls_process_key_exchange: EVP lib - PullRequest
0 голосов
/ 25 июня 2019

мы пытаемся установить соединение openssl TLS1.2 с агентом сервера и таким же образом действовать как клиент. При подключении к серверу возникает ошибка при функции SSL_connect(), ошибка: 1416D006: подпрограммы SSL: tls_process_key_exchange: EVP lib Добрый совет по этому же поводу.

Мы попытались с помощью OPENSSL команды s_client, и связь прошла успешно.

код -

SSL_CTX *ctxHSM1,*ctxHSM2;
    SSL *sslHSM1,*sslHSM2;

    const SSL_METHOD *method;
SSL_CTX *ctx;
OpenSSL_add_all_algorithms(); /* Load cryptos, et.al. */
SSL_load_error_strings(); /* Bring in and register error messages */

method = TLSv1_2_client_method(); /* Create new client-method instance */
ctx = SSL_CTX_new((SSL_METHOD *)method);   /* Create new context */

if (ctx == NULL) {
    ERR_print_errors_fp(stderr);
    abort();
}


    SSL_CTX_set_default_passwd_cb_userdata(ctx,"Pass123!@#");

    memset(LogStr,0x00,sizeof(LogStr));
    sprintf(LogStr,"CertFile[%s]KeyFile[%s]CAFile[%s]",CertFile,KeyFile,CAFile);
    LogMesgInLogFile(LogStr,IGNORE_ERROR, LOG_AND_RETURN,0,LogFileName);

    /* set the local certificate from CertFile **/
    LogMesgInLogFile("INSIDE LOAD CER - CTX USE CERT",IGNORE_ERROR, LOG_AND_RETURN,0,LogFileName);
    if (SSL_CTX_use_certificate_file(ctx, CertFile, SSL_FILETYPE_PEM) <= 0)
    {
        ERROR_SSL();
        ERR_print_errors_fp(stderr);
        return(FAILURE);
    }
    /* set the private key from KeyFile (may be the same as CertFile) */
    LogMesgInLogFile("INSIDE LOAD CER - CTX KEY FILE",IGNORE_ERROR, LOG_AND_RETURN,0,LogFileName);
    if (SSL_CTX_use_PrivateKey_file(ctx, KeyFile, SSL_FILETYPE_PEM) <= 0)
    {
        ERR_print_errors_fp(stderr);
        return(FAILURE);
    }

    LogMesgInLogFile("INSIDE LOAD CER - VERIFY CAFILE FILE",IGNORE_ERROR, LOG_AND_RETURN,0,LogFileName);
    if (SSL_CTX_load_verify_locations(ctx, CAFile, CA_DIR) < 1)
    {
        ERROR_SSL();
        LogMesgInLogFile("Error Settinf Verify Location",IGNORE_ERROR, LOG_AND_RETURN,0,LogFileName);
        return(FAILURE);
    }

    /* verify private key */
    SSL_CTX_set_verify(ctx,SSL_VERIFY_PEER ,NULL);
    ERROR_SSL();

            sslHSM1 = SSL_new(ctxHSM1);
            SSL_set_fd(sslHSM1,RacalPort1);
            if(SSL_connect(sslHSM1) == -1) /* perform the connection */
            {
            ERR_print_errors_fp(stderr);
            ERROR_SSL();
            LogMesgInLogFile("ERROR IN SSL HSM1 FED CONNECT",IGNORE_ERROR, LOG_AND_RETURN,0,LogFileName);
            return(FAILURE);
            }
            else
                    LogMesgInLogFile("SSL HSM1 AFTER CONNECT SUCCESSFULLY",IGNORE_ERROR, LOG_AND_RETURN,0,LogFileName);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...