¿Cómo elige Apache qué certificado utilizar?

¿Cómo elige Apache qué certificado utilizar?

Actualmente, Apache aloja varios subdominios con certificados de host generados con certbot y un desafío http.

Ahora quiero configurar un host SSL virtual predeterminado para redirigir subdominios no existentes al principal. Para ello generaré un certificado comodín con desafío DNS.

Como actualmente no puedo automatizar la renovación con el desafío DNS, quiero usar el certificado comodín solo para el host SSL predeterminado en Apache.

Mi pregunta es: cuando se lleve a cabo la primera negociación entre Apache y el navegador, ¿Apache buscará primero el certificado en la configuración que coincida con el host solicitado, o Apache entregará el certificado comodín configurado en el host SSL predeterminado cada vez?

Respuesta1

Eldocumentación de apachecontiene una sección detallada sobre qué VirtualHost se elige para una solicitud. Una cita de la sección "Cómo selecciona el servidor el host virtual basado en el nombre adecuado":

Es importante reconocer que el primer paso en la resolución de hosts virtuales basada en nombres es la resolución basada en IP. La resolución de host virtual basada en nombre solo elige el host virtual basado en nombre más apropiado después de seleccionar los candidatos para obtener la mejor coincidencia basada en IP. El uso de un comodín (*) para la dirección IP en todas las directivas de VirtualHost hace que esta asignación basada en IP sea irrelevante.

Cuando llega una solicitud, el servidor encontrará el argumento <VirtualHost> que mejor coincida (el más específico) según la dirección IP y el puerto utilizados por la solicitud.Si hay más de un host virtual que contiene esta combinación de dirección y puerto que mejor coincide, Apache comparará aún más las directivas ServerName y ServerAlias ​​con el nombre del servidor presente en la solicitud.

Si omite la directiva ServerName de cualquier host virtual basado en nombres, el servidor utilizará de forma predeterminada un nombre de dominio completo (FQDN) derivado del nombre de host del sistema. Este nombre de servidor establecido implícitamente puede dar lugar a coincidencias de hosts virtuales contrarias a la intuición y no se recomienda.

Debe crear un VirtualHost predeterminado dedicado. Cada solicitud a un host que no figura explícitamente en otro bloque VirtualHost se dirigirá allí, por lo que puede elegir qué certificado desea usar allí.

Respuesta2

Apache le permite especificar la directiva SSLCertificateFile en el nivel de host virtual. VerArchivo de certificado SSL, que dice "Contexto: configuración del servidor, host virtual". Entonces, cualquiera que sea el host virtual que utilice para responder a la solicitud, ya sea el host virtual predeterminado u otro, utilizará el certificado que usted configure con SSLCertificateFile en ese host virtual.

¿Espero haber respondido a su pregunta?

información relacionada