diciembre 16, 2011

Compilar SQUID 2.7 en Ubuntu 10.10 con OpenSSL 1.0.0

En la nueva rama de OpenSSL 1.0.0 el soporte para SSL v2 ha sido eliminado, SSLv2 es un protocolo obsoleto que contiene múltiples fallos de seguridad que son fácilmente explotables, por tanto su uso debe ser evitado.

El problema ocurre cuando queremos compilar programas con versiones antiguas que hacen en su código uso de este protocolo, este es el caso de querer compilar desde código SQUID2.7 sobre una Ubuntu 10.10, obtendremos un error similar a:
ssl_support.o: In function `sslCreateServerContext':
/usr/src/proxy/squid-2.7.STABLE9/src/ssl_support.c:451: undefined reference to `SSLv2_server_method'
ssl_support.o: In function `sslCreateClientContext':
/usr/src/proxy/squid-2.7.STABLE9/src/ssl_support.c:614: undefined reference to `SSLv2_client_method'
collect2: ld returned 1 exit status

La solución pasa por parchear el código o eliminar las partes que requieren de funciones sslv2 tal como se puede observar en el siguiente patch
--- /usr/src/proxy/squid-2.7.STABLE9/src/ssl_support.c.orig     2011-12-16 12:54:54.000000000 +0100
+++ /usr/src/proxy/squid-2.7.STABLE9/src/ssl_support.c  2011-12-16 12:55:15.000000000 +0100
@@ -446,10 +446,12 @@
     ERR_clear_error();
     debug(83, 1) ("Initialising SSL.\n");
     switch (version) {
+#ifndef OPENSSL_NO_SSL2
     case 2:
        debug(83, 5) ("Using SSLv2.\n");
        method = SSLv2_server_method();
        break;
+#endif
     case 3:
        debug(83, 5) ("Using SSLv3.\n");
        method = SSLv3_server_method();
@@ -609,10 +611,12 @@
     ERR_clear_error();
     debug(83, 1) ("Initialising SSL.\n");
     switch (version) {
+#ifndef OPENSSL_NO_SSL2
     case 2:
        debug(83, 5) ("Using SSLv2.\n");
        method = SSLv2_client_method();
        break;
+#endif
     case 3:
        debug(83, 5) ("Using SSLv3.\n");
        method = SSLv3_client_method();

Para aplicarlo podemos copiar el contenido anterior en un archivo y ejecutar: patch -p0 < parche.txt

comentarios:

diegows dijo...

Gracias. la modificacion anduvo. Probaste postear este parche en el bugzilla de Squid?

hraban dijo...

gracias.

para ser honesto, pienso que es una locura que isso es necessario -_- editar la fuenta de Squid solamente para usarlo con HTTPS en debian.

bueno... por lo menos, fonctiona.