Frage:
Ist es sicher, Dienste über HTTPS zu nutzen, das nicht von einer vertrauenswürdigen Zertifizierungsstelle signiert ist?
Salman
2017-03-27 16:28:10 UTC
view on stackexchange narkive permalink

Ich erstelle eine Clientanwendung, die eine von einem Drittanbieter bereitgestellte Webdienstanwendung verwendet. Der Dienst wird mit einer HTTPS-URL angezeigt, die nicht von einer vertrauenswürdigen Zertifizierungsstelle signiert ist.

Ist es sicher, ihre Dienste in der aktuellen Situation zu nutzen? Beachten Sie, dass das Dienstleisterunternehmen uns bekannt ist und wir eine Geschäftsvereinbarung mit ihnen haben.

Ich denke, es ist von einer Zertifizierungsstelle signiert, die mit dem Dienstanbieter in Verbindung steht.
In einem verwandten Hinweis: [Google bringt Symantec zum Holzschuppen, weil 30.000 HTTPS-Zertifikate falsch ausgestellt wurden] (https://arstechnica.com/security/2017/03/google-takes-symantec-to-the-woodshed-for-mis-issuing-30000-https-certs /) ... also ist es vielleicht nur eine gültige Frage, ob es "sicher" ist, Dienste über HTTPS zu nutzen, die von einer vertrauenswürdigen Zertifizierungsstelle * signiert * sind ...
URLs werden nicht von Zertifizierungsstellen signiert.
Können sie, da sie bereits HTTPS eingerichtet haben, nicht einfach eine allgemein vertrauenswürdige Zertifizierungsstelle ihr Zertifikat signieren lassen?Das sollte billig oder kostenlos und einfach genug sein.
@DavidFoerster Drittanbieter erwerben das neue Zertifikat, das von einer vertrauenswürdigen Zertifizierungsstelle signiert wurde, nachdem wir das Problem mit ihnen angesprochen haben.
Sechs antworten:
Stephane
2017-03-27 17:27:17 UTC
view on stackexchange narkive permalink

Sie können es sicher verwenden, wenn Sie das Zertifikat anheften. Dies erhöht die Komplexität der Wartung und Bereitstellung, verbessert jedoch die Sicherheit.

Wenn Sie dies nicht tun, hängt dies davon ab, wie sie ihre Vertrauenskette aufgebaut haben: Wenn sie nur selbstsignierte Zertifikate verwenden, dann Sie Ich habe kein Glück und kann ihre Dienste nicht sicher nutzen. Wenn sie nur eine private Zertifizierungsstelle verwenden, können Sie ihre Zertifizierungsstelle weiterhin importieren und ihr vertrauen.

Insgesamt würde ich empfehlen, das Anheften von Zertifikaten (oder Root) zu implementieren.

Bearbeiten @LieRyan hat einen guten Kommentar abgegeben, für den ich gerne etwas ausgeben möchte.

In einigen Konfigurationen müssen Sie ihn zum Fixieren eines Zertifikats zu den Stammankerlisten des Computers hinzufügen. Dies ist beispielsweise erforderlich, wenn Sie IIS unter Windows zum Hosten Ihrer Anwendung verwenden.

Je nachdem, wie das Zertifikat generiert wurde, kann dies ein Problem sein oder auch nicht. Insbesondere: Wenn das Zertifikat eine "Schlüsselverwendung" -Eigenschaft hat und in dieser Eigenschaft NICHT "Zertifikatsignierung" aufgeführt ist, kann es sicher verwendet werden, da es nicht zum Signieren anderer Zertifikate verwendet werden kann (Details sind jedoch etwas komplexer Dies ist die wichtigste).

Wenn das Zertifikat KEINE "Schlüsselverwendung" -Eigenschaft hat oder wenn diese Eigenschaft "Zertifikatsignatur" hat, kann dies möglicherweise zu anderen von diesem Zertifikat signierten Zertifikaten führen vom Betriebssystem als vertrauenswürdig eingestuft werden. Wenn Sie das Fixieren von Zertifikaten implementiert haben, sollte dies kein Problem für Ihre App sein (da das Fixieren verhindert, dass auch ansonsten gültige Zertifikate verwendet werden), möglicherweise jedoch für einen anderen Teil des Betriebssystems.

Selbstsigniertes Zertifikat kann angeheftet oder in Ihrem Zertifikatspeicher gespeichert werden.Die Verwendung eines selbstsignierten Zertifikats macht das Ersetzen von Zertifikaten zwar komplexer, Sie benötigen jedoch keine Zertifizierungsstelle, um sicher zu kommunizieren, vorausgesetzt, Sie haben die Möglichkeit, die Identität der anderen Partei zu überprüfen.
Um einige dieser Herausforderungen zu vermeiden, könnte der Dritte [als Zertifizierungsstelle fungieren] (https://www.area536.com/projects/be-your-own-certificate-authority-with-openssl/).Dies würde den mit dem Ablauf des Zertifikats verbundenen Aufwand verringern.
Ist das Feststecken im Wesentlichen das, was ssh tut?Warum warnt es bei der ersten Verbindung vor dem Hostschlüssel und wenn sich der Hostschlüssel für eine Adresse ändert?
Im einfachsten Modell führt SSH das Anheften von Schlüsseln durch (das Anheften von Zertifikaten im gesamten X509-Zertifikat, während das Anheften von Schlüsseln nur den zugehörigen Schlüssel festhält).
Kenne ich schon.Cert Pinning funktioniert großartig.Tatsächlich vertraue ich ihm besser als dem Import ihrer Wurzel.
@LieRyan: Ein Problem mit letzterem ist, dass einige Betriebssysteme beginnen, dem Zertifikat als CA zu vertrauen.
Lie Ryan
2017-03-27 18:22:57 UTC
view on stackexchange narkive permalink

Ist es sicher, ihre Dienste in der aktuellen Situation zu nutzen?

Das ist eine geladene Frage. Lassen Sie es mich zusammenfassen:

Kann ich sicher mit ihnen kommunizieren, so dass sie von Dritten nicht abgefangen werden können?

Ja, das können Sie . Sie müssen jedoch die Schlüsselaustauschzeremonie und die Identitätsprüfung manuell durchführen, anstatt von der Zertifizierungsstelle abhängig zu sein. Dies kann beispielsweise dadurch erreicht werden, dass sich vertrauenswürdige Vertreter jedes Unternehmens regelmäßig treffen, um identifizierende Informationen auszutauschen und Schlüsselmaterialien (Zertifikate) auszutauschen. Die Sicherheit Ihrer Verbindung hängt von der Sicherheit dieses Austauschs ab. Sie müssen daher sicherstellen, dass Sie diesen Austausch mit der richtigen Sicherheitsstufe sichern.

Kann ich diesem Unternehmen vertrauen, dass es mich nicht betrügt?

Das ist ein rechtliches Problem. Beachten Sie, dass selbst öffentliche Zertifizierungsstellen diese Behauptung nicht tatsächlich machen. Eine öffentliche Zertifizierungsstelle behauptet lediglich, dass ein Schlüssel zu einer bestimmten Organisation gehört. Sie behauptet nicht die Moral des Unternehmens, das sie zertifizieren. Möglicherweise möchten Sie sicherstellen, dass Sie Verträge darüber haben, welche Art von Dienstleistungen Sie sich gegenseitig erbringen und ob Zahlungen abgewickelt werden müssen und was passiert, wenn eine Partei einseitig den Vertrag bricht.

Kann ich darauf vertrauen, dass dieses Unternehmen in der Lage ist, seine Sicherheit zu verwalten, um übermäßige Verluste zu vermeiden?

Das ist auch eine schwierige Frage. Sie möchten sicherstellen, dass in Ihrem Vertrag festgelegt ist, was passiert, wenn die andere Partei ihre Sicherheitsanforderungen nicht erfüllen kann und anderen von Ihnen Verluste verursacht. Möglicherweise möchten Sie auch von dem anderen Unternehmen die Vorlage eines Prüfungszertifikats durch einen unabhängigen Finanz- und / oder Sicherheitsprüfer verlangen.

Hier fehlt das Offensichtliche.(Kannst du darauf vertrauen, dass du mit ihnen kommunizierst und kein Betrüger? Nein, es sei denn, du machst eine Art Pinning.)
Das Anheften von @Tgr: wird im ersten Abschnitt meiner Antwort behandelt.Das Feststecken von Schlüsseln ist einfach eine Möglichkeit, "Schlüsselmaterialien auszutauschen", bei der das TOFU-Modell verwendet wird, anstatt das Zertifikat ordnungsgemäß zu authentifizieren.
Marcel
2017-03-27 16:40:30 UTC
view on stackexchange narkive permalink

Wie immer geht es darum, dass Sie dem Anbieter dieses Dienstes vertrauen.

In diesem Fall können Sie keine global bekannte Zertifizierungsstelle (Certificate Authority) weiterleiten, um die ohnehin fragwürdige Vertrauenswürdigkeit sicherzustellen.

Sie sollten wie immer beim Herstellen der Verbindung überprüfen der Aussteller des Zertifikats (die Zertifizierungsstelle) und ob Sie dieser Zertifizierungsstelle über Ihren lokalen Speicher vertrauen. Wenn Sie dem Zertifikat der lokal gespeicherten Zertifizierungsstelle vertrauen, ist dies nicht weniger sicher als (oder sogar sicherer als) die Verwendung einer Zertifizierungsstelle eines Drittanbieters.

Jaka
2017-03-27 18:41:11 UTC
view on stackexchange narkive permalink

Das Risiko der Verwendung eines selbstsignierten Zertifikats liegt beim Kunden. SSL-Zertifikate werden vom Client verwendet, um den öffentlichen Schlüssel des Servers zu kennen, der später für die Verschlüsselung verwendet wird. Durch die Verwendung eines von einer vertrauenswürdigen Zertifizierungsstelle signierten Zertifikats wird dem Client garantiert, dass der Schlüssel zum vorgesehenen Server gehört.

Wenn ein Client ein Zertifikat akzeptiert, das nicht von einer vertrauenswürdigen Zertifizierungsstelle signiert ist, besteht das Risiko, dass der Client mit einem gefälschten Server spricht (Man-in-Middle-Angriff kommt hierher). Wenn der Client einmal bestätigt, dass das Zertifikat echt ist, merkt sich der Browser das Zertifikat und zeigt beim nächsten Besuch keine Warnung an.

Es ist zu beachten, dass ein selbstsigniertes Zertifikat nicht " verwaltet "von einer CA, gibt es keinen möglichen Widerruf. Wenn ein Angreifer Ihren privaten Schlüssel stiehlt, verlieren Sie dauerhaft, während von der Zertifizierungsstelle ausgestellte Zertifikate immer noch das theoretische Sicherheitsnetz des Widerrufs haben (eine Möglichkeit für die Zertifizierungsstelle, zu erklären, dass ein bestimmtes Zertifikat verrottet ist).

Also Es wird empfohlen, Zertifikate zu verwenden, die von einer vertrauenswürdigen Zertifizierungsstelle signiert wurden. Wenn Sie es sich nicht leisten können, ein Zertifikat von CA zu erhalten, ist es besser, sich für das Anheften von Zertifikaten zu entscheiden, wie in der Antwort von stephane vorgeschlagen.

Zumindest in Firefox können Sie ein gespeichertes Zertifikat löschen, sodass die Clients dies tun können, wenn der private Schlüssel gestohlen wird.
Ja, es ist möglich, ein gespeichertes Zertifikat vom Client im Browser zu löschen, wenn der Server dem Client mitteilt, dass sein privater Schlüssel gestohlen wurde. Was aber, wenn der Client nicht erfährt, dass der private Schlüssel gestohlen wurde?
Serge Ballesta
2017-03-27 19:25:18 UTC
view on stackexchange narkive permalink

Ihre Frage kann mit enden. Kann ich einer HTTPS-URL vertrauen, die nicht von einer vertrauenswürdigen Zertifizierungsstelle signiert ist?

IMHO, es ist nicht genau die richtige Frage. Ich würde bevorzugen. Was kann sicherstellen, dass ich den richtigen Service konsultiere? Der Unterschied besteht nicht nur in der Formulierung. Es ist in dem, was Sie vertrauen können und wollen. Die Antwort auf die erste Frage lautet sofort Der Dienst sollte ein Zertifikat einer bekannten Zertifizierungsstelle verwenden. Die Antwort auf die zweite lautet Ich muss das Zertifikat oder die Zertifikatsautorität des Dienstes kennen, aber dieses Zertifikat kann selbstsigniert sein, sofern der Dienst es über einen alternativen Kanal bereitstellt. Dann deklarieren Sie einfach dieses Zertifikat oder ein selbstsigniertes Zertifikat, das es in der Anwendungskonfiguration validieren würde, und Sie können ihm vertrauen .

user160083
2017-03-27 18:39:23 UTC
view on stackexchange narkive permalink

Es ist nicht der Verbrauch des Dienstes, der Ihnen Sicherheit (Authentizität) bietet, sondern das Bewusstsein, wie Sie das vom Server empfangene Zertifikat überprüfen, das Sie von der Authentizität überzeugt.

Die Die Tatsache, dass Sie fragen, zeigt die Sicherheitsstufe, die Sie haben: Passiver Benutzer, der in Sicherheit aufsteigen möchte.

Die Verwendung einer bekannten (vom Betriebssystem) Zertifizierungsstelle macht den Verbrauch eines signierten Zertifikats für jeden sicher passiver Benutzer, weil das vertrauenswürdige System mit präzisen Informationen auf Anzeichen einer möglichen Nichtauthentizität warnen kann (Erklärung des "Möglichen" in einem gut verstandenen Zustand) oder keine Warnung, wenn alles in Ordnung ist (oder das gesamte System kompromittiert ist, was nicht stimmt) Umfang).

Sie sagten, dass Sie "eine Anwendung erstellen", obwohl die Anwendung selbst technisch jeden öffentlichen Schlüssel zum Vergleich enthalten und sich sicher verhalten könnte (in der Lage ist, die Authentizität zu überprüfen). Als Entwickler stelle ich in jüngster Zeit eine Tendenz fest, den Genehmigungsprozess für bereitgestellte Bibliotheken und öffentliche Anwendungen zu behindern, sogar mehr als nötig, selbstsignierte Zertifizierungsstellen (bei denen Selbstdefinition gut definiert ist), z. Dies tritt in https://stackoverflow.com/questions/30337322/how-do-i-register-my-own-root-certificate-authority-in-swift

auf


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...