es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

CL+SSL Error: Renegociación heredada insegura desactivada. ¿Cómo evitar o resolver este problema?

Estoy intentando acceder a un punto de conexión https para obtener algunos datos utilizando common-lisp(sbcl). Durante un tiempo esto funcionó sin problemas. Pero un día comencé a recibir el siguiente error:

failure in the SSL library occurred on handle #.(SB-SYS:INT-SAP #X7F8942815200) (return code: 1).
SSL error queue:
error:0A000152:SSL routines::unsafe legacy renegotiation disabled
   [Condition of type CL+SSL::SSL-ERROR-SSL]

He intentado usar tanto drakma como dexador, pero obtengo el mismo error en ambos. He confirmado a través de openssl que el servidor al que intento conectarme no admite renegociación.

Desde openssl s_client -connect

New, TLSv1/SSLv3, Cipher is AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS NOT supported

Estoy en OSX y mi versión de OpenSSL es LibreSSL 2.8.3.

Según mi comprensión, mi cliente está tratando de iniciar una renegociación, pero el servidor la está rechazando. Realmente no sé a dónde ir desde aquí y en este momento ni siquiera estoy seguro de en qué nivel está el problema en realidad, openSSL, CL+SSL o las librerías de cliente http construidas sobre CL+SSL. ¿Hay alguna manera de deshabilitar la renegociación o forzar una nueva conexión? ¿Hay alguna configuración que me esté perdiendo?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está relacionado con la desactivación de la renegociación SSL en el servidor. Como resultado, cualquier intento de iniciar una renegociación desde el cliente fallará.

    Para solucionar este problema, deberías desactivar la renegociación SSL también en el lado del cliente. Esto se puede hacer configurando las siguientes opciones SSL:

    ssl-op-no-renegotiation (3)
    

    Esta opción se puede configurar utilizando la función setf de la siguiente manera:

    (setf (ssl:ssl-op-no-renegotiation *ssl-parameters*) t)
    

    Si esto no funciona, es posible que debas actualizar tu versión de OpenSSL a una más reciente que admita la renegociación, o contactar al administrador del servidor para asegurarte de que la renegociación esté habilitada en su extremo.

Comments are closed.