Migration från Oracle Java 8 till OpenJDK 8 på en Shibboleth Identity Provider v3.3.2 (och nyare)
Följande har testats på Centos 7 men gäller mestadels för Ubuntu/Debian också. Om du kör Windows så kan man ta bort Oracle Java och installerar OpenJDK från https://jdk.java.net/11/. Information från Shibboleth om IdP system requirements: https://wiki.shibboleth.net/confluence/display/IDP30/SystemRequirements
Vi rekommenderar att man testa på en test-IdP innan det göras på en produktion-IdP!
Stänga av Jetty:
sudo -i
servicejetty
stop
Ta bort gamla Java från systemets alternatives:
alternatives
--
remove
ControlPanel
/
usr
/java/default/bin/
ControlPanel
alternatives
--
remove
java /
usr
/java/default/bin/java
alternatives
--
remove
javaws
/
usr
/java/default/bin/
javaws
alternatives
--
remove
jcontrol
/
usr
/java/default/bin/
jcontrol
alternatives
--
remove
jjs
/
usr
/java/default/bin/
jjs
alternatives
--
remove
keytool
/
usr
/java/default/bin/
keytool
alternatives
--
remove
orbd
/
usr
/java/default/bin/
orbd
alternatives
--
remove
pack200
/
usr
/java/default/bin/
pack200
alternatives
--
remove
policytool
/
usr
/java/default/bin/
policytool
alternatives
--
remove
rmid
/
usr
/java/default/bin/
rmid
alternatives
--
remove
rmiregistry
/
usr
/java/default/bin/
rmiregistry
alternatives
--
remove
servertool
/
usr
/java/default/bin/
servertool
alternatives
--
remove
tnameserv
/
usr
/java/default/bin/
tnameserv
alternatives
--
remove
unpack200
/
usr
/java/default/bin/
unpack200
rm
/
usr
/java/default
rm
/
usr
/java/
latest
chmod 000 /usr/java/*
I Debian heter alternatives update-alternatives
Kontrollera att alla alternatives för /usr/java/default/... är nu borta (alternatives --list). Ta bort eventuella $PATHs till /usr/java/default samt JAVA_HOME från roots loginprofil (.bashrc).
Installera OpenJDK
De flesta vendors (Red Hat/Ubuntu) paketerar OpenJDK som man kan installera via yum eller apt-get. Shibboleth konsortium ger dock enbart stöd för standard OpenJDK så man måste bestämma om man vill köra med standard OpenJDK eller OS-levererad. Om man stötter på ett Java problem framöver så kan man behöva byta till standard OpenJDK för att få stöd från konsortiet via SWAMID1. SWAMID operations anser dock att risken är väldigt liten och att det är bättre att använda OS-levererad med avseende på automatiserad uppdateringar.
Red Hat kommer att ge stöd för OpenJDK 8 till 2023. Om du använder Ubuntu så kanske OpenJDK 11 är ett bättre val eftersom OpenJDK 8 finns enbart i universe.
1 För full support på Shibboleth måste ni vara medlemmar i Shibboleth-konsortiet (https://www.shibboleth.net/consortium/benefits/). Sunet är medlem av konsortiet via NORDUnet och SWAMID Operations kan hjälpa till begränsat med supportfrågor.
yum
install
java-1.8.0-
openjdk
Debian
apt-get install openjdk-8-jdk-headless
Ubuntu
apt-get install openjdk-11-jdk-headless
Kontrollera Java version...
java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
...samt alternatives konfig:
alternatives --list
java auto /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/bin/java
jre_openjdk auto /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre
jre_1.8.0 auto /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre
jre_1.8.0_openjdk auto /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64
Debian varian då den saknar alternatives
ls -l /etc/alternatives/ | grep java
Uppdatera /etc/default/jetty till:
export JAVA_HOME=/etc/alternatives/jre_1.8.0
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export JAVA_OPTIONS="-Didp.home=/opt/shibboleth-idp -Xmx4096M"
export JETTY_HOME=/opt/jetty
export JETTY_BASE=/opt/jetty/jetty-base
export JETTY_USER=jetty
Debian har även här en annan path....
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre
Starta Jetty och utföra tester...
service jetty start
Cleanup
rm -r /usr/java/*