Frage

Gibt es eine Möglichkeit für eine Java -Web -App, Informationen über eine HTTP -Anforderung auf die auf dem Maschine installierten Sicherheitszertifikate zu erhalten und selektiv Zugriff zu gewähren, wenn ein bestimmtes Zertifikat auf dem Computer installiert ist?

Grundsätzlich ist die Anforderung, dass die Webanwendung nur von einem Firmen -Laptop anliegt.

(Dies können Laptops mit bestimmten auf ihrer Maschine installierten Zertifikaten gewinnen oder von einem bestimmten Satz statischer IPs stammen.)

War es hilfreich?

Lösung

Ja, dies ist mithilfe von HTTPS -Client -Zertifikaten möglich. Das genaue Setup und die genaue Konfiguration hängt von Ihrem Anwendungsserver und den spezifischen Anforderungen ab. Ein gemeinsames Szenario ist jedoch, dass Sie eine interne CA (Zertifizierungsbehörde) für Unternehmen erstellen, um die Client -Zertifikate auszugeben, die möglicherweise auf bestimmte Client -IP -Adressen beschränkt sind und den Anwendungsserver konfigurieren können HTTPS -Connector benötigt ein Client -Zertifikat und Vertrauenszertifikate, die von Ihrer eigenen CA ausgestellt wurden.

Nachdem die ordnungsgemäße Konfiguration durchgeführt wurde, werden die Client -Zertifikate der Webanwendung über ein Servlet -Request -Attribut zur Verfügung gestellt:

X509Certificate[] certificates = (X509Certificate[])
    request.getAttribute("javax.servlet.request.X509Certificate");

Andere Tipps

Wie Jambjo sagte: Sie können Client -Zertifikate über HTTPS mit Client -Authentifizierung, wie er beschrieben hat, absolut erhalten. Ich würde empfehlen, dass ein Zertifikat über statische IPs schwieriger ist, wenn Sie das Netzwerk in Zukunft unterschiedlich neu konfigurieren müssen.

Ein paar andere Gedanken:

  • In fast jedem Anwendungsserver können Sie einen vertrauenswürdigen Zertifikatspeicher festlegen - die Liste der CA -Zertifikate, die Ihre Anwendung für HTTPS -Client -Authätigkeit akzeptiert. Beschränken Sie dies auf die CA, die Kundenzertifikate bereitstellt - entweder eine interne Firma CA oder einen Zertifikatanbieter.
  • Die Wahl des internen CA- oder CA -Anbieters ist ein Unternehmen. Eine interne CA nimmt Arbeitskräfte zum Einrichten und Wartung. Ein CA -Anbieter kostet Ihr Geld pro Zertifikat. Dort erreicht ein Kompromisspunkt, an dem es billiger ist, die Zertifikate selbst zu machen, aber bis Sie diesen Punkt erreicht haben, ist der CA -Anbieter möglicherweise billiger.
  • Wenn Sie eine interne CA haben und Ihre Regel lautet: "Jeder Unternehmensgerät (mit einem Zertifikat) kann auf diese Anwendung zugreifen", dann erfolgt Ihre Arbeit in der vertrauenswürdigen CA -Liste im Applicaiton -Server, da Sie wissen, dass die Firma CA nicht ist benutzt für alle außer Menschen in der Firma.
  • Wenn Sie einen CA -Anbieter haben, müssen Sie möglicherweise Ihre Zugriffskontrolle weiter einschränken und den Code -Jambjo verwenden, um das Zertifikat zu erhalten und Informationen darin zu betrachten. In der Regel gibt es eine Komponente der Organisation (O) und Organisationseinheit (OU) innerhalb des Subjekts DN (Distinguished Name), die Ihnen mitteilen, welche Organisation dieses Zertifikat erstellt hat. Sie sollten in der Lage sein, dies zu überprüfen, um sicherzustellen, dass Sie einen Firmencomputer haben.
  • Es ist praktikabel, das O- und O- und Ou zu überprüfen, wenn Sie wissen, dass Ihr CA -Anbieter niemals die O- und O -Namen Ihres Unternehmens an jeden außer einem Mitglied Ihres Unternehmens weitergibt. Wenn dies nicht der Fall ist, müssen Sie möglicherweise einen Back End -Datenspeicher (wie ein LDAP -Verzeichnis) überprüfen, um sicherzustellen, dass der Benutzer oder Benutzergerät Ihnen bekannt ist.
  • Es ist auch möglich, die IP -Adresse des Geräts mit dem Zertifikat zu verknüpfen - häufig wird ein Subjektname (Subjekt alternativer Name) verwendet, wenn das Zertifikat konstruiert wird. Ich würde es nicht empfehlen, da Sie ein neues Zertifikat benötigen, wenn Sie jemals die IP -Adresse des Computers ändern. Es scheint unnötig komplex für Ihre Zwecke.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top