我正在尝试使用SSL上的双向身份验证将JBoss 5.2部署的应用程序连接到远程服务器(M2M)。直到今天,我一直在使用基于用户/通行证的身份验证。 据我了解,要使握手正常进行,我应该将客户端证书发送到要访问的远程服务器。 所以我已经在数据源中定义了:
<tx-connection-factory>
<jndi-name>ApplicationDS</jndi-name>
<use-java-context>true</use-java-context>
<xa-transaction/>
<rar-name>xxx.rar</rar-name>
<connection-definition>javax.resource.cci.ConnectionFactory</connection-definition>
<config-property name="ServerName" type="java.lang.String">MYRemoteServer</config-property>
<config-property name="ConnectionURL" type="java.lang.String">tcp://10.10.10.10</config-property>
<config-property name="PortNumber" type="java.lang.String">9999</config-property>
<config-property name="TraceLevel" type="java.lang.Integer">0</config-property>
<min-pool-size>1</min-pool-size>
<max-pool-size>20</max-pool-size>
<security-domain>Test_Mutual_SSL</security-domain>
</tx-connection-factory>
我对我的login-config.xml进行了如下修改:
<application-policy name="Test_Mutual_SSL">
<authentication>
<login-module code="org.jboss.security.auth.spi.BaseCertLoginModule" flag="required">
<module-option name="password-stacking">useFirstPass</module-option>
<module-option name="securityDomain">java:/jaas/SSL</module-option>
<module-option name="verifier">org.jboss.security.auth.certs.AnyCertVerifier</module-option>
</login-module>
</authentication>
我已将包含客户端证书的密钥存储引用到Test_Mutual_SSLdomain-service.xml到部署目录中,如下所示:
<server>
<mbean code="org.jboss.security.plugins.JaasSecurityDomain" name="jboss.security:service=SecurityDomain">
<constructor>
<arg type="java.lang.String" value="Test_Mutual_SSL"/>
</constructor>
<attribute name="KeyStoreURL">
${jboss.server.home.dir}/conf/server.truststore
</attribute>
<attribute name="KeyStorePass">serverpass</attribute>
<depends>jboss.security:service=JaasSecurityManager</depends>
</mbean>
</server>
不过,我在使事情顺利方面没有运气。我得到的错误是:
WARN [org.jboss.security.auth.spi.BaseCertLoginModule] Don't know how to obtain X509Certificate from: class java.lang.String
非常感谢任何帮助。