IBM Jdk环境启动jboss,出现如下错误:
SunX509 KeyManagerFactory not available
一. Jboss中配置SSL的步骤:
1. 通过命令行 生成证书文件 keytool -genkey -keystore xxx(文件名)
2. 配置jboss/server/default/deploy/jbossweb-tomcat50.sar/Server.xml文件,在其中增加如下内容:
<!-- SSL/TLS Connector configuration using the admin devl guide keystore-->
<Connector port="8443" address="${jboss.bind.address}" maxThreads="100"
minSpareThreads="5" maxSpareThreads="15" scheme="https" secure="true" clientAuth="false" keystoreFile="D:/primeton1231/ide/eclipse/jre/bin/keystore"
keystorePass="000000" sslProtocol="TLS"/>
3. 将证书文件放在keystoreFile属性的目录中
4. 如果采用的是IBM的JDK,有一些属性需要修改:
1. 增加属性:algorithm="ibmX509"(因为AIX上采用的JDK是IBM的,需要将该算法属性加上,通常默认的是Sun的算法SunX509; 看来IBM比较牛,总是搞自己的一套)
2. 修改为:sslProtocol="SSL"(由于IBM的1.4.1版的TLS协议的实现和一些流行的浏览器不兼容,--个人怀疑是IBM故意不兼容微软的IE--,需要使用SSL)
二. 常用属性的内容简介;
1. clientAuth:如果想要Tomcat为了使用这个socket而要求所有SSL客户出示一个客户证书,置该值为true。
2. keystoreFile:如果创建的keystore文件不在Tomcat认为的缺省位置(一个在Tomcat运行的home目录下的叫.keystore的文件),则加上该属性。可以指定一个绝对路径或依赖$CATALINA_BASE环境变量的相对路径。
3. keystorePass:如果使用了一个与Tomcat预期不同的keystore(和证书)密码,则加入该属性。
4. keystoreType:如果使用了一个PKCS12 keystore,加入该属性。有效值是JKS和PKCS12。
5. sslProtocol:socket使用的加密/解密协议。如果使用的是Sun的JVM,则不建议改变这个值。据说IBM的1.4.1版的TLS协议的实现和一些流行的浏览器不兼容。这种情况下,使用SSL。
6. ciphers:此socket允许使用的被逗号分隔的密码列表。缺省情况下,可以使用任何可用的密码。
7. Algorithm:使用的X509算法。缺省为Sun的实现(SunX509)。对于IBM JVMS应该使用ibmX509。对于其它JVM,参考JVM文档取正确的值。
8. truststoreFile:用来验证客户证书的TrustStore文件。
9. truststorePass:访问TrustStore使用的密码。缺省值是keystorePass。
10. truststoreType:如果使用一个不同于正在使用的KeyStore的TrustStore格式,加入该属性。有效值是JKS和PKCS12。