Sí y No.
Es posible tener varios certificados que tengan el mismo nombre de dominio. Podría tener un certificado Comodo example.org y un certificado Entrust example.org, ambos válidos y oficiales, no hay problema. Creo que algunos balanceadores de carga rotarán cuál se usa por conexión, pero solo de forma rotatoria.
El No indica que puede seleccionar qué certificado utilizar según el URI (/ vs. / criticalpath). El problema es que el URI solo está disponible después de que la conexión SSL se haya establecido mediante uno de los dos certificados. Por lo tanto, realmente no puede elegir qué certificado utilizar basándose en la información que solo puede tener después de haber elegido el certificado.
Ahora, no voy a decir que 100% es imposible. Con Apache, por ejemplo, puede configurar la configuración de SSLCipherSuite por directorio , por lo que no me sorprendería si hubiera alguna manera de forzar una renegociación que involucrara un nuevo certificado. Pero más bien sospecho que prácticamente no está implementado, incluso si es teóricamente posible. (Apache SSLCertificate * es por servidor o por host, no por directorio).
Apéndice : Reflexiones sobre la renegociación
Descargo de responsabilidad: no he hecho nada de esto, es una interpretación sencilla de los RFC y otros documentos. Decenas de personas aquí están mucho más calificadas para comentar que yo.
Voy a ver TLS 1.2, ya que está bien descrito en RFC 5246 .
Sección 7.4.1.1, "El servidor puede enviar el mensaje HelloRequest en cualquier momento". Eso debería hacer que el Cliente renegocie la conexión. (El cliente PUEDE ignorar esa solicitud y el servidor PUEDE interrumpir la conexión si el cliente ignora la solicitud por demasiado tiempo).
Una renegociación se parece mucho a una negociación inicial, aunque puede pasar algo de información de la negociación anterior hacia adelante para intentar suavizar el camino (por ejemplo, este es el código que acordamos la última vez ). Entonces, el Cliente envía un ClientHello , luego el servidor envía un ServerHello , luego el servidor envía un Server Certificate ( 7.4.2).
Mi lectura del RFC es que, sí, un servidor puede forzar la renegociación de una conexión, incluida la selección de un certificado de servidor diferente.
Seré honesto contigo, no sé que encontrarás el software existente que hará lo que quieras hacer. Le sugiero que comience a jugar con Perl Crypto :: OpenSSL o con Python's ssl lib para ver si puede probarlo.