Ich versuche, Client-Zertifikat-Authentifizierung mit JBoss einzurichten (bisher getestet mit 7.1.0 Schluss und 7.1.1 Finale, Java 6 und Java7).JBoss7 client-cert-Authentifizierung: Ciper Suite in SSL-Session ist SSL_NULL_WITH_NULL_NULL
1) Ich habe Zertifikat generiert basierend auf this
2) Ich habe kopiert keystore.server und server.truststore in /Standalone/Konfiguration Ordner.
3) In standalone.xml I Sicherheitsdomäne erstellt haben
<security-domain name="RequireCertificateDomain">
<authentication>
<login-module code="CertificateRoles" flag="required">
<module-option name="securityDomain" value="RequireCertificateDomain"/>
<module-option name="verifier" value="org.jboss.security.auth.certs.AnyCertVerifier"/>
<module-option name="usersProperties" value="${jboss.server.config.dir}/my-users.properties"/>
<module-option name="rolesProperties" value="${jboss.server.config.dir}/my-roles.properties"/>
</login-module>
</authentication>
<jsse keystore-password="changeit" keystore-url="file:C:/jboss/jboss-as-7.1.1.Final/standalone/configuration/server.keystore" truststore-password="changeit" truststore-url="file:C:/jboss/jboss-as-7.1.1.Final/standalone/configuration/server.truststore"/>
</security-domain>
und HTTPS-Anschluss:
<connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" secure="true">
<ssl password="changeit" certificate-key-file="${jboss.server.config.dir}/server.keystore" verify-client="want" ca-certificate-file="${jboss.server.config.dir}/server.truststore"/>
</connector>
4) I-Zertifikat importiert haben, um /lib/security/cacerts (später habe ich versucht, Zugriff auf meine gesicherte WS von Spring RestTemplate - auch kein Glück)
5) Ich habe das Zertifikat in Internetoptionen importiert -> Inhalt -> Zertifikate -> Trusted Root CA (kann ich sehen, dass cert vertrauenswürdig ist)
6) Ich habe einfach JavaEE Ruhe WS, web.xml erstellt:
<security-constraint>
<display-name>Area secured</display-name>
<web-resource-collection>
<web-resource-name>protected_resources</web-resource-name>
<url-pattern>/api/account/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<description>User with any role</description>
<role-name>*</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>CLIENT-CERT</auth-method>
</login-config>
Jboss-web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<security-domain>RequireCertificateDomain</security-domain>
</jboss-web>
7) Beim Zugriff über Browser (Chrome/Firefox/IE) bekomme ich HTTP-Status 401 - Keine Client-Zertifikatskette in dieser Anfrage. In server.log kann ich das Folgende sehen:
Handshake failed: java.io.IOException: SSL handshake failed. Ciper suite in SSL Session is SSL_NULL_WITH_NULL_NULL
habe ich im Internet suchen und fand heraus, dass es ein bug sein kann, aber sollte in 7.1.0 Final Release behoben werden. Leider bekomme ich diesen Fehler sowohl in Version 7.1.0 als auch in Version 7.1.1.
Fehle ich etwas?