4 Stimmen

Selbstsignierte Zertifikate - Benutzer müssen wissen, dass sie die Root CA zum vertrauenswürdigen Zertifikatspeicher hinzufügen müssen

Ich habe ein Desktop-Produkt, das einen eingebetteten Webserver verwendet, der selbstsignierte Zertifizierungen verwendet.

Gibt es etwas, das ich in eine Webseite einbauen kann, um zu erkennen, dass die Root-CA nicht zur Liste der vertrauenswürdigen Organisationen hinzugefügt wurde, und um einen Link oder DIV oder etwas anderes anzuzeigen, das die Benutzer anweist, dies zu tun?

Ich denke vielleicht eine DIV, die Anweisungen zur Installation der CA hat, und ein Javascript, das einige Test läuft (versucht, etwas ohne interne Warnungen zugreifen??), und versteckt die DIV, wenn der Test erfolgreich ist. Oder etwas in der Art...

Irgendwelche Ideen aus der brillanten SO-Gemeinschaft? :)

10voto

markusk Punkte 5960

Warum wollen Sie das tun? Es ist eine schlechte Idee, Benutzer dazu zu bringen, wahllos Root-CA-Zertifikate zu installieren, nur weil eine Website sie dazu auffordert. Sie untergraben damit die gesamte Vertrauenskette. Ein sicherheitsbewusster Benutzer würde Ihren Rat, das Zertifikat zu installieren, ignorieren und könnte daraus schließen, dass Sie die Sicherheit nicht ernst nehmen, da Sie sich nicht die Mühe gemacht haben, ein Zertifikat von einer bestehenden CA zu erwerben.

Brauchen Sie wirklich HTTPS? Wenn ja, sollten Sie in den sauren Apfel beißen und einen Vertrag mit einer Zertifizierungsstelle abschließen, damit Sie Ihren Kunden ordnungsgemäß von einer Zertifizierungsstelle signierte Serverzertifikate zur Verfügung stellen können. Wenn der Webserver nur für lokale Verbindungen von der Desktop-Anwendung aus verwendet wird, sollten Sie entweder das selbstsignierte Zertifikat als Teil des Installationsprozesses zur Liste der vertrauenswürdigen Zertifikate hinzufügen oder stattdessen zu HTTP wechseln.

0 Stimmen

Ich weiß die Sorge um die Sicherheit zu schätzen. Dies ist eine IT-Anwendung, und Passwörter werden weitergegeben. HTTPS ist also unbedingt erforderlich. Außerdem sind die Benutzer (meistens) sicherheitsbewusst, so dass sie verstehen, was sie tun. Sie haben die Möglichkeit, ihr eigenes von einer Zertifizierungsstelle signiertes Zertifikat bereitzustellen, wenn sie dies wünschen. Einige werden dies jedoch nicht tun, so dass wir die Möglichkeit haben, ein selbstsigniertes Zertifikat zu verwenden. Auch wenn die Kunden in der IT arbeiten, kennen sie nicht unbedingt die Schritte zur Installation eines Zertifikats. Wir würden also gerne helfen - aber nur, wenn es nötig ist.

0 Stimmen

Ich sitze hier und denke noch einmal darüber nach, was Sie gesagt haben. Bieten CAs irgendeine Art von Massen-Server-Zertifikaten an? Ich kann mir nicht vorstellen, dass sie das tun, aber ich schaue mich um und wäre dankbar für jeden Hinweis, den Sie haben könnten.

0 Stimmen

Hier sind einige Möglichkeiten bei Verisign und Thawte: verisign.com/authentication/enterprise-authentication/ , verisign.com/authentication/enterprise-authentication/ , thawte.com/digital-certificate-resellers/reseller-partners/ . Ich habe keine persönlichen Erfahrungen damit, aber ich würde davon ausgehen, dass die meisten großen Zertifizierungsstellen für eine Art von Wiederverkaufsvereinbarung offen wären.

2voto

abmv Punkte 6886

Angenommen, Sie beherrschen C# und möchten eine Pfx-Datei installieren, dann erstellen Sie eine Exe-Datei, die über eine URL ausgeführt wird. Folgen Sie dieser URL

0 Stimmen

Ich möchte das Zertifikat nicht für sie installieren - ich möchte feststellen, dass sie es noch nicht getan haben, und sie auf Hilfe verweisen (und möglicherweise auf eine Anwendung, die das für sie erledigt). Außerdem möchte ich mich nicht darauf verlassen, dass alle Clients das .NET-Framework installiert haben, so dass ich die Anwendung mit Win32 schreiben müsste :(

2voto

Einstein Punkte 4360

Die einzige Idee, die ich habe, ist, Frames und etwas Javascript zu verwenden.

Das erste Element des Frames fungiert als Watchdog und wartet eine bestimmte Zeit (javascript setTimeout), bevor es dem Benutzer eine benutzerdefinierte SSL-Fehlermeldung mit Hyperlinks oder Anweisungen zum Herunterladen des selbstsignierten Zertifikats anzeigt.

Das zweite Frame-Element versucht, die https-Verbindung herzustellen, und setzt bei Erfolg den Watchdog-Frame zurück, so dass er nie ausgelöst wird. Schlägt der Versuch fehl (z. B. weil die https-Zertifizierung fehlgeschlagen ist), wird die Watchdog-Meldung ausgelöst und dem Benutzer angezeigt.

Abhängig von Ihrem Browser werden Sie höchstwahrscheinlich immer noch eine Sicherheitswarnung mit diesem Ansatz sehen, aber Sie wären zumindest in der Lage, Ihre eigenen Inhalte zu pushen, ohne dass die Benutzer einen nicht vertrauenswürdigen Code ohne eine richtige Vertrauenskette ausführen müssen (dies wäre aus Sicht der Sicherheit viel schlimmer als die Akzeptanz von Zertifikatsvalidierungsfehlern und die Einrichtung einer nicht vertrauenswürdigen SSL-Sitzung)

Verbesserungen des Konzepts sind möglicherweise mit anderen Testmethoden wie XMLHttpRequest und anderen möglich.

0 Stimmen

Das ist kein schlechter Ansatz, aber ich kann keine Nicht-HTTPS-Seiten (d. h. einfache HTTP-Seiten) haben - es ist alles HTTPS. Aber ich versuche, etwas in die gleiche Richtung zu denken, die Sie erwähnen...

2voto

tomjen Punkte 3685

Sie sollten dies nicht tun. Root-Zertifikate lassen sich nicht einfach installieren, da das Hinzufügen eines solchen Zertifikats die Sicherheit von https gefährden könnte.

Wenn Sie jedoch eine Desktop-Anwendung erstellen, sollten Sie nur auf 127.0.0.1 hören. Auf diese Weise verlässt der Datenverkehr nie den Computer des Benutzers und kein Angreifer kann zuhören.

0 Stimmen

Ich verstehe Sie. Es handelt sich um eine Anwendung, auf die die Leute über das LAN und möglicherweise über das Internet zugreifen werden. Meine Konkurrenten unterstützen SSL überhaupt nicht - sie senden Anmeldedaten usw. unverschlüsselt. Ich versuche, es mit Verschlüsselung auf die nächste Stufe zu bringen - aber ich muss mit Browsern arbeiten :( Und da jeder diese Anwendung nutzen kann (sogar kostenlos), kann ich die Kosten für echte CA-signierte Zertifikate nicht tragen... Also suche ich nach dem sichersten Mittelweg, den ich finden kann. Nicht viel Mittelweg hier aber (wie auf der Spitze einer Nadel zu stehen)

0voto

Alexander Kosenkov Punkte 1570

Sie können versuchen, ein (verstecktes) Flex-Element oder Java-Applet einmal pro Benutzersitzung hinzuzufügen. Es lädt einfach eine beliebige https-Seite von Ihrem Server herunter und erhält alle Informationen über die Verbindung:

com.sun.deploy.security.CertificateHostnameVerifier.verify()
or
javax.security.cert.X509Certificate.checkValidity()

Ich nehme an, dass Flex (das von den Benutzern häufiger verwendet wird) ähnliche Möglichkeiten zur Validierung von https-Zertifikaten aus der Sicht des Benutzers haben sollte. Es sollte auch den vertrauenswürdigen Zertifikatspeicher des Betriebssystems nutzen, während Java seinen eigenen haben könnte.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X