La identificación del nombre del servidor (SNI) es una extensión del protocolo Secure Socket Layer (SSL) y TransportLayer Security (TLS) que le permite alojar varios certificados SSL en una única dirección IP (Protocolo de Internet). Este artículo describe cómo utilizar SNI para alojar varios certificados SSL en Apache®.
Requisitos
Su servidor debe cumplir con los siguientes requisitos para usar SNI:
- Apache v2.2.12 o posterior
- OpenSSL® v 0.9.8jo posterior
- mod_ssl debe estar instalado
Los siguientes sistemas operativos admiten SNI sin modificaciones adicionales:
- Red Hat® Enterprise Linux® (RHEL) 6 y posterior
- Fedora® 10 y posteriores
- CentOS® 6
- Debian® 6 y posteriores
- Ubuntu® 10.04 y posterior
Los siguientes sistemas operativos requieren que Apache, OpenSSL y mod_ssl se compilen con las versiones adecuadas:
- Red Hat Enterprise Linux 5
- Centos 5
Verifique que mod_ssl esté instalado
Antes de usar SNI, verifique que mod_ssl esté instalado ejecutando el siguiente comando:
RHEL, CentOS y Fedora
yum list installed | grep mod_ssl
Sistemas operativos Debian y Ubuntu
dpkg -s apache2.2-common
Si mod_ssl no está instalado, use el siguiente comando para instalarlo:
RHEL, CentOS y Fedora
yum install mod_ssl
Sistemas operativos Debian y Ubuntu
Para los sistemas operativos Debian y Ubuntu, instale mod_ssl usando el siguiente comando:
apt-get install apache2.2-common
Luego habilite el módulo ejecutando a2enmod ssl; /etc/init.d/apache2 reload
.
Configurar hosts virtuales
Agregue las siguientes líneas en su archivo de configuración raíz de Apache (apache2.conf o httpd.conf ):
# Ensure that Apache listens on port 443
Listen 443
# Listen for virtual host requests on all IP addresses
NameVirtualHost *:443
# Accept connections for these vhosts from non-SNI clients
SSLStrictSNIVHostCheck off
En el archivo de configuración de vhost para cada sitio, debe agregar su configuración de host virtual. Debería ser similar a los siguientes ejemplos:
Primer host virtual:
<VirtualHost *:443>
ServerName www.yoursite.com
DocumentRoot /var/www/site
SSLEngine on
SSLCertificateFile /path/to/www_yoursite_com.crt
SSLCertificateKeyFile /path/to/www_yoursite_com.key
SSLCertificateChainFile /path/to/DigiCertCA.crt
</Virtual Host>
Segundo host virtual:
<VirtualHost *:443>
ServerName www.yoursite2.com
DocumentRoot /var/www/site2
SSLEngine on
SSLCertificateFile /path/to/www_yoursite2_com.crt
SSLCertificateKeyFile /path/to/www_yoursite2_com.key
SSLCertificateChainFile /path/to/DigiCertCA.crt
</Virtual Host>
Puede probar la configuración con un certificado autofirmado utilizando el siguiente comando:
openssl req -new -nodes -keyout mykey.key -out mycert.cer -days 3650 -x509
Especifique el nombre de dominio en el Nombre común y luego reinicie Apache.
Navegadores compatibles
SNI es compatible con la mayoría de los navegadores, sin embargo, los navegadores más antiguos como Internet Explorer® 6 y cualquier navegador de Windows® XP® no son compatibles con SNI.
Navegadores de escritorio
-
Internet Explorer 7 y posteriores
-
Firefox® 2 y posteriores
-
Opera 8 con TLS 1.1 habilitado
-
Google Chrome®:
- Compatible con Windows XP en Chrome 6 y versiones posteriores
- Compatible con Vista y versiones posteriores de forma predeterminada
- Compatible con OS X 10.5.7 en Chrome versión 5.0.342.0 y posteriores
-
Chromium® 11.0.696.28 y posterior
-
Safari 2.1 y posterior (requiere OS X 10.5.6 y posterior o Windows Vista y posterior).
Navegadores móviles
- Mobile Safari para iOS 4.0 y posterior
- Android 3.0 (Honeycomb) y posterior
- Windows Phone 7 y posterior
Navegadores no compatibles
Los navegadores no compatibles cargan el certificado SSL del primer host virtual que carga Apache. En su lugar, puede mostrar un error 403 agregando la siguiente línea al archivo de configuración de Apache (apache2.conf o httpd.conf ):
SSLStrictSNIVHostCheck on