¿Es posible tener claves/certificados de Severs en un virtualhost en Apache 2?
Pregunta
Me gustaría saber cómo puedo configurar mi Apache 2 (versión 2.0.64) para usar múltiples pares de clave/certificado para la autenticación mutua.
Más precisamente, he configurado mi apache para aceptar conexiones SSL en el puerto 443 utilizando esta configuración:
<VirtualHost _default_:443>
SSLEngine on
SSLCertificateFile certs/mycert.crt
SSLCertificateKeyFile certs/mykey.key
SSLCACertificateFile certs/ca.crt
.....
</VirtualHost>
Tengo 2 alias, digamos:
https://myserver/project1
https://myserver/project2
Me gustaría usar diferentes pares de clave/certificados (que mykey.key
/mycert.crt
) para autenticar al cliente que se conecte a mi segunda URL (https://myserver/project2
).
Lo intenté con el <Location>
y <LocationMatch>
Directivas, pero las directivas SSL no parecen ser apoyadas bajo estas.
¿Cómo se puede hacer esto?
Solución
Hay una extensión nombrada Indicación del nombre del servicio (también conocido como SNI) en tls. El cliente TLS indica el nombre del servidor al que está conectado; Por lo tanto, el servidor puede seleccionar la clave y el certificado correctos para usar.
De acuerdo con la Página de Sni Wikipedia Tanto los módulos Apache 2 MOD_SSL como MOD_GNUTLS parece admitir esta extensión y también numerosos clientes web
Un tutorial de configuración de Apache 2 está disponible aquí: http://en.gentoo-wiki.com/wiki/apache2/ssl_and_name_based_virtual_hosts
Otros consejos
Soluciones de posibles para tener SNI con Apache2:
- Actualizar Apache2 a la versión 2.2.x
- Compilar/instalar gnutls con apache2