cs:tech:idp:jetty:upgrade

Toto je starší verze dokumentu!


Java Servlet kontejner pro Shibboleth IdP - aktualizace

Na této stránce se nachází návod, jak aktualizovat Jetty. Budete-li pravidelně aktualizovat podle tohoto návodu, budete moci převážně pouze kopírovat příkazy z tohoto návodu do terminálu. Pokud však budete chtít přeskočit nějakou verzi, s největší pravděpodobností budete muset některé příkazy upravit.

PŘED AKTUALIZACÍ SI NEZAPOMEŇTE VYTVOŘIT ZÁLOHU!


Jetty 9.3.24.v20180605 -> 9.3.25.v20180904

Vypnutí Jetty

Před započetím aktualizace doporučuji aktulálně běžící Jetty zastavit. Pokud však víte, co děláte, můžete tento krok přeskočit.

# Zastavení Jetty
systemctl stop jetty

Instalace

Aktualizace z předchozí verze Jetty je velice jednoduchá. Stáhneme zdrojové kódy Jetty (ověříme jejich otisky!) a rozbalíme je. Není třeba nic konfigurovat, protože v konfiguraci se oproti předešlé verzi nic nezměnilo.

# Základní instalace Jetty
cd /opt
su idp
cd /opt/src
wget http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.25.v20180904/jetty-distribution-9.3.25.v20180904.tar.gz \
  http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.25.v20180904/jetty-distribution-9.3.25.v20180904.tar.gz.sha1 \
  http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.25.v20180904/jetty-distribution-9.3.25.v20180904.tar.gz.asc
 
# Kontrola SHA1 otisků
# Výstup z příkazu sha1sum se musí shodovat s obsahem souboru
# jetty-distribution-9.3.25.v20180904.tar.gz.sha1
echo "`cat jetty-distribution-9.3.25.v20180904.tar.gz.sha1`  jetty-distribution-9.3.25.v20180904.tar.gz" | sha1sum -c
 
# Doporučuji zkontrolovat i podpis samotného archivu zdrojových kódů
# Nejprve si musíme importovat klíč 2A684B57436A81FA8706B53C61C3351A438A3B7D
#gpg --keyserver hkp://keys.gnupg.net --search-keys 2A684B57436A81FA8706B53C61C3351A438A3B7D
# Následně můžeme provést kontrolu
#gpg --verify jetty-distribution-9.3.25.v20180904.tar.gz.asc
 
exit
tar -xzf src/jetty-distribution-9.3.25.v20180904.tar.gz
chown -R idp:idp /opt/jetty-distribution-9.3.25.v20180904
ln -snf /opt/jetty-distribution-9.3.25.v20180904/bin/jetty.sh /etc/init.d/jetty
echo "JETTY_HOME=/opt/jetty-distribution-9.3.25.v20180904/" > /etc/default/jetty
echo "JETTY_BASE=/opt/jetty" >> /etc/default/jetty
echo "JETTY_USER=idp" >> /etc/default/jetty

Spuštění Jetty

Nyní stačí spustit Jetty.

# Spuštění Jetty
systemctl daemon-reload
systemctl start jetty

Jetty běží, takže zkontrolujeme, zda nám poslouchá „nešifrovaně“ (port 8080) pouze na „localhostu“ (IPv4 adresa 127.0.0.1) a to např. pomocí příkazu nestat:

# Kontrola, zda Jetty nešifrovaně poslouchá jen na localhostu
netstat -an | grep ":80"

Měli bychom vidět následující výstup.

# Výstup příkazu netstat
tcp6       0      0 127.0.0.1:80          :::*                    LISTEN

Vyzkoušíme přístup přes HTTPS ze svého počítače a případně i přístup přes HTTP z příkazového řádku na serveru:

# Test přístupu k HTTP na localhostu
wget -q -O - http://127.0.0.1

Jetty 9.3.21.v20170918 -> 9.3.24.v20180605

Vypnutí Jetty

Před započetím aktualizace doporučuji aktulálně běžící Jetty zastavit. Pokud však víte, co děláte, můžete tento krok přeskočit.

# Zastavení Jetty
systemctl stop jetty

Instalace

Aktualizace z předchozí verze Jetty je velice jednoduchá. Stáhneme zdrojové kódy Jetty (ověříme jejich otisky!) a rozbalíme je. Není třeba nic konfigurovat, protože v konfiguraci se oproti předešlé verzi nic nezměnilo.

# Základní instalace Jetty
cd /opt
su idp
cd /opt/src
wget http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.24.v20180605/jetty-distribution-9.3.24.v20180605.tar.gz \
  http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.24.v20180605/jetty-distribution-9.3.24.v20180605.tar.gz.sha1 \
  http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.24.v20180605/jetty-distribution-9.3.24.v20180605.tar.gz.asc
 
# Kontrola SHA1 otisků
# Výstup z příkazu sha1sum se musí shodovat s obsahem souboru
# jetty-distribution-9.3.24.v20180605.tar.gz.sha1
echo "`cat jetty-distribution-9.3.24.v20180605.tar.gz.sha1`  jetty-distribution-9.3.24.v20180605.tar.gz" | sha1sum -c
 
# Doporučuji zkontrolovat i podpis samotného archivu zdrojových kódů
# Nejprve si musíme importovat klíč FE4B68B4
#gpg --keyserver hkp://keys.gnupg.net --search-keys FE4B68B4
# Následně můžeme provést kontrolu
#gpg --verify jetty-distribution-9.3.24.v20180605.tar.gz.asc
 
exit
tar -xzf src/jetty-distribution-9.3.24.v20180605.tar.gz
chown -R idp:idp /opt/jetty-distribution-9.3.24.v20180605
ln -snf /opt/jetty-distribution-9.3.24.v20180605/bin/jetty.sh /etc/init.d/jetty
echo "JETTY_HOME=/opt/jetty-distribution-9.3.24.v20180605/" > /etc/default/jetty
echo "JETTY_BASE=/opt/jetty" >> /etc/default/jetty
echo "JETTY_USER=idp" >> /etc/default/jetty

Spuštění Jetty

Nyní stačí spustit Jetty.

# Spuštění Jetty
systemctl daemon-reload
systemctl start jetty

Jetty běží, takže zkontrolujeme, zda nám poslouchá „nešifrovaně“ (port 8080) pouze na „localhostu“ (IPv4 adresa 127.0.0.1) a to např. pomocí příkazu nestat:

# Kontrola, zda Jetty nešifrovaně poslouchá jen na localhostu
netstat -an | grep ":8080"

Měli bychom vidět následující výstup.

# Výstup příkazu netstat
tcp6       0      0 127.0.0.1:8080          :::*                    LISTEN

Vyzkoušíme přístup přes HTTPS ze svého počítače a případně i přístup přes HTTP z příkazového řádku na serveru:

# Test přístupu k HTTP na localhostu
wget -q -O - http://127.0.0.1

Jetty 9.3.20.v20170531 -> 9.3.21.v20170918

Vypnutí Jetty

Před započetím aktualizace doporučuji aktulálně běžící Jetty zastavit. Pokud však víte, co děláte, můžete tento krok přeskočit.

# Zastavení Jetty
service jetty stop

Instalace

Aktualizace z předchozí verze Jetty je velice jednoduchá. Stáhneme zdrojové kódy Jetty (ověříme jejich otisky!) a rozbalíme je. Není třeba nic konfigurovat, protože v konfiguraci se oproti předešlé verzi nic nezměnilo.

# Základní instalace Jetty
cd /opt
su idp
cd /opt/src
wget http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.21.v20170918/jetty-distribution-9.3.21.v20170918.tar.gz \
  http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.21.v20170918/jetty-distribution-9.3.21.v20170918.tar.gz.sha1 \
  http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.21.v20170918/jetty-distribution-9.3.21.v20170918.tar.gz.asc
 
# Kontrola SHA1 otisků
# Výstup z příkazu sha1sum se musí shodovat s obsahem souboru
# jetty-distribution-9.3.21.v20170918.tar.gz.sha1
sha1sum jetty-distribution-9.3.21.v20170918.tar.gz && cat jetty-distribution-9.3.21.v20170918.tar.gz.sha1
 
# Doporučuji zkontrolovat i podpis samotného archivu zdrojových kódů
# Nejprve si musíme importovat klíč FE4B68B4
#gpg --keyserver hkp://keys.gnupg.net --search-keys FE4B68B4
# Následně můžeme provést kontrolu
#gpg --verify jetty-distribution-9.3.21.v20170918.tar.gz.asc
 
exit
tar -xzf src/jetty-distribution-9.3.21.v20170918.tar.gz
chown -R idp:idp /opt/jetty-distribution-9.3.21.v20170918
ln -snf /opt/jetty-distribution-9.3.21.v20170918/bin/jetty.sh /etc/init.d/jetty
echo "JETTY_HOME=/opt/jetty-distribution-9.3.21.v20170918/" > /etc/default/jetty
echo "JETTY_BASE=/opt/jetty" >> /etc/default/jetty
echo "JETTY_USER=idp" >> /etc/default/jetty

Spuštění Jetty

Nyní stačí spustit Jetty.

# Spuštění Jetty
systemctl daemon-reload
service jetty start

Jetty běží, takže zkontrolujeme, zda nám poslouchá „nešifrovaně“ (port 8080) pouze na „localhostu“ (IPv4 adresa 127.0.0.1) a to např. pomocí příkazu nestat:

# Kontrola, zda Jetty nešifrovaně poslouchá jen na localhostu
netstat -an | grep ":8080"

Měli bychom vidět následující výstup.

# Výstup příkazu netstat
tcp6       0      0 127.0.0.1:8080          :::*                    LISTEN

Vyzkoušíme přístup přes HTTPS ze svého počítače a případně i přístup přes HTTP z příkazového řádku na serveru:

# Test přístupu k HTTP na localhostu
wget -q -O - http://127.0.0.1

Jetty 9.3.19.v20170502 -> 9.3.20.v20170531

Vypnutí Jetty

Před započetím aktualizace doporučuji aktulálně běžící Jetty zastavit. Pokud však víte, co děláte, můžete tento krok přeskočit.

# Zastavení Jetty
service jetty stop

Instalace

Aktualizace z předchozí verze Jetty je velice jednoduchá. Stáhneme zdrojové kódy Jetty (ověříme jejich otisky!) a rozbalíme je. Není třeba nic konfigurovat, protože v konfiguraci se oproti předešlé verzi nic nezměnilo.

# Základní instalace Jetty
cd /opt
su idp
cd /opt/src
wget http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.20.v20170531/jetty-distribution-9.3.20.v20170531.tar.gz \
  http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.20.v20170531/jetty-distribution-9.3.20.v20170531.tar.gz.sha1 \
  http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.20.v20170531/jetty-distribution-9.3.20.v20170531.tar.gz.asc \
  http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.20.v20170531/jetty-distribution-9.3.20.v20170531.tar.gz.asc.sha1
 
# Kontrola SHA1 otisků
# Výstup z příkazu sha1sum se musí shodovat s obsahem souboru
# jetty-distribution-9.3.20.v20170531.tar.gz.sha1
sha1sum jetty-distribution-9.3.20.v20170531.tar.gz && cat jetty-distribution-9.3.20.v20170531.tar.gz.sha1
 
# Doporučuji zkontrolovat i podpis samotného archivu zdrojových kódů
# Nejprve si musíme importovat klíč FE4B68B4
#gpg --keyserver hkp://keys.gnupg.net --search-keys FE4B68B4
# Následně můžeme provést kontrolu
#gpg --verify jetty-distribution-9.3.20.v20170531.tar.gz.asc
 
exit
tar -xzf src/jetty-distribution-9.3.20.v20170531.tar.gz
chown -R idp:idp /opt/jetty-distribution-9.3.20.v20170531
ln -snf /opt/jetty-distribution-9.3.20.v20170531/bin/jetty.sh /etc/init.d/jetty
echo "JETTY_HOME=/opt/jetty-distribution-9.3.20.v20170531/" > /etc/default/jetty
echo "JETTY_BASE=/opt/jetty" >> /etc/default/jetty
echo "JETTY_USER=idp" >> /etc/default/jetty

Spuštění Jetty

Nyní stačí spustit Jetty.

# Spuštění Jetty
systemctl daemon-reload
service jetty start

Jetty běží, takže zkontrolujeme, zda nám poslouchá „nešifrovaně“ (port 8080) pouze na „localhostu“ (IPv4 adresa 127.0.0.1) a to např. pomocí příkazu nestat:

# Kontrola, zda Jetty nešifrovaně poslouchá jen na localhostu
netstat -an | grep ":8080"

Měli bychom vidět následující výstup.

# Výstup příkazu netstat
tcp6       0      0 127.0.0.1:8080          :::*                    LISTEN

Vyzkoušíme přístup přes HTTPS ze svého počítače a případně i přístup přes HTTP z příkazového řádku na serveru:

# Test přístupu k HTTP na localhostu
wget -q -O - http://127.0.0.1

Jetty 9.3.18.v20170406 -> 9.3.19.v20170502

Vypnutí Jetty

Před započetím aktualizace doporučuji aktulálně běžící Jetty zastavit. Pokud však víte, co děláte, můžete tento krok přeskočit.

# Zastavení Jetty
service jetty stop

Instalace

Aktualizace z předchozí verze Jetty je velice jednoduchá. Stáhneme zdrojové kódy Jetty (ověříme jejich otisky!) a rozbalíme je. Není třeba nic konfigurovat, protože v konfiguraci se oproti předešlé verzi nic nezměnilo.

# Základní instalace Jetty
cd /opt
su idp
cd /opt/src
wget http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.19.v20170502/jetty-distribution-9.3.19.v20170502.tar.gz \
  http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.19.v20170502/jetty-distribution-9.3.19.v20170502.tar.gz.sha1 \
  http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.19.v20170502/jetty-distribution-9.3.19.v20170502.tar.gz.asc \
  http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.19.v20170502/jetty-distribution-9.3.19.v20170502.tar.gz.asc.sha1
 
# Kontrola SHA1 otisků
# Výstup z příkazu sha1sum se musí shodovat s obsahem souboru
# jetty-distribution-9.3.19.v20170502.tar.gz.sha1
sha1sum jetty-distribution-9.3.19.v20170502.tar.gz && cat jetty-distribution-9.3.19.v20170502.tar.gz.sha1
 
# Doporučuji zkontrolovat i podpis samotného archivu zdrojových kódů
# Nejprve si musíme importovat klíč FE4B68B4
#gpg --keyserver hkp://keys.gnupg.net --search-keys FE4B68B4
# Následně můžeme provést kontrolu
#gpg --verify jetty-distribution-9.3.19.v20170502.tar.gz.asc
 
exit
tar -xzf src/jetty-distribution-9.3.19.v20170502.tar.gz
chown -R idp:idp /opt/jetty-distribution-9.3.19.v20170502
ln -snf /opt/jetty-distribution-9.3.19.v20170502/bin/jetty.sh /etc/init.d/jetty
echo "JETTY_HOME=/opt/jetty-distribution-9.3.19.v20170502/" > /etc/default/jetty
echo "JETTY_BASE=/opt/jetty" >> /etc/default/jetty
echo "JETTY_USER=idp" >> /etc/default/jetty

Spuštění Jetty

Nyní stačí spustit Jetty.

# Spuštění Jetty
systemctl daemon-reload
service jetty start

Jetty běží, takže zkontrolujeme, zda nám poslouchá „nešifrovaně“ (port 8080) pouze na „localhostu“ (IPv4 adresa 127.0.0.1) a to např. pomocí příkazu nestat:

# Kontrola, zda Jetty nešifrovaně poslouchá jen na localhostu
netstat -an | grep ":8080"

Měli bychom vidět následující výstup.

# Výstup příkazu netstat
tcp6       0      0 127.0.0.1:8080          :::*                    LISTEN

Vyzkoušíme přístup přes HTTPS ze svého počítače a případně i přístup přes HTTP z příkazového řádku na serveru:

# Test přístupu k HTTP na localhostu
wget -q -O - http://127.0.0.1

Jetty 9.3.16.v20170120 -> 9.3.18.v20170406

Vypnutí Jetty

Před započetím aktualizace doporučuji aktulálně běžící Jetty zastavit. Pokud však víte, co děláte, můžete tento krok přeskočit.

# Zastavení Jetty
service jetty stop

Instalace

Aktualizace z předchozí verze Jetty je velice jednoduchá. Stáhneme zdrojové kódy Jetty (ověříme jejich otisky!) a rozbalíme je. Není třeba nic konfigurovat, protože v konfiguraci se oproti předešlé verzi nic nezměnilo.

# Základní instalace Jetty
cd /opt
su idp
cd /opt/src
wget http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.18.v20170406/jetty-distribution-9.3.18.v20170406.tar.gz \
  http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.18.v20170406/jetty-distribution-9.3.18.v20170406.tar.gz.sha1 \
  http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.18.v20170406/jetty-distribution-9.3.18.v20170406.tar.gz.asc \
  http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.18.v20170406/jetty-distribution-9.3.18.v20170406.tar.gz.asc.sha1
 
# Kontrola SHA1 otisků
# Výstup z příkazu sha1sum se musí shodovat s obsahem souboru
# jetty-distribution-9.3.18.v20170406.tar.gz.sha1
sha1sum jetty-distribution-9.3.18.v20170406.tar.gz && cat jetty-distribution-9.3.18.v20170406.tar.gz.sha1
 
# Doporučuji zkontrolovat i podpis samotného archivu zdrojových kódů
# Nejprve si musíme importovat klíč FE4B68B4
#gpg --keyserver hkp://keys.gnupg.net --search-keys FE4B68B4
# Následně můžeme provést kontrolu
#gpg --verify jetty-distribution-9.3.18.v20170406.tar.gz.asc
 
exit
tar -xzf src/jetty-distribution-9.3.18.v20170406.tar.gz
chown -R idp:idp /opt/jetty-distribution-9.3.18.v20170406
ln -snf /opt/jetty-distribution-9.3.18.v20170406/bin/jetty.sh /etc/init.d/jetty
echo "JETTY_HOME=/opt/jetty-distribution-9.3.18.v20170406/" > /etc/default/jetty
echo "JETTY_BASE=/opt/jetty" >> /etc/default/jetty
echo "JETTY_USER=idp" >> /etc/default/jetty

Spuštění Jetty

Nyní stačí spustit Jetty.

# Spuštění Jetty
systemctl daemon-reload
service jetty start

Jetty běží, takže zkontrolujeme, zda nám poslouchá „nešifrovaně“ (port 8080) pouze na „localhostu“ (IPv4 adresa 127.0.0.1) a to např. pomocí příkazu nestat:

# Kontrola, zda Jetty nešifrovaně poslouchá jen na localhostu
netstat -an | grep ":8080"

Měli bychom vidět následující výstup.

# Výstup příkazu netstat
tcp6       0      0 127.0.0.1:8080          :::*                    LISTEN

Vyzkoušíme přístup přes HTTPS ze svého počítače a případně i přístup přes HTTP z příkazového řádku na serveru:

# Test přístupu k HTTP na localhostu
wget -q -O - http://127.0.0.1

Jetty 9.3.15.v20161220 -> 9.3.16.v20170120

Vypnutí Jetty

Před započetím aktualizace doporučuji aktulálně běžící Jetty zastavit. Pokud však víte, co děláte, můžete tento krok přeskočit.

# Zastavení Jetty
service jetty stop

Instalace

Aktualizace z předchozí verze Jetty je velice jednoduchá. Stáhneme zdrojové kódy Jetty (ověříme jejich otisky!) a rozbalíme je. Není třeba nic konfigurovat, protože v konfiguraci se oproti předešlé verzi nic nezměnilo.

# Základní instalace Jetty
cd /opt
su idp
cd /opt/src
wget http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.16.v20170120/jetty-distribution-9.3.16.v20170120.tar.gz \
  http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.16.v20170120/jetty-distribution-9.3.16.v20170120.tar.gz.sha1 \
  http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.16.v20170120/jetty-distribution-9.3.16.v20170120.tar.gz.asc \
  http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.16.v20170120/jetty-distribution-9.3.16.v20170120.tar.gz.sha1
 
# Kontrola SHA1 otisků
# Výstup z příkazu sha1sum se musí shodovat s obsahem souboru
# jetty-distribution-9.3.16.v20170120.tar.gz.sha1
sha1sum jetty-distribution-9.3.16.v20170120.tar.gz && cat jetty-distribution-9.3.16.v20170120.tar.gz.sha1
 
# Doporučuji zkontrolovat i podpis samotného archivu zdrojových kódů
# Nejprve si musíme importovat klíč FE4B68B4
#gpg --keyserver hkp://keys.gnupg.net --search-keys 438A3B7D
# Následně můžeme provést kontrolu
#gpg --verify jetty-distribution-9.3.16.v20170120.tar.gz.asc
 
exit
tar -xzf src/jetty-distribution-9.3.16.v20170120.tar.gz
chown -R idp:idp /opt/jetty-distribution-9.3.16.v20170120
ln -snf /opt/jetty-distribution-9.3.16.v20170120/bin/jetty.sh /etc/init.d/jetty
echo "JETTY_HOME=/opt/jetty-distribution-9.3.16.v20170120/" > /etc/default/jetty
echo "JETTY_BASE=/opt/jetty" >> /etc/default/jetty
echo "JETTY_USER=idp" >> /etc/default/jetty

Spuštění Jetty

Nyní stačí spustit Jetty.

# Spuštění Jetty
systemctl daemon-reload
service jetty start

Jetty běží, takže zkontrolujeme, zda nám poslouchá „nešifrovaně“ (port 8080) pouze na „localhostu“ (IPv4 adresa 127.0.0.1) a to např. pomocí příkazu nestat:

# Kontrola, zda Jetty nešifrovaně poslouchá jen na localhostu
netstat -an | grep ":8080"

Měli bychom vidět následující výstup.

# Výstup příkazu netstat
tcp6       0      0 127.0.0.1:8080          :::*                    LISTEN

Vyzkoušíme přístup přes HTTPS ze svého počítače a případně i přístup přes HTTP z příkazového řádku na serveru:

# Test přístupu k HTTP na localhostu
wget -q -O - http://127.0.0.1

Jetty 9.3.14.v20161028 -> 9.3.15.v20161220

Vypnutí Jetty

Před započetím aktualizace doporučuji aktulálně běžící Jetty zastavit. Pokud však víte, co děláte, můžete tento krok přeskočit.

# Zastavení Jetty
service jetty stop

Instalace

Aktualizace z předchozí verze Jetty je velice jednoduchá. Stáhneme zdrojové kódy Jetty (ověříme jejich otisky!) a rozbalíme je. Není třeba nic konfigurovat, protože v konfiguraci se oproti předešlé verzi nic nezměnilo.

# Základní instalace Jetty
cd /opt
su idp
cd /opt/src
wget http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.15.v20161220/jetty-distribution-9.3.15.v20161220.tar.gz \
  http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.15.v20161220/jetty-distribution-9.3.15.v20161220.tar.gz.sha1 \
  http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.15.v20161220/jetty-distribution-9.3.15.v20161220.tar.gz.asc \
  http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.15.v20161220/jetty-distribution-9.3.15.v20161220.tar.gz.asc.sha1
 
# Kontrola SHA1 otisků
# Výstup z příkazu sha1sum se musí shodovat s obsahem souboru
# jetty-distribution-9.3.15.v20161220.tar.gz.sha1
sha1sum jetty-distribution-9.3.15.v20161220.tar.gz && cat jetty-distribution-9.3.15.v20161220.tar.gz.sha1
 
# Doporučuji zkontrolovat i podpis samotného archivu zdrojových kódů
# Nejprve si musíme importovat klíč FE4B68B4
#gpg --keyserver hkp://keys.gnupg.net --search-keys FE4B68B4
# Následně můžeme provést kontrolu
#gpg --verify jetty-distribution-9.3.15.v20161220.tar.gz.asc
 
exit
tar -xzf src/jetty-distribution-9.3.15.v20161220.tar.gz
chown -R idp:idp /opt/jetty-distribution-9.3.15.v20161220
ln -snf /opt/jetty-distribution-9.3.15.v20161220/bin/jetty.sh /etc/init.d/jetty
echo "JETTY_HOME=/opt/jetty-distribution-9.3.15.v20161220/" > /etc/default/jetty
echo "JETTY_BASE=/opt/jetty" >> /etc/default/jetty
echo "JETTY_USER=idp" >> /etc/default/jetty

Spuštění Jetty

Nyní stačí spustit Jetty.

# Spuštění Jetty
systemctl daemon-reload
service jetty start

Jetty běží, takže zkontrolujeme, zda nám poslouchá „nešifrovaně“ (port 8080) pouze na „localhostu“ (IPv4 adresa 127.0.0.1) a to např. pomocí příkazu nestat:

# Kontrola, zda Jetty nešifrovaně poslouchá jen na localhostu
netstat -an | grep ":8080"

Měli bychom vidět následující výstup.

# Výstup příkazu netstat
tcp6       0      0 127.0.0.1:8080          :::*                    LISTEN

Vyzkoušíme přístup přes HTTPS ze svého počítače a případně i přístup přes HTTP z příkazového řádku na serveru:

# Test přístupu k HTTP na localhostu
wget -q -O - http://127.0.0.1

Jetty 9.3.12.v20160915 -> 9.3.14.v20161028

Vypnutí Jetty

Před započetím aktualizace doporučuji aktulálně běžící Jetty zastavit. Pokud však víte, co děláte, můžete tento krok přeskočit.

# Zastavení Jetty
service jetty stop

Instalace

Aktualizace z předchozí verze Jetty je velice jednoduchá. Stáhneme zdrojové kódy Jetty (ověříme jejich otisky!) a rozbalíme je. Není třeba nic konfigurovat, protože v konfiguraci se oproti předešlé verzi nic nezměnilo.

# Základní instalace Jetty
cd /opt
su idp
cd /opt/src
wget https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.14.v20161028/jetty-distribution-9.3.14.v20161028.tar.gz \
  https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.14.v20161028/jetty-distribution-9.3.14.v20161028.tar.gz.sha1 \
  https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.14.v20161028/jetty-distribution-9.3.14.v20161028.tar.gz.asc \
  https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.14.v20161028/jetty-distribution-9.3.14.v20161028.tar.gz.asc.asc.sha1
 
# Kontrola SHA1 otisků
# Výstup z příkazu sha1sum se musí shodovat s obsahem souboru
# jetty-distribution-9.3.14.v20161028.tar.gz.sha1
sha1sum jetty-distribution-9.3.14.v20161028.tar.gz && cat jetty-distribution-9.3.14.v20161028.tar.gz.sha1
 
# Doporučuji zkontrolovat i podpis samotného archivu zdrojových kódů
# Nejprve si musíme importovat klíč 8FB67BAC
#gpg --keyserver hkp://keys.gnupg.net --search-keys 8FB67BAC
# Následně můžeme provést kontrolu
#gpg --verify jetty-distribution-9.3.14.v20161028.tar.gz.asc
 
exit
tar -xzf src/jetty-distribution-9.3.14.v20161028.tar.gz
chown -R idp:idp /opt/jetty-distribution-9.3.14.v20161028
ln -snf /opt/jetty-distribution-9.3.14.v20161028/bin/jetty.sh /etc/init.d/jetty
echo "JETTY_HOME=/opt/jetty-distribution-9.3.14.v20161028/" > /etc/default/jetty
echo "JETTY_BASE=/opt/jetty" >> /etc/default/jetty
echo "JETTY_USER=idp" >> /etc/default/jetty

Spuštění Jetty

Nyní stačí spustit Jetty.

# Spuštění Jetty
service jetty start

Jetty běží, takže zkontrolujeme, zda nám poslouchá „nešifrovaně“ (port 8080) pouze na „localhostu“ (IPv4 adresa 127.0.0.1) a to např. pomocí příkazu nestat:

# Kontrola, zda Jetty nešifrovaně poslouchá jen na localhostu
netstat -an | grep ":8080"

Měli bychom vidět následující výstup.

# Výstup příkazu netstat
tcp6       0      0 127.0.0.1:8080          :::*                    LISTEN

Vyzkoušíme přístup přes HTTPS ze svého počítače a případně i přístup přes HTTP z příkazového řádku na serveru:

# Test přístupu k HTTP na localhostu
wget -q -O - http://127.0.0.1

Jetty 9.3.10.v20160621 -> 9.3.12.v20160915

Vypnutí Jetty

Před započetím aktualizace doporučuji aktulálně běžící Jetty zastavit. Pokud však víte, co děláte, můžete tento krok přeskočit.

# Zastavení Jetty
/etc/init.d/jetty stop

Instalace

Aktualizace z předchozí verze Jetty je velice jednoduchá. Stáhneme zdrojové kódy Jetty (ověříme jejich otisky!) a rozbalíme je. Není třeba nic konfigurovat, protože v konfiguraci se oproti předešlé verzi nic nezměnilo.

# Základní instalace Jetty
cd /opt
su idp
cd /opt/src
wget https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.12.v20160915/jetty-distribution-9.3.12.v20160915.tar.gz \
  https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.12.v20160915/jetty-distribution-9.3.12.v20160915.tar.gz.sha1 \
  https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.12.v20160915/jetty-distribution-9.3.12.v20160915.tar.gz.asc \
  https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.12.v20160915/jetty-distribution-9.3.12.v20160915.tar.gz.asc.asc.sha1
 
# Kontrola SHA1 otisků
# Výstup z příkazu sha1sum se musí shodovat s obsahem souboru
# jetty-distribution-9.3.12.v20160915.tar.gz.sha1
sha1sum jetty-distribution-9.3.12.v20160915.tar.gz && cat jetty-distribution-9.3.12.v20160915.tar.gz.sha1
 
# Doporučuji zkontrolovat i podpis samotného archivu zdrojových kódů
# Nejprve si musíme importovat klíč 8FB67BAC
#gpg --keyserver hkp://keys.gnupg.net --search-keys 8FB67BAC
# Následně můžeme provést kontrolu
#gpg --verify jetty-distribution-9.3.12.v20160915.tar.gz.asc
 
exit
tar -xzf src/jetty-distribution-9.3.12.v20160915.tar.gz
chown -R idp:idp jetty-distribution-9.3.12.v20160915/
ln -snf /opt/jetty-distribution-9.3.12.v20160915/bin/jetty.sh /etc/init.d/jetty
echo "JETTY_HOME=/opt/jetty-distribution-9.3.12.v20160915/" > /etc/default/jetty
echo "JETTY_BASE=/opt/jetty" >> /etc/default/jetty
echo "JETTY_USER=idp" >> /etc/default/jetty

Spuštění Jetty

Nyní stačí spustit Jetty.

# Spuštění Jetty
/etc/init.d/jetty start

Jetty běží, takže zkontrolujeme, zda nám poslouchá „nešifrovaně“ (port 8080) pouze na „localhostu“ (IPv4 adresa 127.0.0.1) a to např. pomocí příkazu nestat:

# Kontrola, zda Jetty nešifrovaně poslouchá jen na localhostu
netstat -an | grep ":8080"

Měli bychom vidět následující výstup.

# Výstup příkazu netstat
tcp6       0      0 127.0.0.1:8080          :::*                    LISTEN

Vyzkoušíme přístup přes HTTPS ze svého počítače a případně i přístup přes HTTP z příkazového řádku na serveru:

# Test přístupu k HTTP na localhostu
wget -q -O - http://127.0.0.1

Jetty 9.3.9.v20160517 -> 9.3.10.v20160621

Tuto aktualizaci spojíme s aktualizací commons-logging-api (z verze 1.1 na verzi 1.2) a mysql-connector-java (z verze 5.1.38 na verzi 5.1.39).

Vypnutí Jetty

Před započetím aktualizace doporučuji aktulálně běžící Jetty zastavit. Pokud však víte, co děláte, můžete tento krok přeskočit.

# Zastavení Jetty
/etc/init.d/jetty stop

Instalace

Aktualizace z předchozí verze Jetty je velice jednoduchá. Stáhneme zdrojové kódy Jetty (ověříme jejich otisky!) a rozbalíme je. Není třeba nic konfigurovat, protože v konfiguraci se oproti předešlé verzi nic nezměnilo.

# Základní instalace Jetty
cd /opt
su idp
cd /opt/src
wget http://download.eclipse.org/jetty/9.3.10.v20160621/dist/jetty-distribution-9.3.10.v20160621.tar.gz \
  http://download.eclipse.org/jetty/9.3.10.v20160621/dist/jetty-distribution-9.3.10.v20160621.tar.gz.sha1 \
  http://download.eclipse.org/jetty/9.3.10.v20160621/dist/jetty-distribution-9.3.10.v20160621.tar.gz.asc \
  http://download.eclipse.org/jetty/9.3.10.v20160621/dist/jetty-distribution-9.3.10.v20160621.tar.gz.asc.sha1
 
# Kontrola SHA1 otisků
# Výstup z příkazu sha1sum se musí shodovat s obsahem souboru
# jetty-distribution-9.3.10.v20160621.tar.gz.sha1
sha1sum jetty-distribution-9.3.10.v20160621.tar.gz && cat jetty-distribution-9.3.10.v20160621.tar.gz.sha1
 
# Doporučuji zkontrolovat i podpis samotného archivu zdrojových kódů
# Nejprve si musíme importovat klíč 8FB67BAC
#gpg --keyserver hkp://keys.gnupg.net --search-keys D7C58886
# Následně můžeme provést kontrolu
#gpg --verify jetty-distribution-9.3.10.v20160621.tar.gz.asc
 
exit
tar -xzf src/jetty-distribution-9.3.10.v20160621.tar.gz
chown -R idp:idp jetty-distribution-9.3.10.v20160621/
ln -snf /opt/jetty-distribution-9.3.10.v20160621/bin/jetty.sh /etc/init.d/jetty
echo "JETTY_HOME=/opt/jetty-distribution-9.3.10.v20160621" > /etc/default/jetty
echo "JETTY_BASE=/opt/jetty" >> /etc/default/jetty
echo "JETTY_USER=idp" >> /etc/default/jetty

Aktualizace JAR balíčku

Aktualizujeme JAR balíček mysql-connector-java (z verze 5.1.38 na verzi 5.1.39), který umístíme do složky /opt/jetty/lib/ext:

Aktualizaci provedeme následující sérií příkazů:

# Stažení
su idp
cd /opt/src/
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.39.tar.gz
 
# Instalace nové verze
tar -xzf mysql-connector-java-5.1.39.tar.gz
cp mysql-connector-java-5.1.39/mysql-connector-java-5.1.39-bin.jar /opt/jetty/lib/ext/
 
# Odstranění staré verze
rm -i /opt/jetty/lib/ext/mysql-connector-java-5.1.38-bin.jar
 
# Smazání rozbaleného archivu
rm -rf mysql-connector-java-5.1.39/
exit

Spuštění Jetty

Nyní stačí spustit Jetty.

# Spuštění Jetty
/etc/init.d/jetty start

Jetty běží, takže zkontrolujeme, zda nám poslouchá „nešifrovaně“ (port 8080) pouze na „localhostu“ (IPv4 adresa 127.0.0.1) a to např. pomocí příkazu nestat:

# Kontrola, zda Jetty nešifrovaně poslouchá jen na localhostu
netstat -an | grep ":8080"

Měli bychom vidět následující výstup.

# Výstup příkazu netstat
tcp6       0      0 127.0.0.1:8080          :::*                    LISTEN

Vyzkoušíme přístup přes HTTPS ze svého počítače a případně i přístup přes HTTP z příkazového řádku na serveru:

# Test přístupu k HTTP na localhostu
wget -q -O - http://127.0.0.1

Jetty 9.3.8.v20160314 -> 9.3.9.v20160517

Vypnutí Jetty

Před započetím aktualizace doporučuji aktulálně běžící Jetty zastavit. Pokud však víte, co děláte, můžete tento krok přeskočit.

# Zastavení Jetty
/etc/init.d/jetty stop

Instalace

Aktualizace z předchozí verze Jetty je velice jednoduchá. Stáhneme zdrojové kódy Jetty (ověříme jejich otisky!) a rozbalíme je. Není třeba nic konfigurovat, protože v konfiguraci se oproti předešlé verzi nic nezměnilo.

# Základní instalace Jetty
cd /opt
su idp
cd /opt/src
wget http://download.eclipse.org/jetty/9.3.9.v20160517/dist/jetty-distribution-9.3.9.v20160517.tar.gz \
  http://download.eclipse.org/jetty/9.3.9.v20160517/dist/jetty-distribution-9.3.9.v20160517.tar.gz.sha1 \
  http://download.eclipse.org/jetty/9.3.9.v20160517/dist/jetty-distribution-9.3.9.v20160517.tar.gz.asc \
  http://download.eclipse.org/jetty/9.3.9.v20160517/dist/jetty-distribution-9.3.9.v20160517.tar.gz.asc.sha1
 
# Kontrola SHA1 otisků
# Výstup z příkazu sha1sum se musí shodovat s obsahem souboru
# jetty-distribution-9.3.9.v20160517.tar.gz.sha1
sha1sum jetty-distribution-9.3.9.v20160517.tar.gz && cat jetty-distribution-9.3.9.v20160517.tar.gz.sha1
 
# Doporučuji zkontrolovat i podpis samotného archivu zdrojových kódů
# Nejprve si musíme importovat klíč 8FB67BAC
#gpg --keyserver hkp://keys.gnupg.net --search-keys D7C58886
# Následně můžeme provést kontrolu
#gpg --verify jetty-distribution-9.3.9.v20160517.tar.gz.asc
 
exit
tar -xzf src/jetty-distribution-9.3.9.v20160517.tar.gz
chown -R idp:idp jetty-distribution-9.3.9.v20160517/
ln -snf /opt/jetty-distribution-9.3.9.v20160517/bin/jetty.sh /etc/init.d/jetty
echo "JETTY_HOME=/opt/jetty-distribution-9.3.9.v20160517" > /etc/default/jetty
echo "JETTY_BASE=/opt/jetty" >> /etc/default/jetty
echo "JETTY_USER=idp" >> /etc/default/jetty

Spuštění Jetty

Nyní stačí spustit Jetty.

# Spuštění Jetty
/etc/init.d/jetty start

Jetty běží, takže zkontrolujeme, zda nám poslouchá „nešifrovaně“ (port 8080) pouze na „localhostu“ (IPv4 adresa 127.0.0.1) a to např. pomocí příkazu nestat:

# Kontrola, zda Jetty nešifrovaně poslouchá jen na localhostu
netstat -an | grep ":8080"

Měli bychom vidět následující výstup.

# Výstup příkazu netstat
tcp6       0      0 127.0.0.1:8080          :::*                    LISTEN

Vyzkoušíme přístup přes HTTPS ze svého počítače a případně i přístup přes HTTP z příkazového řádku na serveru:

# Test přístupu k HTTP na localhostu
wget -q -O - http://127.0.0.1

Jetty 9.3.2.v20150730 -> 9.3.8.v20160314

Při této aktualizaci dojde kromě povýšení verze Jetty také ke změně konfigurace ve smyslu spouštění Jetty pod neprivilegovaným uživatelem (idp:idp). To s sebou nese zásah do iptables a ip6tables. Navíc se zde jiným způsobem konfiguruje podpora pro SSL.

Vypnutí Jetty

Před započetím aktualizace doporučuji aktulálně běžící Jetty zastavit. Pokud však víte, co děláte, můžete tento krok přeskočit.

# Zastavení Jetty
/etc/init.d/jetty stop

Záloha

Jelikož tato aktualizace vyžaduje určité změny v konfiguraci Jetty, bude jednodušší si aktuální konfiguraci zazálohovat a začít znovu.

# Záloha aktuální konfigurace Jetty (9.3.2.v20150730)
mv /opt/jetty /opt/jetty-9.3.2.v20150730

Prerekvizity

Aby Jetty mohlo sloužit i jako HTTP server na portu 443 (standardní port pro protokol HTTPS), museli bychom Jetty pouštět pod uživatelem root. My však budeme Jetty z bezpečnostních důvodů spouštět pod neprivilegovaným uživatelem na portu 8443 a poslouchání HTTP serveru na standardním HTTPS portu 443 zajistíme přesměrováním v iptables a ip6tables.

Nejprve si vytvoříme neprivilegovaného uživatele idp ze skupiny idp. Tento uživatel bude vlastnit instalaci Jetty a později i Shibboleth IdP.

# Vytvoření skupiny idp a uživatele idp
groupadd idp
useradd -m -g idp -s /bin/bash idp

Nyní pomocí iptables zařídíme přesměrování portů. První příkaz zajistí, aby všechny požadavky na port 80 lokálního rozhraní (loopback) byly přesměrovány na port 8080, kde Jetty bude očekávat nešifrovaný provoz (pozor, platí to pouze pro požadavky z lokálního rozhraní lo). Budeme tak moci používat skripty jako status.sh, reload-service.sh aj. z Shibboleth IdP bez nutnosti zadávat nějaké přepínače, bez kterých se tyto skripty standardně připojují na http://localhost/. Druhý příkaz zajistí, že všechny žádosti na připojení se k portu 443 budou přesměrovány na port 8443, kde bude Jetty skutečně poslouchat a očekávat šifrovanou komunikaci.

# Přesměrování portů pomocí iptables (IPv4)
iptables -t nat -A OUTPUT -o lo -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 443 -j DNAT --to-destination :8443

Nezapomeneme ani na přesměrování portů pro komunikaci přes protokol IPv6. Zde však pouze pro šifrovanou komunikaci.

# Přesměrování portů pomocí ip6tables (IPv6)
ip6tables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination :8443

Pravidla pro iptables samozřejmě budeme potřebovat někam uložit a znovu načíst po restartu serveru. V případě Debianu toho docílíme uložením pravidel (pro IPv4 a IPv6 zvlášť).

# Uložení pravidel pro iptables a ip6tables
iptables-save > /etc/iptables.conf
ip6tables-save > /etc/ip6tables.conf

Nyní vytvoříme skripty, které uložená pravidla načtou po startu systému a nezapomeneme skripty nastavit jako spustitelné, aby se po startu systému opravdu provedly.

# Vytvoření skriptů pro načtení pravidel pro iptables po startu systému
echo '#!/bin/bash' > /etc/network/if-up.d/iptables
echo 'iptables-restore < /etc/iptables.conf' >> /etc/network/if-up.d/iptables
echo '#!/bin/bash' > /etc/network/if-up.d/ip6tables
echo 'ip6tables-restore < /etc/ip6tables.conf' >> /etc/network/if-up.d/ip6tables
chmod +x /etc/network/if-up.d/iptables /etc/network/if-up.d/ip6tables

Instalace

Instalace Jetty je velice jednoduchá. Nejprve stáhneme zdrojové kódy Jetty (ověříme jejich otisky!), rozbalíme je a nastavíme několik voleb pro Jetty.

# Základní instalace Jetty
cd /opt
mkdir -p src jetty/tmp
chown -R idp:idp src jetty
su idp
cd /opt/src
wget http://download.eclipse.org/jetty/9.3.8.v20160314/dist/jetty-distribution-9.3.8.v20160314.tar.gz \
  http://download.eclipse.org/jetty/9.3.8.v20160314/dist/jetty-distribution-9.3.8.v20160314.tar.gz.sha1 \
  http://download.eclipse.org/jetty/9.3.8.v20160314/dist/jetty-distribution-9.3.8.v20160314.tar.gz.asc \
  http://download.eclipse.org/jetty/9.3.8.v20160314/dist/jetty-distribution-9.3.8.v20160314.tar.gz.asc.sha1
 
# Kontrola SHA1 otisků
# Výstup z příkazu sha1sum se musí shodovat s obsahem souboru
# jetty-distribution-9.3.8.v20160314.tar.gz.sha1
sha1sum jetty-distribution-9.3.8.v20160314.tar.gz && cat jetty-distribution-9.3.8.v20160314.tar.gz.sha1
 
# Doporučuji zkontrolovat i podpis samotného archivu zdrojových kódů
# Nejprve si musíme importovat klíč 8FB67BAC
#gpg --keyserver hkp://keys.gnupg.net --search-keys 8FB67BAC
# Následně můžeme provést kontrolu
#gpg --verify jetty-distribution-9.3.8.v20160314.tar.gz.asc
 
exit
tar -xzf src/jetty-distribution-9.3.8.v20160314.tar.gz
chown -R idp:idp jetty-distribution-9.3.8.v20160314/
ln -snf /opt/jetty-distribution-9.3.8.v20160314/bin/jetty.sh /etc/init.d/jetty
echo "JETTY_HOME=/opt/jetty-distribution-9.3.8.v20160314" > /etc/default/jetty
echo "JETTY_BASE=/opt/jetty" >> /etc/default/jetty
echo "JETTY_USER=idp" >> /etc/default/jetty

Nyní je potřeba Jetty ještě správně nakonfigurovat. Základní konfigurace probíhá spuštěním Jetty s definováním modulů, které budou pro provoz Shibbolethu potřeba:

# Základní konfigurace Jetty (jako uživatel idp)
su idp
cd /opt/jetty
java -jar /opt/jetty-distribution-9.3.8.v20160314/start.jar \
    --add-to-startd=http,https,logging,deploy,jsp,jstl,plus,servlets,annotations,ext,resources,logging,requestlog

Chceme, aby Jetty bylo omezeno na nešifrovanou komunikaci přes protokol HTTP pouze na lokálním rozhraní. Umožní nám to snadné použití skriptů pro Shibboleth IdP (status.sh, reload-service.sh). V souboru start.d/http.ini tedy provedeme toto omezení.

# Upravíme konfiguraci Jetty pro HTTP (jako uživatel idp)
#su idp
vi start.d/http.ini

Odkomentujeme proměnnou jetty.http.host a nastavíme ji na hodnotu localhost (výchozí 0.0.0.0).

// Povolení HTTP pouze pro localhost
jetty.http.host=localhost

V adresáři /opt/jetty/webapps/root vytvoříme jednoduchou stránku, která se zobrazí při zadání URL adresy naší instalace Jetty. Toto je sice nepoviné, ale pokud se někdo dostane na stránku samotného IdP, je zajisté dobré, aby stránka nevypadala matoucím dojmem. Obsah souboru index.html si upravte dle svého vlastního uvážení – můžete např. nastavit přesměrování na domovskou stránku své organizace.

# Vytvoření jednoduché stránky pro Jetty (jako uživatel idp)
#su idp
mkdir -p /opt/jetty/webapps/root
vi /opt/jetty/webapps/root/index.html

Připravíme si konfigurační soubor idp.xml, pomocí něhož definujeme, který WAR (Web application ARchive) bude obsahovat webovou aplikaci našeho IdP a na jaké adrese (v tomto případě https://HOSTNAME_SERVERU/idp) bude přes web IdP naslouchat.

# Konfigurační soubor pro idp.war (jako uživatel idp)
#su idp
vi /opt/jetty/webapps/idp.xml

Obsah konfiguračního souboru /opt/jetty/webapps/idp.xml je následující. Konfigurační soubor idp.xml si můžete také stáhnout.

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
    <Set name="war">/opt/shibboleth-idp/war/idp.war</Set>
    <Set name="contextPath">/idp</Set>
    <Set name="extractWAR">false</Set>
    <Set name="copyWebDir">false</Set>
    <Set name="copyWebInf">true</Set>
    <Set name="tempDirectory">/opt/jetty/tmp</Set>
</Configure>

Tímto máme Jetty téměř připraveno. Zatím jej však nebudeme pouštět, jelikož stejně nemáme nainstalovaný Shibboleth IdP a tedy idp.war zatím neexistuje. Navíc jsme ještě nenakonfigurovali SSL certifikát, aby bylo možné k Jetty (a tedy Shibbolethu) přistupovat přes HTTPS.

SSL certifikát

Zde si práci usnadníme a použijeme keystore ze stávající verze Jetty.

# Zkopírování současného 'keystore'
cp /opt/jetty-9.3.2.v20150730/etc/keystore /opt/jetty/etc/

Ze stávající konfigurace použijeme samozřejmě i obfuskovaná hesla.

# Získání stávajících hesel pro SSL konfiguraci
grep ^jetty.sslContext. /opt/jetty-9.3.2.v20150730/start.d/ssl.ini

Vaše hesla budou samozřejmě jiná. Ta níže uvedená jsou zde jen pro ilustraci.

jetty.sslContext.keyStorePassword=OBF:1pifri71kjq1fm1ugw11b1kk01uf1w8f1u61jr1w9b1a31kmm11b1uu1lbw1mw1ri71pjr
jetty.sslContext.keyManagerPassword=OBF:1yy1jn919k1rt1j01j61v2htvl1j41saj1sarjrm1th1v1xj8x1jrq1oph1v921jk91owk
jetty.sslContext.trustStorePassword=OBF:1pifri71kjq1fm1ugw11b1kk01uf1w8f1u61jr1w9b1a31kmm11b1uu1lbw1mw1ri71pjr

Výše uvedená hesla zadáme do nového konfiguračního souboru start.d/ssl.ini.

# Zadáme výše uvedená hesla do start.d/ssl.ini
vi start.d/ssl.ini

SSL konfigurace

Výchozí konfigurace Jetty umožňuje i použití dnes již nepříliš důvěryhodných šifer. Proto jejich použití v konfiguraci Jetty zakážeme. K tomu si vytvoříme soubor tweak-ssl.xml (ke stažení zde) v adresáři /opt/jetty/etc.

# Úprava SSL konfigurace pro Jetty (jako uživatel idp)
#su idp
vi /opt/jetty/etc/tweak-ssl.xml

Obsah souboru tweak-ssl.xml je následující:

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd">
 
<Configure id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory">
 
  <!-- Zakázání starých a nedůvěryhodných šifer -->
  <Call name="addExcludeCipherSuites">
    <Arg>
      <Array type="String">
        <Item>.*DES.*</Item>
        <Item>.*DSS.*</Item>
        <Item>.*MD5.*</Item>
        <Item>.*NULL.*</Item>
        <Item>.*RC4.*</Item>
        <Item>.*_RSA_.*MD5$</Item>
        <Item>.*_RSA_.*SHA$</Item>
        <Item>.*_RSA_.*SHA1$</Item>
        <Item>TLS_DHE_RSA_WITH_AES_128.*</Item>
        <Item>TLS_DHE_RSA_WITH_AES_256.*</Item>
      </Array>
    </Arg>
  </Call>
 
  <!-- Zakázání nedůvěryhodných protokolů -->
  <Call name="addExcludeProtocols">
    <Arg>
     <Array type="java.lang.String">
       <Item>SSL</Item>
       <Item>SSLv2</Item>
       <Item>SSLv2Hello</Item>
       <Item>SSLv3</Item>
     </Array>
    </Arg>
  </Call>
 
  <!-- Povolení Forward Secrecy -->
  <Set name="IncludeCipherSuites">
    <Array type="String">
      <Item>TLS_DHE_RSA.*</Item>
      <Item>TLS_ECDHE.*</Item>
    </Array>
  </Set>
 
</Configure>

Nyní už zbývá jen Jetty instruovat, aby tento konfigurační soubor načetlo, to se provede jeho zápisem do start.d/https.ini:

# Přidání tweak-ssl.xml do konfigurace Jetty
echo etc/tweak-ssl.xml >> start.d/https.ini

S tímto nastavením je zabezpečení komunikace na výrazně vyšší úrovni.

Spuštění Jetty

Nyní zbývá nastavit vlastnická práva na Jetty a Shibboleth IdP uživateli idp ze skupiny idp (pro případ, že jsme v předchozích krocích někde zapomněli provést určitou úpravu jako uživatel idp a provedli jsme ji jako root) a spustit Jetty.

# Nastavení vlastnických práv pro Jetty a spuštění
chown -R idp:idp /opt/jetty/ /opt/jetty-distribution*/ /opt/shibboleth-idp/
/etc/init.d/jetty start

Jetty běží, takže zkontrolujeme, zda nám poslouchá „nešifrovaně“ (port 8080) pouze na „localhostu“ (IPv4 adresa 127.0.0.1) a to např. pomocí příkazu nestat:

# Kontrola, zda Jetty nešifrovaně poslouchá jen na localhostu
netstat -an | grep ":8080"

Měli bychom vidět následující výstup.

# Výstup příkazu netstat
tcp6       0      0 127.0.0.1:8080          :::*                    LISTEN

Vyzkoušíme přístup přes HTTPS ze svého počítače a případně i přístup přes HTTP z příkazového řádku na serveru:

# Test přístupu k HTTP na localhostu
wget -q -O - http://127.0.0.1
Poslední úprava:: 2018/12/03 14:00