In diesem Abschnitt werden die bekannten Probleme und ihre Lösungen von Sicherheitsfunktionen in Enterprise Server, Webanwendungen sowie Zertifikaten beschrieben.
Das mit Sun GlassFish Enterprise Server v2.1.1 gebündelte CA-Zertifikat ist seit dem 8. Januar 2010 abgelaufen. Daher werden möglicherweise einige SEVERE-Meldungen angezeigt, wenn Sie die Domain starten.
Entfernen Sie das abgelaufene Zertifikat aus dem Schlüsselspeicher. Um das Zertifikat aus dem JSK-Schlüsselspeicher zu entfernen, verwenden Sie den folgenden Befehl:
keytool delete -alias verisignserverca -keystore domain-dir /config/cacerts.jks
Um das Zertifikat aus dem NSS-Schlüsselspeicher zu entfernen, verwenden Sie den folgenden Befehl:
certutil -D -n verisignserverca -d domain-dir/config
Ein JDK-Bug (beachten Sie https://jdk6.dev.java.net/issues/show_bug.cgi?id=23) in JDK6 Sun PKCS11 Anbieter konnte einen OutOfMemoryError verursachen, wenn bestimmte SSL-Szenarien unter hoher Belastung ausgeführt wurden.
Wenn dieses Problem auftritt, entfernen Sie densun.security.pkcs11.SunPKCS11-Anbieter in der Datei java.security in Ihrer JRE-Installation.
Auf der AIX-Plattform schlägt die dynamische Verschlüsselung zum Ermitteln eines Verschlüsselungsschlüssels für eine Antwort fehl. Der Fehler tritt während der Validierung des Zertifikats auf der Serverseite auf.
Aufgrund des Fehlers werden die folgenden Fehlermeldungen in die Protokolldatei server.log des Servers geschrieben:
Unable to validate certificate |
Error occurred while resolving key information com.sun.xml.wss.impl.WssSoapFaultException: Certificate validation failed |
Installieren Sie Metro 1.1 auf Enterprise Server 2.1.1.
Eine Methode in einer Enterprise-Bean, deren Sicherheitsidentität (run-as oder propagiert) über die @RunAs-Annotation definiert ist, versucht, eine Methode in einer anderen Enterprise-Bean aufzurufen. Wenn in der Bereitstellungsbeschreibungsdatei sun-ejb-jar.xml kein run-as-Prinzipal definiert ist, kann er Versuch mit einer javax.ejb.AccessLocalException -Ausnahme fehlschlagen.
javax.ejb.AccessLocalException: Client not authorized for this invocation. |
Definieren Sie in der Bereitstellungsbeschreibungsdatei sun-ejb-jar.xml im Element principal-name den Principalnamen, für den die run-as-Rolle angegeben ist.
Die SSL-Beendigung funktioniert nicht; wenn Load Balancer (Hardware) für die SSL-Beendigung konfiguriert ist, ändert Enterprise Server das Protokoll während der Umleitung von https zu http.
Fügen Sie zwischen dem Hardware-Lastausgleich und Enterprise Server einen Software-Lastausgleich hinzu.
Aufgrund eines JVM-Fehlers tritt bei einigen JDK-Versionen ein Leckproblem auf, wenn security-enabled für ein HTTP-Zielgerät auf true gesetzt ist. Im Folgenden sind die Schritte zum Reproduzieren dieses Fehlers aufgelistet:
Setzen Sie security-enabled für das HTTP-Zielgerät auf 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"> |
Kommentieren Sie das Anhalten der Domäne am Ende von Quicklook-Tests heraus.
Führen Sie Quicklook-Tests aus.
Überprüfen Sie die Socket-Verwendung:
netstat -an | grep 8080 |
Die folgenden Elemente werden als verwendet angezeigt:
*.8080 *.* 0 0 49152 0 LISTEN *.8080 *.* 0 0 49152 0 BOUND |
Das Problem wird auf der GlassFish-Website dargestellt unter: https://glassfish.dev.java.net/issues/show_bug.cgi?id=849.
Führen Sie ein Upgrade auf die aktuellste JDK-Version durch.