本节介绍与 Enterprise Server 及 Web 应用程序安全性和证书相关的已知问题和相应的解决方法。
自 2010 年 1 月 8 日起,Sun GlassFish Enterprise Server v2.1.1 捆绑的 CA 证书已过期。因此,在启动域时,您可能会看到某些 SEVERE 消息。
从密钥库中删除过期的证书。要从 JKS 密钥库中删除证书,请使用以下命令:
keytool delete -alias verisignserverca -keystore domain-dir /config/cacerts.jks
要从 NSS 密钥库中删除证书,请使用以下命令:
certutil -D -n verisignserverca -d domain-dir/config
JDK6 Sun PKCS11 提供程序中的 JDK 错误(请参见:https://jdk6.dev.java.net/issues/show_bug.cgi?id=23)可能会导致在重负载情况下运行某些 SSL 方案时出现 OutOfMemoryError。
如果遇到该问题,请从 JRE 安装中的 java.security 文件删除 sun.security.pkcs11.SunPKCS11 提供程序。
在 AIX 平台上,动态加密中确定响应的加密密钥失败。在对服务器端证书进行验证的过程中发生该故障。
作为对该故障的响应,将以下错误消息写入服务器的日志文件 server.log:
Unable to validate certificate |
Error occurred while resolving key information com.sun.xml.wss.impl.WssSoapFaultException: Certificate validation failed |
在 Enterprise Server 2.1.1 上安装 Metro 1.1
企业 bean 中的一个方法(其 run-as 或传播的安全标识通过使用 @RunAs 注释定义)尝试调用另一个企业 bean 中的方法。如果在 sun-ejb-jar.xml 部署描述符文件中未定义 run-as 主体,则尝试可能失败并抛出 javax.ejb.AccessLocalException 异常。
javax.ejb.AccessLocalException: Client not authorized for this invocation. |
在 sun-ejb-jar.xml 部署描述符文件中,在 principal-name 元素中定义为其指定了 run-as 角色的主体名称。
SSL 终止不起作用;如果为 SSL 终止配置了负载平衡器(硬件),则 Enterprise Server 会在重定向过程中将协议从 https 更改为 http。
在硬件负载平衡器与 Enterprise Server 之间添加软件负载平衡器。
由于 JVM 错误,在 HTTP 侦听器上将 security-enabled 设置为 true 时,某些 JDK 版本会出现泄漏问题。具体而言,产生此错误的步骤如下:
在 HTTP 侦听器上,将 security-enabled 设置为 true:
<http-listener acceptor-threads="1" address="0.0.0.0" blocking-enabled="false" default-virtual-server="server" enabled="true" family="inet" id=" http-listener-1" port="8080" security-enabled="true" server-name="" xpowered-by="true"> |
对在快速查找测试结束时停止域做出注释。
运行快速查找测试。
检查套接字使用情况:
netstat -an | grep 8080 |
以下显示的是处于使用状态的内容:
*.8080 *.* 0 0 49152 0 LISTEN *.8080 *.* 0 0 49152 0 BOUND |
GlassFish 站点 https://glassfish.dev.java.net/issues/show_bug.cgi?id=849 上已跟踪该问题。
升级到最新的 JDK 版本。