Die Client-Code implementieren muß einen Remote-Web-api verbinden. SSL ist obligatorisch, weil vertrauliche Informationen auf der Leitung ausgetauscht werden. Wir haben unser selbst ausgestelltes Zertifikat a In dem Projekt gibt es derzeit nicht, was richtig in der Remote-IIS konfiguriert ist, und alles getestet OK, außer das Zertifikat ist nicht vertrauenswürdig.
Ich weiß, ich kann das Zertifikat auf dem lokalen Computer installieren und darauf vertrauen. Aus bestimmten Gründen (zum Beispiel gibt es Xamarin Android-Clients) ist es jedoch keine geeignete Lösung.
Aktuelle Abhilfe ist einfach das Zertifikat Fehler im Code zu ignorieren, die sowohl auf dem Desktop sowohl auf Android Xamarin arbeiten:
ServicePointManager.ServerCertificateValidationCallback =
(s, certificate, chain, sslPolicyErrors) =>
{
// Here I would like to check against that the certificate
// is the specific one I issued, and only that case return with true
// if (what is the most suitable to write here?)
return true;
};
Frage
Hinweis: Dies ist eine Entwicklung/Testphase. In der Produktion wird ein Zertifikat installiert, das von einer vertrauenswürdigen Zertifizierungsstelle erstellt wurde.
Jetzt habe ich ein schlechtes Gefühl etwas zu akzeptieren, also möchte ich es eingrenzen. So überprüfen Sie, ob das Zertifikat das spezifische ist, das ich ausgestellt habe, und nur dieser Fall wird mit true zurückgegeben. Ist das eine funktionierende Idee, den Code auszuführen, einen Haltepunkt zu setzen und das Zertifikat zu bekommen. Thumbprint, dann schreibe ein if, um dagegen zu prüfen?
(bearbeiten) ... oder besser ... die PublicKeyString und überprüfen Sie dagegen?
Sie können die Zertifikatserweiterung [Subject Key Identifier] (https://knowledge.symantec.com/support/registrar-name/index?page=content&actp=CROSSLINK&id=SO18140#SKI) überprüfen und nur bestimmte Werte zulassen. –
Mit Daumenabdruck können Sie es auf nur ein Zertifikat eingrenzen. Mit dem öffentlichen Schlüssel oder dem Schlüssel-Identifikator des Betreffs werden Sie auf dasselbe Schlüsselpaar, aber nicht auf dasselbe Zertifikat beschränkt. – pepo
Sobald Sie einen Bezeichner fest codieren, betten Sie einfach das gesamte Zertifikat als 'byte []' ein und vergleichen Sie das mit 'cert.RawData'. – bartonjs