2016-05-15 20 views
0

である私は、JBoss(これまで7.1.0最終7.1.1最終でテストし、Java 6のでクライアント証明書認証を設定しようとしていますおよびJava7)。JBoss7クライアント証明書の認証に:SSLセッションでCiperスイートはSSL_NULL_WITH_NULL_NULL

1)I)は、this

2に基づいて証明書を生成したIは/スタンドアロン/構成フォルダにkeystore.serverとserver.truststoreをコピーしました。私はセキュリティドメインを作成しましたstandalone.xmlで

3)

<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コネクタ:私は/libに/セキュリティ/ cacertsにに証明書をインポートした

<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) (後で、私はSpring RestTemplateでセキュリティ保護されたWSにアクセスしようとしています - 運も無し)

5)インターネットオプション - >コンテンツ - > [証明書] - > [信頼されたルートCA(私はその証明書が信頼されている見ることができます)

6)私はシンプルなJavaEEの休憩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の最終リリースで修正されることになっていたしました。残念ながら、このエラーは7.1.0と7.1.1の両方で発生しています。

何か不足していますか?

答えて

1

私は同じ問題を抱えています。私はブラウザがあなたに証明書を選択するように促していないと思っていますか?カールを使用して資格情報を送信しようとしましたが、javax.net.debug=ssl,handshakeが表示されましたか? jbossログにクライアントとサーバーの応答が表示されます。ここにcurlコマンドがあります。

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

あなたのCERTするP12とキー.pems

を変換するためにOpenSSLを使用する必要があります
関連する問題