<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof">
<span class="x_elementToProof ContentPasted1" style="font-size:12pt;margin:0px;background-color:rgb(255, 255, 255)">Buenos días, </span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof">
<div class="x_elementToProof" style="font-size:12pt;margin:0px;background-color:rgb(255, 255, 255)">
<br class="ContentPasted1">
</div>
<div class="x_elementToProof x_ContentPasted1 ContentPasted1" style="font-size:12pt;margin:0px;background-color:rgb(255, 255, 255)">
Lo primero muchas gracias por la respuesta, con la misma solicité el certificado a la parte contraria y me acaba de llegar, he intentado probar con el ca.crt que me han proporcionado y he obtenido el mismo resultado. He intentado hacer un root.pem partiendo
del ca.crt (openssl x509 -in ca.crt -out root.pem -outform PEM) y nada tampoco. </div>
<div class="x_elementToProof x_ContentPasted1" style="font-size:12pt;margin:0px;background-color:rgb(255, 255, 255)">
<br class="ContentPasted1">
</div>
<div class="x_elementToProof x_ContentPasted1 ContentPasted1" style="font-size:12pt;margin:0px;background-color:rgb(255, 255, 255)">
No sé si se le puede ocurrir algo mas de lo que debo estar haciendo mal, directamente le copio aquí la función de conectar, no está muy limpia, por lo que le pido perdón, llevaré 1000 intentos y ya estoy rozando el bloqueo.</div>
<div class="x_elementToProof x_ContentPasted1" style="font-size:12pt;margin:0px;background-color:rgb(255, 255, 255)">
<br class="ContentPasted1">
</div>
<div class="x_elementToProof x_ContentPasted1 x_ContentPasted2 x_ContentPasted3" style="font-size:12pt;margin:0px;background-color:rgb(255, 255, 255)">
<span style="font-size:10pt;margin:0px" class="ContentPasted1">int Conecta_WS()</span>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1">{</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> int err = 0;</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> int ret = 0;</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> int r = 0;</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> char aux_port[10];</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> char aux_conn1[126];</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> char aux_conn2[256];</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> char aux_conn3[2056];</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> char comando[1024];</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> char * encoded;</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> size_t bytes;</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> char user_pass_orig[512];</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> char user_pass_https[1024];</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> </span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> noPollConnOpts * opts;</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> noPollPtr user_data;</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> <span class="ContentPasted1"> </span><span style="margin:0px" class="ContentPasted1"> </span>SSL_CTX *ctx_ssl;</span></div>
<div style="margin:0px"><br class="x_ContentPasted3 ContentPasted1">
</div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> SSL_library_init();</span></div>
<div style="margin:0px"><br class="x_ContentPasted3 ContentPasted1">
</div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> tpp_logerror( "Conn_WS");</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> </span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> ctx = create_ctx ();</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> </span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> OpenSSL_add_all_algorithms();</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> SSL_load_error_strings();</span></div>
<div style="margin:0px"><br class="x_ContentPasted3 ContentPasted1">
</div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> memset(aux_port, 0, sizeof(aux_port));</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> sprintf(aux_port, "%d", puerto);</span></div>
<div style="margin:0px"><br class="x_ContentPasted3 ContentPasted1">
</div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> memset(aux_conn1, 0, sizeof(aux_conn1));</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> sprintf(aux_conn1, "%s:%s", url_pm, aux_port);</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> </span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> memset(aux_conn2, 0, sizeof(aux_conn2));</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> sprintf(aux_conn2, "https://%s", url_pm, aux_port);</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> </span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> tpp_logerror( "Conn_WS Con cert [%s][%s]", url_pm, aux_port);</span></div>
<div style="margin:0px"><br class="x_ContentPasted3 ContentPasted1">
</div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> opts = nopoll_conn_opts_new ();</span></div>
<div style="margin:0px"><br class="x_ContentPasted3 ContentPasted1">
</div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> memset(user_pass_orig, 0, sizeof(user_pass_orig));</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> memset(user_pass_https, 0, sizeof(user_pass_https));</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> strcpy(user_pass_orig, "txn-Avalon:TkWlUqkqQkX7yMs35ybGhVoUq6tQHKyE");</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> encoded = base64_encode(user_pass_orig, strlen(user_pass_orig), &bytes);</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> strncpy(user_pass_https, encoded, bytes);</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> user_pass_https[bytes] = '\0';</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> free(encoded);</span></div>
<div style="margin:0px"><br class="x_ContentPasted3 ContentPasted1">
</div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> tpp_logerror( "Header 1 : [%s]", user_pass_https);</span></div>
<div style="margin:0px"><br class="x_ContentPasted3 ContentPasted1">
</div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> memset(aux_conn3, 0, sizeof(aux_conn3));</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> sprintf(aux_conn3, "\r\nAuthorization: Basic %s \r\nX-Txn-Token: %s", user_pass_https, "zT5s3rEL6SCKwTYP2fdtPz7MJ");</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> //sprintf(aux_conn3, "\r\nAuthorization:Basic %s\r\nX-Txn-Token:%s",</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> // "dHhuLUF2YWxvbjpUa1dsVXFrcVFrWDd5TXMzNXliR2hWb1VxNnRRSEt5RQ==", "zT5s3rEL6SCKwTYP2fdtPz7MJ");</span></div>
<div style="margin:0px"><br class="x_ContentPasted3 ContentPasted1">
</div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> tpp_logerror( "Headers : [%s]", aux_conn3);</span></div>
<div style="margin:0px"><br class="x_ContentPasted3 ContentPasted1">
</div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> nopoll_conn_opts_set_extra_headers(opts, aux_conn3);</span></div>
<div style="margin:0px"><br class="x_ContentPasted3 ContentPasted1">
</div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> /* create options */</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1">// opts = nopoll_conn_opts_new ();</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1">// nopoll_conn_opts_set_ssl_protocol (opts, NOPOLL_METHOD_SSLV23); // 2</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1">// nopoll_conn_opts_set_ssl_protocol (opts, NOPOLL_METHOD_TLSV1); // 4</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1">// nopoll_conn_opts_set_ssl_protocol (opts, NOPOLL_METHOD_TLSV1_2); // 6</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> nopoll_conn_opts_set_ssl_protocol (opts, 6);</span></div>
<div style="margin:0px"><br class="x_ContentPasted3 ContentPasted1">
</div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> //nopoll_conn_opts_ssl_peer_verify (opts, nopoll_true);</span></div>
<div style="margin:0px"><br class="x_ContentPasted3 ContentPasted1">
</div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> tpp_logerror( "Certificados");</span></div>
<div style="margin:0px"><br class="x_ContentPasted3 ContentPasted1">
</div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> nopoll_conn_opts_set_ssl_certs (opts,</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> // certificate</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> "client.pem",</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> // private key</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> "client.pem",</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> NULL,</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> // ca certificate</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> "ca.crt");</span></div>
<div style="margin:0px"><br class="x_ContentPasted3 ContentPasted1">
</div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> tpp_logerror( "context creator");</span></div>
<div style="margin:0px"><br class="x_ContentPasted3 ContentPasted1">
</div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> nopoll_ctx_set_ssl_context_creator (ctx, ryd_ssl_context_creator, NULL);</span></div>
<div style="margin:0px"><br class="x_ContentPasted3 ContentPasted1">
</div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv3);</span></div>
<div style="margin:0px"><br class="x_ContentPasted3 ContentPasted1">
</div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> tpp_logerror( "antes tls_new");</span></div>
<div style="margin:0px"><br class="x_ContentPasted3 ContentPasted1">
</div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> conn = nopoll_conn_tls_new (ctx, opts, "185.201.145.235", aux_port, url_pm, "/ryd", NULL, aux_conn2);</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> //conn = nopoll_conn_tls_new (ctx, opts, url_pm, aux_port, aux_conn1, aux_conn2, NULL, NULL);</span></div>
<div style="margin:0px"><br class="x_ContentPasted3 ContentPasted1">
</div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> tpp_logerror( "Miramos si OK");</span></div>
<div style="margin:0px"><br class="x_ContentPasted3 ContentPasted1">
</div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> if(nopoll_conn_is_tls_on(conn))</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> {</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> tpp_logerror( "Habilitado el TLS");</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> }else</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> {</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> tpp_logerror( "No habilitado el TLS");</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> }</span></div>
<div style="margin:0px"><br class="x_ContentPasted3 ContentPasted1">
</div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> tpp_logerror( "antes conn ok");</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> </span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> // check connection</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> if (! nopoll_conn_is_ok (conn))</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> {</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> tpp_logerror ("ERROR: failed to start connection..");</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> return -1;</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> }</span></div>
<div style="margin:0px"><br class="x_ContentPasted3 ContentPasted1">
</div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> tpp_logerror ("Comprobar conexion 1...");</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> //if (!nopoll_conn_is_ready (conn) ) </span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> if (!nopoll_conn_wait_until_connection_ready (conn, 30) ) </span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> {</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> // here i check if the connection is ready</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> tpp_logerror ("Conn_WS ERROR 2: (conn=%p, conn->session=%d, NOPOLL_INVALID_SOCKET=%d, errno=%d, strerr=%s)",</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> conn, (int) nopoll_conn_socket (conn), (int) NOPOLL_INVALID_SOCKET, errno, strerror (errno));</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> //return nopoll_false;</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> return -1;</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> } </span></div>
<div style="margin:0px"><br class="x_ContentPasted3 ContentPasted1">
</div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> tpp_logerror ("INFO1: conn=%p, conn-id=%d, nopoll_conn_is_ok (%p)=%d, nopoll_conn_is_ready (%p)=%d...sending content",</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> <span class="ContentPasted1"> </span><span style="margin:0px" class="ContentPasted1"> </span><span style="margin:0px" class="ContentPasted1"> <span style="margin:0px" class="ContentPasted1"> </span></span>conn,
nopoll_conn_get_id (conn), conn,</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> <span class="ContentPasted1"> </span><span style="margin:0px" class="ContentPasted1"> </span><span style="margin:0px" class="ContentPasted1"> </span><span style="margin:0px" class="ContentPasted1"> </span>nopoll_conn_is_ok
(conn), conn,</span></div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> <span class="ContentPasted1"> </span><span style="margin:0px" class="ContentPasted1"> </span><span style="margin:0px" class="ContentPasted1"> </span><span style="margin:0px" class="ContentPasted1"> </span>nopoll_conn_is_ready
(conn));</span></div>
<div style="margin:0px"><br class="x_ContentPasted3 ContentPasted1">
</div>
<div class="x_ContentPasted3" style="margin:0px"><span style="font-size:10pt;margin:0px" class="ContentPasted1"> return 0;</span></div>
<span style="font-size:10pt;margin:0px" class="ContentPasted1">}</span><br class="ContentPasted1">
</div>
<div class="x_elementToProof" style="font-size:15px;font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;margin:0px;color:rgb(36, 36, 36);background-color:rgb(255, 255, 255)">
<div style="font-size:12pt;font-family:Calibri, Arial, Helvetica, sans-serif;margin:0px;color:rgb(0, 0, 0)">
<br class="ContentPasted1">
</div>
<div style="font-size:12pt;font-family:Calibri, Arial, Helvetica, sans-serif;margin:0px;color:rgb(0, 0, 0)" class="ContentPasted1">
Muchísimas gracias y un saludo.</div>
<div style="margin:0px">
<div style="margin:0px">
<div style="font-size:12pt;font-family:Calibri, Arial, Helvetica, sans-serif;margin:0px;color:rgb(0, 0, 0);background-color:rgb(255, 255, 255)">
<p style="margin:0cm;background-color:rgb(255, 255, 255)"><b><span data-ogsc="navy" class="x_ContentPasted0" style="font-size:9pt;font-family:Verdana, sans-serif;margin:0px;color:navy !important"></span></b></p>
</div>
<p style="margin-top:0px;margin-bottom:0px;font-family:"Times New Roman";font-size:medium" class="ContentPasted1">
</p>
<table style="font-family:Arial;max-height:159px;width:405px;max-width:405px">
<tbody>
<tr>
<td style="vertical-align:top;text-align:left;height:83px"><a href="https://www.avaloninformatica.com/" target="_blank" rel="noopener noreferrer" data-auth="NotApplicable" data-safelink="true" data-linkindex="0" style="margin:0px" class=""><img width="106" style="margin:0px;max-width:106px;display:block" class="ContentPasted1" src="https://avaloninformatica.com/email-signature/Avalon.gif"></a></td>
</tr>
<tr>
<td style="vertical-align:bottom;width:403px">
<h3 color="#13294B" style="margin:0px;font-size:12pt;line-height:24pt;color:rgb(19, 41, 75)">
<span style="margin:0px" class="ContentPasted1">Javier Mora Alonso</span></h3>
<p color="#13294B" style="margin:0px;color:rgb(44, 86, 151);font-size:11pt;line-height:14pt;font-style:italic">
<span style="margin:0px" class="ContentPasted1">Analista / Programador</span></p>
<p color="#13294B" style="margin:0px;color:rgb(44, 86, 151);font-size:11pt;line-height:14pt">
<span style="margin:0px" class="ContentPasted1">Desarrollo</span></p>
</td>
</tr>
<tr>
<td height="3" style="width:404.987px;border-bottom:1px solid rgb(19, 41, 75);border-left:none;display:block" class="ContentPasted1">
</td>
</tr>
<tr>
<td class="ContentPasted1"> </td>
</tr>
</tbody>
</table>
<div style="font-size:12pt;font-family:Calibri, Arial, Helvetica, sans-serif;margin:0px;color:rgb(0, 0, 0);background-color:rgb(255, 255, 255)">
<br class="ContentPasted1">
</div>
<div style="font-size:12pt;font-family:Calibri, Arial, Helvetica, sans-serif;margin:0px;color:rgb(0, 0, 0);background-color:rgb(255, 255, 255)">
<br class="ContentPasted1">
</div>
</div>
</div>
</div>
<div style="font-size:15px;font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;margin:0px;color:rgb(36, 36, 36);background-color:rgb(255, 255, 255)">
</div>
<hr tabindex="-1" style="color:rgb(36, 36, 36);font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;font-size:15px;background-color:rgb(255, 255, 255);display:inline-block;width:750.417px" class="ContentPasted1">
<div dir="ltr" style="font-size:15px;font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;margin:0px;color:rgb(36, 36, 36);background-color:rgb(255, 255, 255)">
<font face="Calibri, sans-serif" color="#000000" style="font-size:11pt" class="ContentPasted1"><b class="ContentPasted1">De:</b><span class="ContentPasted1"> </span>christian.pena@aspl.es <christian.pena@aspl.es><br class="ContentPasted1">
<b class="ContentPasted1">Enviado:</b><span class="ContentPasted1"> </span>miércoles, 8 de febrero de 2023 17:51<br class="ContentPasted1">
<b class="ContentPasted1">Para:</b><span class="ContentPasted1"> </span>Soporte | ASPL <soporte@aspl.es>; nopoll-owner@lists.aspl.es <nopoll-owner@lists.aspl.es>; Javier Mora Alonso <jmora@AVALONINFORMATICA.COM><br class="ContentPasted1">
<b class="ContentPasted1">Cc:</b><span class="ContentPasted1"> </span>soporte@aspl.es <soporte@aspl.es><br class="ContentPasted1">
<b class="ContentPasted1">Asunto:</b><span class="ContentPasted1"> </span>Re: Duda Nopoll SSL/TLS con certificados Cliente</font>
<div style="margin:0px" class="ContentPasted1"> </div>
</div>
<div style="font-size:15px;font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;margin:0px;color:rgb(36, 36, 36);background-color:rgb(255, 255, 255)">
<div style="margin:0px">
<p style="margin-top:0px;margin-bottom:0px;color:rgb(0, 137, 207);background-color:rgb(212, 210, 210);font-family:calibri;font-size:11pt;text-align:center" class="ContentPasted1">
REMITENTE EXTERNO.<span class="ContentPasted1"> </span><strong class="ContentPasted1">PRECAUCION con enlaces y adjuntos.</strong></p>
</div>
<div style="margin:0px" class="ContentPasted1">
<p style="margin-top:0px;margin-bottom:0px" class="ContentPasted1">Buenas Javier,<br class="ContentPasted1">
<br class="ContentPasted1">
Sin excluir que puede haber otros errores, el principal problema que vemos<br class="ContentPasted1">
está en la siguiente frase:<br class="ContentPasted1">
</p>
<div class="x_x_moz-cite-prefix" style="margin:0px"><br class="ContentPasted1">
</div>
<blockquote type="cite">
<div style="font-size:12pt;font-family:Calibri, Arial, Helvetica, sans-serif;margin:0px 0cm;color:rgb(0, 0, 0);background-color:rgb(255, 255, 255)" class="ContentPasted1">
Los certificados client.pem son los que nos ha proporcionado el servidor, el root.pem me he basado en sus ejemplos nopoll de TLS.</div>
</blockquote>
En concreto, no puedes utilizar una ca (bundle) de un lado y certificados de otro.<br class="ContentPasted1">
<br class="ContentPasted1">
Todo tiene que estar alineado para que la cadena de confianza funcione.<br class="ContentPasted1">
<br class="ContentPasted1">
Revisad para que el certificado client.pem (tengan private y certificado público alineado),<br class="ContentPasted1">
y que ambos estén firmados por una certificadora que reconozca el equipo desde donde<br class="ContentPasted1">
está siendo lanzada la conexión, y si no es posible, en ese caso, podéis pasar el ca certificate,<br class="ContentPasted1">
pero no uno cualquiera: tiene que ser el certificado raíz que haya sido usado para generar<br class="ContentPasted1">
ese client.pem que estáis pasando en la llamada.<br class="ContentPasted1">
<br class="ContentPasted1">
En definitiva, si ese "client.pem" os lo ha proporcionado el servidor, entonces también<br class="ContentPasted1">
os tiene que proporcionar el root.pem.<br class="ContentPasted1">
<br class="ContentPasted1">
Para ejemplificar todo esto, tienes en el siguiente enlace [1] un script que se usa para generar<br class="ContentPasted1">
una ca (root.pem), de ella derivamos un server.pem y un client.pem (todo ello alineado entre<br class="ContentPasted1">
sí mismo y con el root.pem), para poder ejecutar el test de regression: test_21 [2]:<br class="ContentPasted1">
<br class="ContentPasted1">
[1]<span class="ContentPasted1"> </span><a href="https://github.com/ASPLes/nopoll/blob/master/test/gen-certificates-test-21.sh" target="_blank" rel="noopener noreferrer" data-auth="NotApplicable" class="x_x_moz-txt-link-freetext ContentPasted1" data-safelink="true" data-linkindex="1" style="margin:0px">https://github.com/ASPLes/nopoll/blob/master/test/gen-certificates-test-21.sh</a><br class="ContentPasted1">
[2]<span class="ContentPasted1"> </span><a href="https://github.com/ASPLes/nopoll/blob/master/test/nopoll-regression-client.c" target="_blank" rel="noopener noreferrer" data-auth="NotApplicable" class="x_x_moz-txt-link-freetext ContentPasted1" data-safelink="true" data-linkindex="2" style="margin:0px">https://github.com/ASPLes/nopoll/blob/master/test/nopoll-regression-client.c</a><br class="ContentPasted1">
<br class="ContentPasted1">
Un saludo,</div>
</div>
<br>
</div>
<div class="elementToProof">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div id="Signature">
<div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<p style="margin: 0cm; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; text-align: start; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0);">
<b><span data-ogsc="navy" style="font-size:9pt;font-family:Verdana, sans-serif;margin:0px;color:navy !important" class="ContentPasted0"></span></b><br>
</p>
</div>
<p style="font-family:"Times New Roman";font-size:medium" class="ContentPasted2">
</p>
<table style="vertical-align:-webkit-baseline-middle;font-family:Arial;max-height:159px;width:405px;max-width:405px">
<tbody>
<tr>
<td style="vertical-align:top;text-align:left;height:83px"><a href="https://www.avaloninformatica.com/"><img width="106" style="max-width:106px;display:block" class="ContentPasted2" src="https://avaloninformatica.com/email-signature/Avalon.gif"></a></td>
</tr>
<tr>
<td style="vertical-align:bottom;width:403px">
<h3 color="#13294B" style="margin:0px;font-size:12pt;line-height:24pt;color:rgb(19, 41, 75)">
<span class="ContentPasted2">Javier Mora Alonso</span></h3>
<p color="#13294B" style="margin:0px;color:rgb(44, 86, 151);font-size:11pt;line-height:14pt;font-style:italic">
<span class="ContentPasted2">Analista / Programador</span></p>
<p color="#13294B" style="margin:0px;color:rgb(44, 86, 151);font-size:11pt;line-height:14pt">
<span class="ContentPasted2">Desarrollo</span></p>
</td>
</tr>
<tr>
<td height="3" style="width:404.987px;border-bottom:1px solid rgb(19, 41, 75);border-left:none;display:block" class="ContentPasted2">
</td>
</tr>
<tr>
<td class="ContentPasted2"> </td>
</tr>
<tr>
<td colspan="3">
<table style="vertical-align:-webkit-baseline-middle;width:404.987px" id="tableSelected0">
<tbody>
<tr style="vertical-align:middle">
<td width="25" height="25" style="vertical-align:middle"><img width="16" style="display:block" class="ContentPasted2" src="https://avaloninformatica.com/email-signature/phone-icon.png"></td>
<td height="25" style="color:rgb(19, 41, 75);vertical-align:middle"><a href="tel:+34916347750" color="#13294B" style="font-size:9pt;color:rgb(19, 41, 75) !important" class="ContentPasted2" data-loopstyle="link"><span style="color: rgb(19, 41, 75);">+34 916
347 750</span></a></td>
</tr>
<tr style="vertical-align:middle">
<td width="25" height="25" style="vertical-align:middle"><img width="16" style="display:block" class="ContentPasted2" src="https://avaloninformatica.com/email-signature/email-icon.png"></td>
<td height="25" style="color:rgb(19, 41, 75);vertical-align:middle"><span style="font-size: 9pt; background-color: rgb(255, 255, 255); color: rgb(19, 41, 75);"><a href="mailto:jmora@avaloninformatica.com" title="mailto:jmora@avaloninformatica.com" data-loopstyle="link"><span style="color: rgb(19, 41, 75);">jmora@avaloninformatica.com</span></a><a href="mailto:info@avaloninformatica.com" color="#13294B" class="ContentPasted2"></a></span></td>
</tr>
<tr style="vertical-align:middle">
<td width="25" height="25" style="vertical-align:middle"><img width="16" style="display:block" class="ContentPasted2" src="https://avaloninformatica.com/email-signature/link-icon.png"></td>
<td height="25" style="color:rgb(19, 41, 75);vertical-align:middle"><a href="https://avaloninformatica.com/" color="#13294B" style="font-size:9pt" class="ContentPasted2" data-loopstyle="link"><span style="color: rgb(19, 41, 75);">www.avaloninformatica.com</span></a></td>
</tr>
<tr style="vertical-align:middle">
<td width="25" height="25" style="vertical-align:middle"><img width="16" style="display:block" class="ContentPasted2" src="https://avaloninformatica.com/email-signature/linkedin.png"></td>
<td height="25" style="color:rgb(19, 41, 75);vertical-align:middle"><a href="https://www.linkedin.com/company/avalon-informatica-y-servicios-slu/" color="#13294B" style="font-size:9pt" class="ContentPasted2" data-loopstyle="link"><span style="color: rgb(19, 41, 75);">LinkedIN</span></a></td>
</tr>
<tr style="vertical-align:middle">
<td width="25" height="25" style="vertical-align:middle"><img width="16" style="display:block" class="ContentPasted2" src="https://avaloninformatica.com/email-signature/address-icon.png"></td>
<td height="25" style="color:rgb(19, 41, 75);vertical-align:middle"><a href="https://goo.gl/maps/Z8bPMxE1q5PJ9Tvk8" color="#13294B" style="font-size:9pt" class="ContentPasted2" data-loopstyle="link"><span style="color: rgb(19, 41, 75);">P. Empresarial El Carralero,
4. 28222 Majadahonda. Madrid (SPAIN)</span></a></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<div style="font-family:Arial;font-size:8pt;color:rgb(158, 158, 158)">
<p class="ContentPasted2">Este mensaje y cualquier archivo adjunto está destinado únicamente a quien se dirige y es confidencial. Si usted ha recibido este mensaje por error, comuníqueselo al remitente y bórrelo inmediatamente. La utilización, revelación y/o
reproducción del mensaje puede constituir un delito.</p>
<p class="ContentPasted2">PROTECCIÓN DE DATOS – Responsable: AVALON INFORMÁTICA Y SERVICIOS, S.L.U. Finalidad. Envío de información, respuesta a consultas y contactos genéricos, mientras dure nuestra relación y tengamos su consentimiento. Destinatarios. No
se cederán datos a terceros salvo obligación legal. Derechos. Puede ejercer los derechos de acceso, rectificación, supresión y oposición, limitar el tratamiento de sus datos, o directamente oponerse al tratamiento, o ejercer el derecho a la portabilidad de
los mismos. Todo ello, mediante escrito, acompañado de copia de documento oficial que le identifique, dirigido al RESPONSABLE. En caso de disconformidad con el tratamiento, también tiene derecho a presentar una reclamación ante la Agencia Española de Protección
de Datos. También podrá oponerse a nuestros envíos de comunicaciones comerciales (Art.21.2 de la LSSI) a través de la siguiente dirección de correo electrónico: info@avaloninformatica.com.</p>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<br>
</div>
</div>
</div>
</div>
</body>
</html>