下午,
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文件,就可以了。
下午,
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文件,就可以了。