Domanda

Sto tentando di effettuare una chiamata SSL utilizzando HTTPWebRequest e non riesco a stabilire la fiducia. Ho aggiunto un callback a ServicePointManager.ServerCertificateValidationCallback e restituendo true funziona sempre. Tuttavia, vorrei che le cose fossero un po 'più sicure di così. Osservando SslPolicyErrors nel metodo di convalida sembra che visualizzi un errore RemoteCertificateNameMismatch . Cosa non corrisponde correttamente per causare questo tipo di errore?

(modifica: vedi commenti nella risposta) Il sito a cui accedo utilizza HTTPBasic su SSL e un URL simile a v1.api.serviceprovider.com, con un certificato rilasciato a * .serviceprovider.com.

È stato utile?

Soluzione

Problemi di certificato generali:

  • certificato non emesso da un fornitore di certificati attendibili (deve essere nella catena di fiducia)
  • certificato scaduto

Questo errore specifico di solito indica che il certificato non è stato emesso per il sito che si sta colpendo. Esempi:

  • differenza tra " www.yoursite.com " e " yoursite.com " (sono diversi; alcuni grandi nomi sbagliano, il che mi dà davvero fastidio ...)
  • accedendo come indirizzo IP anziché come nome nel certificato; o v / v
  • un bilanciamento del carico che reindirizza l'utente a " server1, yoursite.com " ma dandoti il ??certificato da " yoursite.com "
  • un bilanciamento del carico che ti passa silenziosamente a "server1", che sta emettendo certificati per "server1", non il sito
  • ( modifica vedi commenti ) un certificato jolly emesso per più livelli - ovvero rilasciato a * .somesite.org, quando si colpisce foo.bar.somesite.org

La maggior parte di questi sono facilmente identificabili accedendo al sito e leggendo gli avvisi forniti dal browser e controllando il certificato emesso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top