今天 WebSphere 上的一个应用突然就不能用 https去访问了,服务器的配置没有做过任何修改的,检查日志发现了一点线索:
ws_config_parser: handleLogEnd: Failed to open log file: '/opt/IBM/WebSphere/Plugins/logs/http_plugin.log', OS Err: 2[Thu Feb 09 16:34:24 2012] [error] SSL0124E: Initialization error, The default key in the keyfile has an expired certificate. Use iKeyman to remove certificates that are expired.
[Thu Feb 09 16:34:24 2012] [error] lib_security: logSSLError: str_security (gsk error 408): GSK_ERROR_BAD_KEYFILE_PASSWORD
[Thu Feb 09 16:34:24 2012] [error] lib_security: initializeSecurity: Failed to initialize GSK environment
[Thu Feb 09 16:34:24 2012] [error] ws_transport: transportInitializeSecurity: Failed to initialize security
[Thu Feb 09 16:34:24 2012] [error] ws_server: serverAddTransport: Failed to initialize security
[Thu Feb 09 16:34:24 2012] [error] ws_server: serverAddTransport: HTTPS Transport is skipped
从日志里看到,系统提示说 密钥库文件里的默认私钥有一个过期的证书,让到iKeyman里删除这个证书。
证书过期的话一般Webserver不应该给出错误信息并停止https的,最多也就给个警告,再说,这个证书
肯定是还没有到期的,用iKeyman打开kdb文件 然后提示说密码过期了,让修改密码,修改完密码进去
看到证书,没有到期,难道是密码过期造成的?保存kdb重启服务,https还是启动不了,继续看日志:
[Fri Feb 10 13:15:42 2012] [crit] SSL0104S: GSK could not initialize, Invalid password for keyfile.
[Fri Feb 10 13:15:42 2012] [error] ws_config_parser: handleLogEnd: Failed to open log file: '/opt/IBM/WebSphere/Plugins/logs/http_plugin.log', OS Err: 2
[Fri Feb 10 13:15:42 2012] [error] lib_security: logSSLError: str_security (gsk error 408): GSK_ERROR_BAD_KEYFILE_PASSWORD
[Fri Feb 10 13:15:42 2012] [error] lib_security: initializeSecurity: Failed to initialize GSK environment
[Fri Feb 10 13:15:42 2012] [error] ws_transport: transportInitializeSecurity: Failed to initialize security
[Fri Feb 10 13:15:42 2012] [error] ws_server: serverAddTransport: Failed to initialize security
[Fri Feb 10 13:15:42 2012] [error] ws_server: serverAddTransport: HTTPS Transport is skipped
刚才修改密码时 忘了勾选 把密码保存到文件 ,从新修改修改kdb 重启服务,OK!https能够访问了
在设置密码的时候 有两个可选项 一个是密码过期,勾选后可以设施密码的有效期,建议不要设置要不
到时候就会出现我遇到的那个问题,还有一个就是把密码保存到文件,设置后WebSphere可以通过
文件来读取密码