下午,qa报告了一个问题,在aix上配置tomcat的https出现问题,具体异常如下:
catalina.start: lifecycleexception:
null.open: java.security.nosuchalgorithmexception: class com.ibm.jsse.bq configured for sslcontext not a sslcontext
lifecycleexception:
null.open: java.security.nosuchalgorithmexception: class com.ibm.jsse.bq configured for sslcontext not a sslcontext
at org.apache.catalina.connector.http.httpconnector.initialize(httpconnector.java:1209)
null.open: java.security.nosuchalgorithmexception: class com.ibm.jsse.bq configured for sslcontext not a sslcontext
lifecycleexception:
null.open: java.security.nosuchalgorithmexception: class com.ibm.jsse.bq configured for sslcontext not a sslcontext
at org.apache.catalina.connector.http.httpconnector.initialize(httpconnector.java:1209)
于是,查了tomcat中的server.xml的connector配置,如下:
<connector classname="org.apache.catalina.connector.http.httpconnector" port="8544" minprocessors="5" maxprocessors="75" enablelookups="true" acceptcount="10" debug="0" scheme="https" secure="true" allowchunking="false">
<factory classname="org.apache.catalina.net.sslserversocketfactory" clientauth="false" protocol="tls" keystorefile="/tibco/tra2/tibco/administrator/domain/aix_test_gg/ssl/keystore" keystorepass="123456"/>
</connector>
<factory classname="org.apache.catalina.net.sslserversocketfactory" clientauth="false" protocol="tls" keystorefile="/tibco/tra2/tibco/administrator/domain/aix_test_gg/ssl/keystore" keystorepass="123456"/>
</connector>
查看了aix上java的信息版本,如下:
java version "1.4.2"
java version "1.4.2"
java(tm) 2 runtime environment, standard edition (build 1.4.2)
classic vm (build 1.4.2, j2re 1.4.2 ibm aix build ca1420-20040626 (jit enabled: jitc))
这个问题一般是与java.security有关,于是查看了jre/1.4.2/lib/security下的java.security文件配置,主要是securty.provider的配置信息,如下:
security.provider.1=com.ibm.jsse.ibmjsseprovider
security.provider.1=com.ibm.jsse.ibmjsseprovider
security.provider.2=com.ibm.crypto.provider.ibmjce
security.provider.3=com.ibm.security.jgss.ibmjgssprovider
security.provider.4=com.ibm.security.cert.ibmcertpath
查了com.ibm.jsse.bq这个class,竟然在ibmjsse和ibmjce这两个provider中都存在,但是classload应该是首先加载ibmjce的,这应该就是问题所在。
于是将securty.provider的配置信息更改为:
于是将securty.provider的配置信息更改为:
security.provider.1=com.ibm.crypto.provider.ibmjce
security.provider.2=com.ibm.jsse.ibmjsseprovider
并且重新生成keystore文件,就可以了。
闽公网安备 35060202000074号