Apache Jboss SSL-Authentifizierung
Resummarising meine Frage:
Habe ich einen Apache web-server vor den Jboss.
unten ist das ssl-Teil in die Httpd-conf
ProxyRequests Off
SSLProxyEngine on
SSLCertificateFile
/FinMgmt/deploy/https/certs/webserver/fm.insurance.co.uk_a_cert.pem
SSLCertificateKeyFile
/FinMgmt/deploy/https/certs/webserver/fm.insurance.co.uk_a_key.pem
SSLCACertificateFile
/FinMgmt/deploy/https/certs/fm.insurance.co.uk_CA_cert.pem
SSLVerifyClient optional_no_ca
SSLOptions +ExportCertData
ProxyPass /webapp1 https://fm.insurance.co.uk:8443/webapp1
ProxyPassReverse /webapp1 https://fm.insurance.co.uk:8443/webapp1
ProxyPass /webapp2 https://fm.insurance.co.uk:8443/webapp2
ProxyPassReverse /webapp2 https://fm.insurance.co.uk:8443/webapp2
Unten ist das ssl-Teil von jboss server.xml:
<!-- SSL/TLS Connector configuration using the admin devl guide keystore clientAuth=false -->
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="500" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="${jboss.server.home.dir}/conf/server.keystore"
keystorePass="glamdev"
truststoreFile="${jboss.server.home.dir}/conf/server.truststore"
truststorePass="passwd"/>
Gemäß meinem Verständnis, Apache konfiguriert ist, verwenden Sie 2-Wege-gegenseitige Authentifizierung mit SSLVerifyClient optional_no_ca Bedeutung, die client können oder maynot bieten das Zertifikat.
Nun jboss konfiguriert ist, um eine Wege-SSL-Authentifizierung.
Nun was ich verstehe ist ,wenn browser Anfrage senden apache,apache antwortet mit dem Zertifikat und der browser wird versuchen, die Authentifizierung mithilfe seiner root-CA-oder eine Ausnahme werfen, zu Fragen, Benutzer, um es zu speichern.
- Und wenn der apache route request auf jboss,hier apache als client und jboss als SSL-server,jboss sendet sein Zertifikat aus dem keystore, die überprüft werden, indem der Apache mit SSLCACertificateFile Richtlinie
Und wenn jboss hat die Umleitung auf sich selbst ,es wird gehen müssen, durch den reverse-proxy so haben wir proxyPassReverse.In diesem Fall jboss wird als SSL-client und der Apache-http-SSL-server und der Apache sendet sein Zertifikat, welches von jboss überprüfen Sie mit dem CA-Zertifikat im trustore.
Gehe ich Recht in der Interpretation der config-Dateien?
Auch ich weiss nicht genau verstehen, die Verwendung von optional_no_ca in SSLVerifyClient.Wird der apache das Zertifikat aus dem browser oder nicht oder es hängt von der browser ?
Eigentlich habe ich geerbt diese Anwendung mit keine Dokumentation whatsover und ich bin stark versucht, einen Sinn aus ihm heraus.
- Apache überprüfen und versuchen, eine Vertrauenskette auf das Zertifikat genauso wie der browser.
- Vielen Dank für die Beantwortung.Aber gegen das, was der apache zu validieren.Es absolut keine keystore oder truststore ?.In diesem Fall werden die Zertifikate unterzeichnet, durch die lokale ZERTIFIZIERUNGSSTELLE.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gehe ich davon aus, dass das, was Sie suchen, ist die Verwendung von client-Zertifikat-Authentifizierung in Ihrer JBoss-Anwendung zu authentifizieren Browser (nicht der Apache Httpd als client auf JBoss).
Wenn Sie möchten, dass der Apache Httpd als reverse-proxy vor dem Sie JBoss-container, benötigen Sie zum konfigurieren von Apache Httpd für die Anforderung und Bearbeitung von client-Zertifikat-Authentifizierung. Insbesondere, sollten Sie Ihre
SSLCA*
undSSLVerifyClient
Richtlinien, Teilmod_ssl
.Ob Sie konfigurieren SSL - /TLS-Verbindung zwischen Apache Httpd und den JBoss-worker-Knoten unabhängig ist. Es ist oft unnötig, wenn Sie auf ein vertrauenswürdiges Netzwerk an diesem Punkt. Wenn Sie wollen SSL/TLS gibt, den Apache Httpd ist
SSLProxy*
Richtlinien konfigurieren, welche CA zu Vertrauen. Dies gesagt, wird damit sicherlich schaffen noch mehr Verwirrung innerhalb der Anwendung, da es eine Mehrdeutigkeit, wie und wo Sie das client-Zertifikat Informationen stammen aus: entweder eine echte client-Zertifikat-Authentifizierung auf JBoss-container-Ebene, oder eine weitergeleitete-Zertifikat, wie bearbeitet von Apache Httpd.In der Tat, werden Sie brauchen, um pass auf die client-Zertifikats-Informationen zu Ihrem container für weitere Informationen, wie beschrieben in diese Antwort.
Wenn Sie statt dessen, was Sie nach ist eine client-Zertifikat-Authentifizierung von Apache Httpd und JBoss, wo Sie brauchen diese Verbindung, gesichert mit SSL/TLS und vergewissern Sie sich, wenn kommt aus dem reverse-proxy (was zu seinem Zertifikat), Sie sollten in der Lage sein, um diese mit
SSLProxyMachineCertificateFile
verfügbar in Apache Httpd 2.4. (Diese Konfiguration ist sicherlich ungewöhnlich.)EDIT: (Folgende änderungen zu der Frage.)
SSLVerifyClient optional_no_ca
bedeutet, dass der Apache Httpd wird nur überprüfen, dass der client den privaten Schlüssel für das Zertifikat, die es präsentiert: es wird nicht überprüfen, ob das Zertifikat vertrauenswürdig ist (wasSSLCACertificateFile
nutzlos). Wenn Sie möchten, Vorlage der Bescheinigung freiwillig zu sein, aber immer noch überprüfen, ob es gegen die PKI, die NutzungSSLVerifyClient optional
(mitSSLCACertificateFile
).Ja, und die Verbindung zwischen browser und Apache Httpd hat nichts zu tun mit JBoss.
Nein, es ist
SSLProxyCACertificateFile
(oder...Path
)Ich bin mir nicht sicher, unter welchen Umständen JBoss würde "umleiten zu sich selbst" (oder was Sie darunter verstehen). Es gibt nichts zu deuten JBoss hat eine Rolle als client hier. Dies ist nicht das, was
ProxyPassReverse
ist für.Wenn Sie
SSLVerifyClient
zuoptional
,optional_no_ca
oderrequire
wird, wird der server ein Zertifikat anfordern. Mitrequire
es beendet die Verbindung, wenn der client nicht senden ein (, denen er vertraut).Als Ihre Konfiguration steht, es gibt nichts darauf hin, dass das client-Zertifikat übermittelt, um die JBoss-container. Es ist nicht verifiziert, die in irgendeiner Weise an der Apache Httpd-Ebene (jeder, der mit einer selbst-signierte client-Zertifikat herstellen konnte, hier). Sie könnte im Prinzip
optional_no_ca
lassen jedes Zertifikat durch und nur überprüfen, wenn Sie kommen, um die Java-container, aber Sie würden auf jeden Fall brauchen einige zusätzliche benutzerdefinierte code zu tun, also in Ihrem JBoss application. Sie würden auch brauchen, um zu vermitteln, das Zertifikat selbst irgendwie (z.B. übermod_header
und eine benutzerdefinierte Kopfzeile oder mehr direkt mitmod_proxy_ajp
. Es würde auch schwieriger sein, brechen Sie die Verbindung, um den Kunden versuchen Sie ein anderes Zertifikat aus, wenn man es präsentiert, zunächst falsch war.