Solución 1
Hay una forma de hacerlo, pero es tan esotérico que sería mejor esperar a que la empresa cliente le otorgue un certificado apropiado (o consulte Solución 2 ). Especialmente ya que Solución 1 * podría generar ciertos riesgos de auditoría, ya que los auditores son notoriamente conservadores de las soluciones tecnológicas.
Pero si usted y los técnicos de la empresa cliente prefieren pedir perdón en lugar de permiso, puede hacer lo siguiente:
- Los técnicos del cliente configuran un servicio web seguro que tiene acceso a uno de sus certificados SSL que coincide con el dominio del cliente en cuestión. Este servicio web se bloqueará en un grado insano específico para su servidor.
- Su servidor admite la extensión Indicación del nombre del servidor para TLS.
- Si el navegador llega con un RFC-6066
server_name
que coincide con su dominio, proceda como de costumbre. El navegador obtiene felizmente el certificado para el dominio que esperaba, todo está feliz en el mundo.
- Si el navegador llega con un RFC-6066
server_name
que coincide con el dominio cliente , cambie su protocolo de enlace TLS al modo proxy transparente y reenvíe todo el tráfico al servicio web especial del cliente **. Ahora estás actuando como proxy / enrutador de paquetes, no hay nada divertido en el medio.
- El servicio web del cliente hace su trabajo con el certificado que espera el navegador y devuelve una redirección temporal 302 cifrada a su dominio. p.ej. %código%. Es todo lo que este servicio web de cliente debe hacer.
- La conexión TLS está cortada. Y más adelante, obtendrás una solicitud de conexión diferente para HTTPS a tu dominio desde ese navegador. No es que hayas sabido que recibieron una instrucción de redireccionamiento, ya que ese era un tráfico que no podías descifrar, sino simplemente un proxy. ;-)
Entonces:
A. Browser ===[client.com]==> https://vendor.com ==(client W/S)==> https://client.com
B. https://client.com ==[302 redirect]==> http://vendor.com ==[302 redirect]==> Browser
C. Browser ==[vendor.com]==> https://vendor.com
* Solution 1 se me ocurrió primero y sí permite que el CNAME (¿mal configurado?) siga apuntando a la IP del proveedor; de lo contrario, convertiría a Solución 2 en la primera solución.
** Nunca he visto esto en la naturaleza, así que no estoy seguro de si hay un proxy transparente La mitad de un protocolo SSL funcionaría en la práctica.
Solución 2
La solución 1, por supuesto, supone que no ocultan su servicio debajo de su dominio por XSS o por otros motivos de agregación de contenido.
Si lo son, la solución mucho más común es pedirles que no establezcan su CNAME de dominio en su IP * pero que configuren un proxy inverso HTTPS de cliente que se comunique con su sitio bajo el capó.
* Cosa estúpida que hacer para HTTPS: debido a la ambigüedad de propiedad y control que causa a los proveedores.