Ich besuche meine Website mit Chrome unter macOS Mojave, z. B. qa.abc.com, und das SSL-Blattzertifikat stammt von customer-test.ssl.fastly.net. Ich habe kürzlich den CNAME-Eintrag in meinem DNS für qa.abc.com aktualisiert, sodass er auf b3.shared.global.fastly.net verweisen sollte. Wenn ich qa.abc.com besuche, löst es das SSL-Zertifikat bei customer-test.ssl.fastly.net anstelle von b3.shared.global.fastly.net auf.
Sie würden denken, dass das Leeren des Caches ausreichen könnte, aber nein, egal, ob es sich um den Inkognito-Modus von Chrome handelt oder um das Löschen des Caches, es ist immer noch dasselbe. Dann habe ich sowohl Safari als auch Firefox überprüft und sogar versucht, den folgenden Befehl in meinem Terminal auszuführen:
echo | openssl s_client -connect qa.abc.com:443
mit dem Ergebnis:
---
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
Wenn ich im selben WLAN-Netzwerk auf den Windows 10-Computer meines Bruders springe, zieht die Website das SSL-Zertifikat korrekt von b3.shared.global.fastly.net. Wenn ich über mein iPhone 6 auf die Site zugreife, wird sie korrekt von b3.shared.global.fastly.net abgerufen. Wenn ich auf meinem MacBook per Tethering auf meinem iPhone 6 surfe, wird es immer noch als customer-test.ssl.fastly.net angezeigt.
Wir wissen also:
Ich vermute, dass die Zuordnung zwischen einem SSL-Zertifikat und einer Domäne irgendwo auf Betriebssystemebene zwischengespeichert wird.
Andere Dinge, die ich versucht habe, aber nicht funktioniert haben:
Es gibt kein solches Caching von SSL-Zertifikaten. Es ist kein Caching-Problem auf dem Client.
Das Problem liegt hier beim Server - er präsentiert das falsche Zertifikat (aus Ihrer Sicht).
Der Grund dafür, dass einige Clients ein Zertifikat und andere ein anderes sehen, ist höchstwahrscheinlich auf CDN und/oder Lastenausgleich zurückzuführen, was bedeutet, dass Sie nicht wirklich denselben Endpunkt erreichen. Es klingt wahrscheinlich, dass der Server dauerhafte Verbindungen (auch bekannt als Sticky Sessions) verwendet, was bedeutet, dass Ihr MacBook eine Sache sieht, aber Ihr iPhone und Ihr Windows 10-Computer eine andere Sache.
Dies ist etwas, das Sie auf Serverebene lösen müssen. Es hat nichts mit Ihrem Mac als solchem zu tun.
Es stellte sich also heraus, dass ich die Domain einer bestimmten IP in meiner lokalen /etc/hosts-Datei zugeordnet hatte. Es zeigte auf einen CDN-Knoten, der das alte Zertifikat bereitstellte. Nachdem ich den Eintrag entfernt hatte, zeigte er auf einen neuen Knoten mit dem richtigen Zertifikat.