2016-05-15 2 views
0

Я пытаюсь настроить проверку подлинности сертификата клиента с JBoss (до сих пор испытания с 7.1.0 Final и 7.1.1 Final, Java 6 и Java7).JBoss7 аутентификации клиента-CERT: Ciper свита в SSL сессии является SSL_NULL_WITH_NULL_NULL

1) Я генерируется на основе сертификата this

2) Я скопирована keystore.server и server.truststore в /автономные/конфигурации папки.

3) В standalone.xml Я создал домен безопасности

<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> 

и HTTPS разъем:

<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) Я импортировал сертификат /Библиотека/безопасность/cacerts (позже я пытался получить доступ к моему защищенному WS Spring SpringTemplate - тоже не повезло)

5) Я импортировал сертификат в параметры Интернета -> Содержание -> Сертификаты -> Trusted Root CA (я могу видеть, что сертификат является доверенным)

6) Я создал простой JavaEE Rest WS, web.xml:

<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) При попытке доступа через браузер (Chrome/Firefox/IE) я получаю Статус HTTP 401 - Нет цепи сертификатов клиента в этом запросе. В server.log можно увидеть следующее:

Handshake failed: java.io.IOException: SSL handshake failed. Ciper suite in SSL Session is SSL_NULL_WITH_NULL_NULL 

Я поиск в Интернете и выяснил, что это может быть bug, но должен был быть зафиксирован в 7.1.0 Final релизе. К сожалению, я продолжаю получать эту ошибку как в версиях 7.1.0, так и в 7.1.1.

Я что-то упустил?

ответ

1

Я сталкиваюсь с тем же вопросом. Я полагаю, что браузер даже не предлагает вам выбрать сертификат? Вы пробовали использовать curl для отправки учетных данных и подняли javax.net.debug=ssl,handshake? Затем вы можете увидеть ответы клиента и сервера в своих журналах jboss. Вот команда curl.

curl --cert ./cert.pem --key ./key.pem https://jbosshost:port -k -v

Вам нужно будет использовать OpenSSL для преобразования p12 в CERT и ключевые .pems