Fallo en el Secure Socket Layer (SSL) Unknown SSL error (931

Posted by dilesc on 24-Jul-2018 09:35

Hello! I try to execute this code:

DEFINE VARIABLE hSocket       AS HANDLE    NO-UNDO. 
DEFINE VARIABLE cPort         AS CHARACTER NO-UNDO INITIAL "443". 
DEFINE VARIABLE lStatus       AS LOGICAL   NO-UNDO. 
DEFINE VARIABLE cSocketString AS CHARACTER NO-UNDO. 
DEFINE VARIABLE cHost         AS CHARACTER NO-UNDO INITIAL "productores.segurossura.com.ar". 

ASSIGN cSocketString = "-H " + cHost + " -S " + cPort + " -ssl".

CREATE SOCKET hSocket. 
ASSIGN lStatus = hSocket:CONNECT(cSocketString) NO-ERROR. 

IF lStatus THEN 
    MESSAGE "Socket connection OK!" VIEW-AS ALERT-BOX. 
ELSE 
    MESSAGE "Socket connection FAILED!" SKIP ERROR-STATUS:GET-MESSAGE(1) VIEW-AS ALERT-BOX. 

hSocket:DISCONNECT() NO-ERROR. 

DELETE OBJECT hSocket.



and i'm get this error:

" ....Fallo en el Secure Socket Layer (SSL). código de error 0: Unknown SSL error (9318) Fallo de conexion para host productores.segurossura.com.ar puerto 443 transporte TCP. (9407)..."

Can anyone help me?

Posted by dilesc on 08-Aug-2018 08:05

Hello! Thanks for you answer, I found the solution to the problem.

In Progress 11.7, in the socket connect there is a new parameter: "-servername". In this put the server url and achievement connection. Example:

cSocketString = "-H " + cHost + " -S " + cPort + " -ssl -servername " + cHost.

Thanks you all for your help

--Spanish Versión--

Encontré la solución al problema. En la versión 11.7 de Porgress, en la sentencia Connect del Socket, existe un nuevo parámetro "servername" en el cual colocando el dominio del servidor destino permite la conexión.

Gracias a todos por su ayuda

All Replies

Posted by David Abdala on 26-Jul-2018 05:50

Did you register the site certificate in the OpenEdge certificate store, with certutil?

Most SSL issues begins there..

-- Spanish version --

La mayoría de los problemas de conexión SSL empiezan con el registro del certificado del servidor en el repositorio de certificados de OpenEdge, lo cual deberías haber hecho con certutil.

Además siendo un sitio de Argentina (más aún, de una compañía de seguros de argentina) no me extrañaría que el certificado no sea "del todo correcto", en múltiples sentidos, lo cual agrega complejidad a la conexión.

Es probable que si se trata de una versión "vieja" de OpenEdge (para los estándares internacionales me refiero), tengas que especificar el protocolo y cifrado a utilizar para la conexión.

Suerte.

David.

Posted by Brian K. Maher on 26-Jul-2018 05:50

What version of OE are you running?
 
 
Brian Maher
Principal Engineer, Technical Support
Progress
Progress
14 Oak Park | Bedford, MA 01730 | USA
phone
+1 781 280 3075
 
 
Twitter
Facebook
LinkedIn
Google+
 
 

Posted by dilesc on 26-Jul-2018 07:49

I tested in 11.3 , 11.6 and 11.7

Posted by dilesc on 26-Jul-2018 08:19

Si, registré los certificados pero sigo obteniendo el mismo error.
"...Es probable que si se trata de una versión "vieja" de OpenEdge (para los estándares internacionales me refiero), tengas que especificar el protocolo y cifrado a utilizar para la conexión...." --> Con respecto a esto también probé de la siguiente manera (pero no estoy seguro de si es la forma correcta):

-- English Version --

Yes, I registered the certificates but I still get the same error.
"...Es probable que si se trata de una versión "vieja" de OpenEdge (para los estándares internacionales me refiero), 
tengas que especificar el protocolo y cifrado a utilizar para la conexión
...." --> I also tried it in the following way
(but I'm not sure if it's the correct way):

DEFINE VARIABLE hSocket       AS HANDLE    NO-UNDO. 
DEFINE VARIABLE cPort         AS CHARACTER NO-UNDO INITIAL "443". 
DEFINE VARIABLE lStatus       AS LOGICAL   NO-UNDO. 
DEFINE VARIABLE cSocketString AS CHARACTER NO-UNDO. 
DEFINE VARIABLE cHost         AS CHARACTER NO-UNDO INITIAL "productores.segurossura.com.ar". 
DEFINE VARIABLE cProtocols    AS CHARACTER NO-UNDO INITIAL "TLSv1".
DEFINE VARIABLE cCiphers      AS CHARACTER NO-UNDO INITIAL "AES128-SHA,RC4-SHA,DES-CBC3-SHA,DES-CBC-SHA,EXP-DES-CBC-SHA".

ASSIGN cSocketString = "-H " + cHost + " -S " + cPort + " -ssl -sslprotocols " + cProtocols + " -sslciphers " + cCiphers. 

CREATE SOCKET hSocket. 
ASSIGN lStatus = hSocket:CONNECT(cSocketString) NO-ERROR. 

IF lStatus THEN 
    MESSAGE "Socket connection OK!" VIEW-AS ALERT-BOX. 
ELSE 
    MESSAGE "Socket connection FAILED!" SKIP ERROR-STATUS:GET-MESSAGE(1) VIEW-AS ALERT-BOX. 

hSocket:DISCONNECT() NO-ERROR. 

DELETE OBJECT hSocket.

Pero sigue sin funcionar.

-- English Version --

But it still does not work.

Posted by David Abdala on 26-Jul-2018 10:00

The code seems ok.

Did you try with a plan wget ?

Doing a wget should work, if not, then the problem is not at your end.

Posted by dilesc on 08-Aug-2018 08:05

Hello! Thanks for you answer, I found the solution to the problem.

In Progress 11.7, in the socket connect there is a new parameter: "-servername". In this put the server url and achievement connection. Example:

cSocketString = "-H " + cHost + " -S " + cPort + " -ssl -servername " + cHost.

Thanks you all for your help

--Spanish Versión--

Encontré la solución al problema. En la versión 11.7 de Porgress, en la sentencia Connect del Socket, existe un nuevo parámetro "servername" en el cual colocando el dominio del servidor destino permite la conexión.

Gracias a todos por su ayuda

This thread is closed