Visito mi sitio web usando Chrome en macOS Mojave, por ejemplo, qa.abc.com, y el certificado de hoja SSL es de customer-test.ssl.fastly.net. Recientemente actualicé el registro CNAME en mi DNS para qa.abc.com para que apunte a b3.shared.global.fastly.net. Cuando visito qa.abc.com, resuelve el certificado SSL en customer-test.ssl.fastly.net en lugar de b3.shared.global.fastly.net.
Uno pensaría que borrar el caché podría ser el truco, pero no, ya sea en el modo de incógnito de Chrome o en borrar su caché, sigue siendo lo mismo. Luego revisé Safari, Firefox e incluso traté de ejecutar el siguiente comando en mi Terminal:
echo | openssl s_client -connect qa.abc.com:443
siendo el resultado:
---
Certificate chain
0 s:/C=US/ST=California/L=San Francisco/O=Fastly, Inc./CN=customer-test.ssl.fastly.net
i:/C=BE/O=GlobalSign nv-sa/CN=GlobalSign CloudSSL CA - SHA256 - G3
1 s:/C=BE/O=GlobalSign nv-sa/CN=GlobalSign CloudSSL CA - SHA256 - G3
i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
Si entro en la máquina con Windows 10 de mi hermano en la misma red wifi, el sitio web extrae correctamente el certificado SSL de b3.shared.global.fastly.net. Si accedo al sitio a través de mi iPhone 6, se extrae correctamente de b3.shared.global.fastly.net. Si navego en mi MacBook a través de conexión en mi iPhone 6, aún aparece como customer-test.ssl.fastly.net.
Entonces, sabemos que:
Sospecho que la asignación entre un certificado SSL y un dominio se almacena en caché en algún lugar a nivel del sistema operativo.
Otras cosas que probé pero no funcionaron:
No hay almacenamiento en caché de certificados SSL como este. No es un problema de almacenamiento en caché en el cliente.
El problema aquí es con el servidor: presenta el certificado incorrecto (desde su punto de vista).
La razón por la que algunos clientes ven un certificado y otros ven otro probablemente se deba a CDN y/o al equilibrio de carga, lo que significa que en realidad no está alcanzando el mismo punto final. Parece probable que el servidor esté usando conexiones persistentes (también conocidas como sesiones pegajosas), lo que significa que su MacBook ve una cosa, pero su iPhone y su máquina con Windows 10 ven otra cosa.
Esto es algo que debe resolver a nivel de servidor. No tiene nada que ver con tu Mac como tal.
Entonces, resulta que lo que sucedió fue que asigné el dominio a una IP específica en mi archivo local /etc/hosts. Estaba apuntando a un nodo CDN que estaba entregando el certificado anterior. Una vez que eliminé la entrada, apuntaba a un nuevo nodo con el certificado correcto.