本節說明與 Enterprise Server 和 Web 應用程式安全性及憑證有關的已知問題和相關解決方案。
Sun GlassFish Enterprise Server v2.1.1 隨附的 CA 憑證已於 2010 年 1 月 8 日到期。因此啟動網域時可能會顯示一些「嚴重錯誤」訊息。
請從金鑰庫移除過期的憑證。如果要從 JKS 金鑰庫移除憑證,請使用下列指令:
keytool delete -alias verisignserverca -keystore domain-dir /config/cacerts.jks
如果要從 NSS 金鑰庫移除憑證,請使用下列指令:
certutil -D -n verisignserverca -d domain-dir/config
在負荷過大的情況下執行某些 SSL 分析藍本時,JDK6 Sun PKCS11 提供者中的 JDK 錯誤 (請參閱:https://jdk6.dev.java.net/issues/show_bug.cgi?id=23) 可能會導致出現記憶體不足的錯誤。
如果您遇到此問題,請從 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 (其執行身份或傳遞的安全性驗證身份是使用 @RunAs 附註所定義) 中的方法嘗試要呼叫另一個企業 Bean 中的方法。如果 sun-ejb-jar.xml 部署描述元檔案中沒有定義任何 run-as 主體,則嘗試可能會失敗,並會顯示 javax.ejb.AccessLocalException 異常。
javax.ejb.AccessLocalException: Client not authorized for this invocation. |
在 sun-ejb-jar.xml 部署描述元檔案中,將指定 run-as 角色的主體名稱定義在 principal-name 元素中。
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"> |
在 quicklook 測試結尾處加入停止網域的註釋。
執行 quicklook 測試。
檢查通訊埠的使用︰
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 版本。