2017-03-28 5 views
0

Ich weiß, dass das IdentityServerOptions.SigningCertificate verwendet wird, um die von IDS bereitgestellten Token zu signieren. Gibt es Bedenken, ob dieses Zertifikat außerhalb von IDS verfügbar ist? Ist es möglich, ein Zugriffs-Token zu erstellen, wenn Sie Zugriff auf dieses Zertifikat haben?Welche Sicherheitsbedenken gibt es bei der Freigabe des SigningCertificate

Wir haben uns gefragt, ob wir ein vorgefertigtes Zertifikat innerhalb des msi-Installers liefern sollen, oder wir müssen das SDK (oder makecert) liefern, um ein eindeutiges für jeden Client zu generieren. Offensichtlich ist die einfachste Möglichkeit, eine vorbereitete zu versenden, nur um die Risiken zu verstehen.

Antwort

1

Wie ich es verstehe, werden Sie eine Kopie von IdentityServer mit Ihrem System verteilen, so dass Sie viele Installationen mit ihrem eigenen IdentityServer haben werden.

Grundsätzlich muss IdentityServer Zugriff auf den privaten Schlüssel haben, um seine Token zu signieren. Wenn Sie also das gleiche Zertifikat + den privaten Schlüssel für alle Installationen bereitstellen, könnte eine Installation theoretisch den Token von einem anderen vertrauen. Offensichtlich ist auch der Inhalt der Tokens relevant, aber da dies Ihr System ist, ist es nicht so unwahrscheinlich, dass Bereiche, Ansprüche usw. in verschiedenen Installationen sinnvoll sind.

Wenn Sie eine bösartige Person in den Mix aufnehmen, können sie einfach den Inhalt des Tokens auswählen und unterschreiben, sie könnten sogar den IdentityServer-Code selbst verwenden, da dies Open Source ist.

Sie sollten überprüfen, ob Administratoren eine PFX-Datei laden oder ein Signaturzertifikat konfigurieren können, das in einem Zertifikatspeicher vorhanden ist. Es gibt verschiedene gotchas zu beiden Ansätzen dieser Blog-Post hat einige gute Informationen über Probleme, die auftreten können:

http://paulstovell.com/blog/x509certificate2

Sie auch prüfen wollen, werden, wie Sie Zertifikate erneuern, hat IdentityServer gute Unterstützung für diese, info hier in der Dokumentation:

https://identityserver.github.io/Documentation/docsv2/configuration/crypto.html

Edit:

bei meiner ersten Annahme ist falsch und es nur eine IdentityServer wird die w du wirst unter deiner Kontrolle sein und du wirst nur den öffentlichen Schlüssel verteilen, dann ist das in Ordnung! Hier ist eine gute Erklärung der öffentlichen vs privaten Schlüssel und Terminologie:

https://security.stackexchange.com/questions/29425/difference-between-pfx-and-cert-certificates

+0

Dank @ Matt. Dies bestätigte meine Befürchtungen mit diesem Ansatz. Sieht aus wie ein einzigartiges Zertifikat ist die Lösung hier. – gavins

Verwandte Themen