UWP ServicePointManager.ServerCertificateValidationCallback

8

Ich habe eine Xamarin.Forms-App, die das Anheften von Zertifikaten mithilfe der ServicePointManager.ServerCertificateValidationCallback-Klasse und -Methode implementiert. Unter Android und iOS funktioniert dies ohne Probleme, da Verbindungen zu erwarteten Diensten, deren Zertifikatschlüssel angeheftet wurden, zugelassen werden und Verbindungen für diejenigen, die ich nicht habe, nicht zugelassen werden.

In UWP sind jedoch alle Verbindungen zulässig, unabhängig davon, ob der Zertifikatschlüssel fixiert wurde oder nicht. Ich habe explizit false von der Zertifikatvalidierungsmethode zurückgegeben und die Verbindung ist weiterhin zulässig. Ich bin sicher, dass die Überprüfung durchgeführt wird, während ich die Zertifikatvalidierungsmethode debuggt und durchlaufen habe.

Was könnte dazu führen, dass die Verbindung fortgesetzt wird, obwohl ich von der Validierungsprüfung false zurückgebe?

ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertficate;
private static bool ValidateServerCertficate(
   object sender,
   X509Certificate certificate,
   X509Chain chain,
   SslPolicyErrors sslPolicyErrors
)
{
   return false;
}
Jason
quelle
Der Rückruf löst also nicht die gleiche Situation aus.
Jason
Ruft ValidateServerCertficatedeine Seite an?
Nico Zhu - MSFT
ValidateServerCertificate wird aufgerufen, aber der Rückgabewert hat keinen Einfluss darauf, ob die Verbindung zulässig ist oder nicht
Jason

Antworten:

1

Ich konnte dies beheben durch:

  1. Doppelklicken Sie im UWP-Projekt auf die Datei Package.appxmanifest
  2. Wählen Sie im Menü Deklarationen in der Dropdown-Liste Verfügbare Deklarationen die Option Zertifikate aus
  3. Klicken Sie auf die Schaltfläche Hinzufügen
  4. Wählen Sie die Option Exklusive Vertrauenswürdigkeit

Dadurch wird die folgende XML-Datei in die Datei Package.appxmanifest eingefügt:

<Extensions>
   <Extension Category="windows.certificates">
     <Certificates>
       <TrustFlags ExclusiveTrust="true" />
     </Certificates>
   </Extension>
</Extensions>
Jason
quelle