[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]
[Hilos de Discusión] [Fecha] [Tema] [Autor]Eduardo Sacristan wrote: > No es asi, no tiene nada que ver con los certificados ni con los virtual > hosts que declaras en la configuracion del apache. No estoy de acuerdo. Tiene que ver con la configuración del Apache cuando declaras el host virtual que van con ssl habilitado porque ahí le dices dónde se encuentra la llave que va a cargar al arancar y dónde se encuentra el certificado que va a mandar durante la negociación de ssl cuando llegue a ese host virtual. > El SSL tiene que hacer un "handshake" para establecer la conexion segura > antes de intercambiar cualquier tipo informacion con el protocolo HTTP, > Para hacer esta conexion inicial se utiliza el protocolo SSL y no > el HTTP (este, HTTPS, corre sobre el SSL) y requiere la IP del servidor. Todos los handshakes de todos los protocolos que usan TCP/IP requieren la IP dle servidor ¿no? > El virtual host que declaras en tu configuracion del Apache ya es > utilizado cuando "entra" en funciones el HTTP por lo que el SSL no puede > saber antes que existe este virtualhost. Cuando arranca el APACHE revisa que no haya dos hosts virtuales habilitados con SSL (o uno con SSL y el otro sin SSL) escuchando al mismo tiempo en la misma dirección IP y en el mismo puerto. Si se encuentra una combinación así se niega a arrancar. Una vez que arranca carga en memoria todas las llaves privadas de todos los hosts virtuales habilitados con SSL, te pide las contraseñas de las llaves que se encuentra encriptadas. > > Pa' no echar mas rollo, del FAQ del manual del modssl: > (http://www.modssl.org/docs/2.8/ssl_faq.html#ToC47) > > Why can't I use SSL with name-based/non-IP-based virtual hosts? [L] Pero no dice que no se pueda usar SSL en hosts virtuales basados en IP o hosts virtuales basados en puerto. Y aunque te excluya de usar hosts virtuales basados en nombre no te prohibe usar varios ServerAlias en la definición del host virtual y manejar la virtualización de hosts dentro de tu motor de aplicaciones. > The reason is very technical. Actually it's some sort of a chicken and egg > problem: The SSL protocol layer stays below the HTTP protocol layer and > encapsulates HTTP. When an SSL connection (HTTPS) is established > Apache/mod_ssl has to negotiate the SSL protocol parameters with the > client. For this mod_ssl has to consult the configuration of the virtual > server (for instance it has to look for the cipher suite, the server > certificate, etc.). En este momento es donde tu cliente verifica el commonName (CN) del certifiacdo que te manda el servidor contra el nombre del host que estás pidiendo en la URL. El servidor sólamente puede mandar un certificado por cada combinación de host y puerto mientras que el DNS te puede resolver un número indefinido de hosts que apunten hacia la misma IP y si tu host virtual escucha en el puerto 443 (el default) no necesitas poner el puerto en la URL. De ahí que si dos o más hosts te resuelven la misma IP y pudes en la URL cada uno de esos hosts, sólamente el que concuerde con el CN del certificado te va a dejar pasar sin que tu cliente proteste. De ahí que Gunnar tiene razón cuando dice ' Sí, vas a poder usar los > hosts virtuales, pero tu navegador se quejará de que el certificado no > corresponde y hará pensar al usuario en posibles ataques de > personificación de terceros.'; > But in order to dispatch to the correct virtual server > Apache has to know the Host HTTP header field. Eso no lo conoce hasta después de que terminó la negociación de SSL y ya puede comenzar a pasar el http dentro del SSL. > For this the HTTP request > header has to be read. This cannot be done before the SSL handshake is > finished. But the information is already needed at the SSL handshake > phase. Bingo! La información que se necesita para el handshake del SSL no la puede tomar del host virtual, entonces la toma del par IP/puerto que concuerde de la lista de los que ya tiene cargados desde que arrancó. > > Y por lo mismo, no tiene que ver con el certificado, este tambien lo pones > en la configuracion del apache y no se lee hasta despues que el SSL ha > establecido la conexion Si no recuerdo mal, el certificado se tiene que mandar en la negociación anes de establecer la conexión porque dentro del certificado entre otras cosas se encuentra la llave pública del host virtual sin la cual no se puede establecer ninguna conexión segura entre dos enrte que desconfían el uno del otro. Es por eso que cuando instalas los certificados tienes que crear una liga cuyo nombre sea el hash del certificado porque lo único con lo que el Apache cuenta al momento del handshake es la llave privada que tiene cargada en al memoria y a partir de ésta tiene que buscar el certificado que tiene que mandarle al cliente. > y el HTTP puede "ver" al virtual host. Bueno, como todo esto es muy confuso se me ocurrió hacer una demostración de lo que decía Gunnar sobre la queja del cliente que recibe un certificado malo con la siguiente tercia de hosts virtuales que apuntan hacia la misma IP y te redirigen hacia la misma IP en el mismo puerto: http://bueno.prueba.sip.gob.mx/ http://malo.prueba.sip.gob.mx/ http://www.prueba.sip.gob.mx/ <-- es muy acostumbrado poner un ServerAlias con la versión www del sitio y lo que sucede no es bueno. Para usar correctamente la demostración necesitan cargar el certificado del sitio http://ac.sip.gob.mx/server.bueno.prueba.sip.gob.mx.RSA.crt que tiene las siguientes huellas digitales: MD5 Fingerprint=5F:F6:78:E2:69:EF:F1:C1:B6:FF:3B:63:28:5E:A6:D5 SHA Fingerprint=5E:80:51:75:A1:6B:96:9A:7C:12:B8:F8:6A:67:24:1B:BD:D1:2A:4A SHA1 Fingerprint=0B:D8:62:95:D5:67:B2:17:A2:1E:6B:1B:33:90:11:CD:5F:11:E0:E5 O cargar el certificado de mi CA http://ac.sip.gob.mx/ca.RSA.crt que tiene las siguientes huellas digitales: SHA1 Fingerprint=BE:B2:7F:17:BC:39:86:1C:DE:D1:37:E9:73:C0:0B:48:FD:8B:C3:26 SHA Fingerprint=53:7B:9F:73:1E:CE:86:4B:88:D5:ED:88:A1:73:D3:50:B1:E5:7E:23 MD5 Fingerprint=CA:D0:38:7B:C8:3A:D6:AC:4D:3F:B8:65:1A:58:1A:C8 -- Sandino Araico Sánchez The safest web site in the world is worthless if most TCP implementations cannot transfer data from it. RFC2923 _______________________________________________ Ayuda mailing list Ayuda en linux org mx Para salir de la lista: http://mail.linux.org.mx/mailman/listinfo/ayuda/