[nuova risposta basata su una migliore comprensione della domanda basata sui commenti OP a prima, ora cancellata, risposta]
Is there any way for my website to tell a browser to disallow a
substitute MITM certificate like those used by corporate proxy
servers?
Ci sono, anche se sono soluzioni progettate per prevenire il danno causato da certificati che sono stati erroneamente emessi da una CA. Due di queste soluzioni sono HPKP e DANE. Tuttavia, questi sono in declino quando altre soluzioni diverse (che non aiutano il tuo caso d'uso) entrano in gioco.
HTTP Public Key Pinning (HPK) coinvolge il server che comunica quali certificati sono validi per il browser all'interno delle intestazioni HTTP. È stato tuttavia deprecato "a causa della sua complessità e dei pericolosi effetti collaterali". Ma vale la pena notare in particolare perché, pertinente alla tua domanda,
Most browsers disable pinning for certificate chains with private root
certificates to enable various corporate content inspection
scanners and web debugging tools (such as mitmproxy or Fiddler).
The RFC 7469 standard recommends disabling pinning violation reports
for "user-defined" root certificates, where it is "acceptable" for the
browser to disable pin validation.
In altre parole - ci sono dei ganci per consentire il Corporate MITM anche in HPKP.
Autenticazione basata su DNS di entità nominate (DANE) fa qualcosa di simile, mettendo informazioni su certificati accettabili in DNS inserimenti. Tuttavia, non sembra che abbia un ottimo supporto per i browser e, se i Corporate Overlords stanno imponendo MITM al proxy, sono anche in grado di oscurare le query DNS necessarie.
Le nuove soluzioni al problema dei certificati "fasulli" si sono spostate dal browser e, in quanto tali, non sono utili ai fini dell'utente. Autorizzazione dell'autorità di certificazione DNS (CAA) consente agli amministratori del server di pubblicare un record DNS che identifica la CA corretta che utilizzano; tuttavia, questo viene utilizzato da altre CA come controllo per evitare richieste dannose di certificati da parte di soggetti diversi dal proprietario del dominio. I browser non usano questo record per verificare nulla.
Allo stesso modo, Certificate Transparency (CT) richiede alle CA di pubblicare i certificati rilasciati, consentendo soggetti e terze parti cercare certificati dannosi. Tuttavia, questo non è qualcosa che i browser usano, neanche.
Teoricamente , se vuoi diventare creativo e lanciare da solo, puoi usare Implementazione di JavaScript TLS JavaScript per aprire una sessione TLS dal browser dell'utente al server ai fini dell'ispezione del certificato. Se il certificato non è tuo, c'è il MITM in corso! Quindi è possibile eseguire azioni sul lato client (ad es., Visualizzare un avviso) o sul lato server (ad esempio, interrompere l'accesso o, se è già stato effettuato l'accesso, disconnettere l'utente). Potrebbe essere difficile distinguere il proxy che il browser è configurato per utilizzare, sebbene ...