Rozdiely

Tu môžete vidieť rozdiely medzi vybranou verziou a aktuálnou verziou danej stránky.

Odkaz na tento prehľad zmien

Obojstranná predošlá revízia Predchádzajúca revízia
Nasledujúca revízia
Predchádzajúca revízia
install:idp:konfiguracia_a_instalacia_openjdk_a_jetty [09. 04. 2021 12:43]
jnamesny@umb.sk
— (aktuálne)
Riadok 1: Riadok 1:
-====== Konfigurácia a inštalácia OpenJDK a Jetty ====== 
  
- 
-Budú sa inštalovať nasledovné verzie softvérov: 
- 
-Java OpenJDK 11  
- 
-Jetty 9.4 
- 
-> OpenJDK 
->> https://openjdk.java.net/ 
- 
-> Akú verziu Jetty mám použiť? 
->> https://www.eclipse.org/jetty/documentation/current/what-jetty-version.html 
- 
-**Inštalácia OpenJDK** 
- 
-<code> 
-dnf -y install java-11-openjdk 
-</code> 
- 
-Adresár s nainštalovanou verziou: /usr/lib/jvm 
-Zobrazenie podrobností nainštalovanej verzie: 
- 
-<code> 
-java -version 
-</code> 
- 
-Nastavíme Java_HOME (premennú používajú aplikácie Java na určenie umiestnenia inštalácie Java): 
- 
-<code> 
-vim /etc/profile.d/java.sh 
-</code> 
- 
-Do vytvoreného súboru zapíšeme: 
- 
-<alert type="info" icon="glyphicon glyphicon-info-sign"> 
-Pod "x" sa rozumie aktuálne číselné označenie nainštalovanej verzie, ktorá sa nachádza v adresári "/usr/lib/jvm". 
-</alert> 
- 
- 
-<code> 
-JAVA_HOME="/usr/lib/jvm/java-11-openjdk-11.0.x.x-x.el8_2.x86_64" 
-</code> 
- 
-Po uložení súboru java.sh uplatníme zmeny: 
- 
-<code> 
-source /etc/profile.d/java.sh 
-</code> 
- 
-Skontrolujeme nastavenie: 
- 
-<code> 
-echo $JAVA_HOME 
-</code> 
- 
-Mal by sa zobraziť výsledok: 
- 
-<code> 
-/usr/lib/jvm/java-11-openjdk-11.0.x.x-x.el8_2.x86_64 
-</code> 
- 
-**Inštalácia a konfigurácia Jetty** 
- 
-Vytvoríme novú skupinu "idp" a používateľa "idp". 
- 
-<code> 
-groupadd idp 
-useradd -m -g idp -s /bin/bash idp 
-</code> 
- 
-Stiahneme aktuálnu verziu Jetty (v tomto návode je to jetty-distribution-9.4.31...) 
- 
-> Eclipse Jetty Downloads - The latest release 
->> https://www.eclipse.org/jetty/download.html 
- 
-<code> 
-wget URL=odkaz-na-stiahnutie-jetty 
-</code> 
- 
-<alert type="info" icon="glyphicon glyphicon-info-sign"> 
-V ďalších krokoch návod pokračuje s verziou jetty použitou v príklade. 
-</alert> 
- 
- 
-<code> 
-wget https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.4.31.v20200723/jetty-distribution-9.4.31.v20200723.tar.gz 
-</code> 
- 
-Rozbalíme, premiestnime a premenujeme: 
- 
-<code> 
-tar -zxvf jetty-distribution-9.4.31.v20200723.tar.gz 
-mv jetty-distribution-9.4.31.v20200723 /opt/ 
-mv /opt/jetty-distribution-9.4.31.v20200723 /opt/jetty 
-</code> 
- 
-Zmeníme vlastníka adresára:  
- 
-<code> 
-chown -R idp:idp /opt/jetty 
-</code> 
- 
-Vytvoríme konfiguračný súbor: 
- 
-<code> 
-vim /etc/default/jetty 
-</code> 
- 
-S obsahom: 
- 
-<code> 
-JETTY_HOME=/opt/jetty 
-JETTY_BASE=/opt/jetty 
-</code> 
- 
-<alert type="info" icon="glyphicon glyphicon-info-sign"> 
-Ďalej pracujeme pod používateľom "idp" 
-</alert> 
- 
- 
-<code> 
-su idp 
-cd /opt/jetty 
-</code> 
- 
-Konfigurácia Jetty: 
- 
-<code> 
-java -jar /opt/jetty/start.jar --create-startd 
-java -jar /opt/jetty/start.jar --add-to-start=http,https,console-capture,deploy,jsp,jstl,plus,servlets,annotations,ext,resources,requestlog,setuid,rewrite,ssl 
-</code> 
- 
-Úprava konfiguračného súboru ''start.ini'': 
- 
-<code> 
-vim /opt/jetty/start.d/start.ini 
-</code> 
- 
-<code xml> 
-# --------------------------------------- 
-# Module: http 
-# Enables an HTTP connector on the server. 
-# By default HTTP/1 is support, but HTTP2C can 
-# be added to the connector with the http2c module. 
-# --------------------------------------- 
---module=http 
-jetty.http.host=localhost 
-jetty.http.port=80 
-</code> 
- 
-<code xml> 
-# --------------------------------------- 
-# Module: ssl 
-# Enables a TLS(SSL) Connector on the server. 
-# This may be used for HTTPS and/or HTTP2 by enabling 
-# the associated support modules. 
-# --------------------------------------- 
---module=ssl 
-jetty.ssl.port=443 
-</code> 
- 
-Úprava konfiguračného súboru "setuid.ini" (spustenie Jetty pod neprivilegovaným používateľom): 
- 
-<code> 
-vim /opt/jetty/start.d/setuid.ini 
-</code> 
- 
-<code> 
-# --------------------------------------- 
-# Module: setuid 
-# Enables the unix setUID configuration so that the server 
-# may be started as root to open privileged ports/files before 
-# changing to a restricted user (eg jetty). 
-# --------------------------------------- 
---module=setuid 
- 
-## SetUID Configuration 
-# jetty.setuid.startServerAsPrivileged=false 
-# jetty.setuid.userName=jetty 
-# jetty.setuid.groupName=jetty 
-# jetty.setuid.umask=002 
-# jetty.setuid.clearSupplementalGroups=false 
-jetty.setuid.startServerAsPrivileged=false 
-jetty.setuid.userName=idp 
-jetty.setuid.groupName=idp 
-jetty.setuid.umask=002 
-</code> 
- 
-Vytvorenie domovskej stránky pre webový server: 
- 
-<code> 
-mkdir -p /opt/jetty/webapps/root 
-vim /opt/jetty/webapps/root/index.html 
-</code> 
- 
-Príklad obsahu ''index.html'': 
- 
-<code html> 
-<html> 
-        <head> 
-                <title> 
-                        DemoIdP 
-                </title> 
-        </head> 
-        <body> 
-                <h1>DemoIdP</h1> 
-        </body> 
-</html> 
-</code> 
- 
-Príprava pre aplikáciu Shibboleth IdP: 
- 
-<code> 
-mkdir /opt/jetty/tmp 
-vim /opt/jetty/webapps/idp.xml 
-</code> 
- 
-Konfiguračný súbor ''idp.xml'' obsahuje: 
- 
-<code xml> 
-<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> 
-</code> 
- 
-Upravíme konfiguračný súbor ''start.ini'' (nastavenia pre zvýšenie bezpečnosti): 
- 
-<code> 
-vim /opt/jetty/start.d/start.ini 
-</code> 
- 
-<code> 
-# --------------------------------------- 
-# Module: server 
-# Enables the core Jetty server on the classpath. 
-# --------------------------------------- 
---module=server 
-jetty.httpConfig.sendServerVersion=false 
-</code> 
- 
-Konfiguráciu ''jetty-rewrite.xml'' doplníme nasledovne: 
- 
-<code> 
-vim /opt/jetty/etc/jetty-rewrite.xml 
-</code> 
- 
-<code xml> 
-<?xml version="1.0"?><!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd"> 
- 
-<Configure id="Server" class="org.eclipse.jetty.server.Server"> 
- 
-  <!-- =========================================================== --> 
-  <!-- configure rewrite handler                                   --> 
-  <!-- =========================================================== --> 
-  <Call name="insertHandler"> 
-    <Arg> 
-      <New class="org.eclipse.jetty.rewrite.handler.RewriteHandler"> 
-        <Set name="rewriteRequestURI"><Property name="jetty.rewrite.rewriteRequestURI" deprecated="rewrite.rewriteRequestURI" default="true"/></Set> 
-        <Set name="rewritePathInfo"><Property name="jetty.rewrite.rewritePathInfo" deprecated="rewrite.rewritePathInfo" default="false"/></Set> 
-        <Set name="originalPathAttribute"><Property name="jetty.rewrite.originalPathAttribute" deprecated="rewrite.originalPathAttribute" default="requestedPath"/></Set> 
- 
-        <!-- Set DispatcherTypes  --> 
-        <Set name="dispatcherTypes"> 
-          <Array type="javax.servlet.DispatcherType"> 
-            <Item><Call class="javax.servlet.DispatcherType" name="valueOf"><Arg>REQUEST</Arg></Call></Item> 
-            <Item><Call class="javax.servlet.DispatcherType" name="valueOf"><Arg>ASYNC</Arg></Call></Item> 
-          </Array> 
-        </Set> 
- 
-        <Get id="Rewrite" name="ruleContainer"/> 
- 
-        <!-- see rewrite-compactpath.xml for example how to add a rule --> 
- 
-        <Call name="addRule"> 
-          <Arg> 
-            <New class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule"> 
-              <Set name="pattern">*</Set> 
-              <Set name="name">Strict-Transport-Security</Set> 
-              <Set name="value">max-age=15768000</Set> 
-            </New> 
-          </Arg> 
-        </Call> 
- 
-        <Call name="addRule"> 
-          <Arg> 
-            <New class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule"> 
-              <Set name="pattern">*</Set> 
-              <Set name="name">X-Content-Type-Options</Set> 
-              <Set name="value">nosniff</Set> 
-            </New> 
-          </Arg> 
-        </Call> 
- 
-        <Call name="addRule"> 
-          <Arg> 
-            <New class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule"> 
-              <Set name="pattern">*</Set> 
-              <Set name="name">X-Xss-Protection</Set> 
-              <Set name="value">1; mode=block</Set> 
-            </New> 
-          </Arg> 
-        </Call> 
- 
-        <Call name="addRule"> 
-          <Arg> 
-            <New class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule"> 
-              <Set name="pattern">*</Set> 
-              <Set name="name">X-Frame-Options</Set> 
-              <Set name="value">DENY</Set> 
-            </New> 
-          </Arg> 
-        </Call> 
- 
-        <Call name="addRule"> 
-          <Arg> 
-            <New class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule"> 
-              <Set name="pattern">*</Set> 
-              <Set name="name">Content-Security-Policy-Report-Only</Set> 
-              <Set name="value">default-src 'self'; style-src 'self' https://maxcdn.bootstrapcdn.com; script-src 'self' https://maxcdn.bootstrapcdn.com https://ajax.googleapis.com; img-src 'self'; font-src https://maxcdn.bootstrapcdn.com; frame-ancestors 'none'</Set> 
-            </New> 
-          </Arg> 
-        </Call> 
- 
-        <Call name="addRule"> 
-          <Arg> 
-            <New class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule"> 
-              <Set name="pattern">*</Set> 
-              <Set name="name">Referrer-Policy</Set> 
-              <Set name="value">no-referrer-when-downgrade</Set> 
-            </New> 
-          </Arg> 
-        </Call> 
- 
-      </New> 
-    </Arg> 
-  </Call> 
-</Configure> 
-</code> 
- 
-====== Konfigurácia SSL ====== 
- 
- 
-<alert type="info" icon="glyphicon glyphicon-info-sign"> 
-Pracujeme pod používateľom "root" 
-</alert> 
- 
-Pre webový server budeme potrebovať verejný certifikát vydaný verejnou certifikačnou autoritou (ďalej CA). 
- 
-Vygenerujeme si žiadosť o certifikát (nachádzame sa v domovskom adresári používateľa "root"): 
- 
-<code> 
-mkdir ssl_cert (vytvoríme si adresár, do ktorého budeme ukladať všetko potrebné) 
-cd /root/ssl_cert 
-openssl req -new -newkey rsa:2048 -nodes -keyout demoidp.key -out demoidp.csr 
-</code> 
- 
-Proces generovania prebieha nasledovne (možeme si pripraviť informácie, ktoré potrebujeme vyplniť): 
- 
-<code> 
-Generating a RSA private key 
-.......+++++ 
-........+++++ 
-writing new private key to 'demoidp.key' 
------ 
-You are about to be asked to enter information that will be incorporated 
-into your certificate request. 
-What you are about to enter is what is called a Distinguished Name or a DN. 
-There are quite a few fields but you can leave some blank 
-For some fields there will be a default value, 
-If you enter '.', the field will be left blank. 
------ 
-Country Name (2 letter code) [XX]: 
-State or Province Name (full name) []: 
-Locality Name (eg, city) [Default City]: 
-Organization Name (eg, company) [Default Company Ltd]: 
-Organizational Unit Name (eg, section) []: 
-Common Name (eg, your name or your server's hostname) []: 
-Email Address []: 
- 
-Please enter the following 'extra' attributes 
-to be sent with your certificate request 
-A challenge password []: 
-An optional company name []: 
-</code> 
- 
-V adresári "/root/ssl_cert" by sa mali nachádzať vygenerované súbory: 
- 
-> demoidp.csr 
-> demoidp.key 
- 
-Súbor demoidp.csr je určený pre vygenerovanie SSL certifikátu verejnou CA. 
- 
-Certifikát, ktorý sme už dostali od verejnej CA si v tomto príklade premenujeme na: "demoidp.crt". 
- 
-V adresári "/root/ssl_cert" máme spolu sústredené súbory: 
- 
-> demoidp.csr 
-> demoidp.key 
-> demoidp.crt (skopírovaný a premenovaný certifikát od verejnej CA) 
-> intermediate.crt (medziľahlý certifikát od verejnej CA doručený spolu s SSL certifikátom - koreňový certifikát verejnej CA nepotrebujeme 
- 
-V prípade, že verejná CA používa medziľahlý certifikát potrebujeme ho zlúčiť s SSL certifikátom vygenerovaným pre webový server: 
- 
-<code> 
-cat demoidp.crt intermediate.crt > jetty-cert.txt 
-</code> 
- 
-Vytvorený súbor ''jetty-cert.txt'' prevedieme do formátu PKCS#12. 
- 
-Budeme vyzvaný na zadanie hesla (nezabudneme si ho poznačiť, pre účely tohto návodu ho nazveme Heslo_1) 
- 
-<code> 
-openssl pkcs12 -export -inkey demoidp.key -in jetty-cert.txt -out jetty-cert.pkcs12 
-</code> 
- 
-V adresári "/root/ssl_cert" by sa mali momentálne spolu nachádzať súbory: 
- 
-> demoidp.csr 
-> demoidp.key 
-> demoidp.crt 
-> intermediate.crt 
-> jetty-cert.txt 
-> jetty-cert.pkcs12 
- 
-Ďalej importujeme súbor "jetty-cert.pkcs12" do keystore. 
- 
-Pri vytváraní keystore budeme vyzvaný na zadanie nového hesla, ktoré si tiež nezabudneme poznačiť (pre účely tohto návodu ho nazveme Heslo_2). 
- 
-Následne potom budeme vyzvaný na zadanie hesla - Heslo_1, ktoré sme zadali pri vytváraní''jetty-cert.pkcs12''. 
- 
-<code> 
-$JAVA_HOME/bin/keytool -importkeystore -srckeystore jetty-cert.pkcs12 -srcstoretype PKCS12 -destkeystore keystore 
-</code> 
- 
-Proces prebieha nasledovne: 
- 
-<code> 
-Importing keystore jetty-cert.pkcs12 to keystore... 
-Enter destination keystore password:  ------------------> zadávame Heslo_2 
-Re-enter new password: -------------> zadávame Heslo_2 
-Enter source keystore password: ----------------> zadávame Heslo_1 
-Entry for alias 1 successfully imported. 
-Import command completed:  1 entries successfully imported, 0 entries failed or cancelled 
-</code> 
- 
-V adresáry "/root/ssl_cert" nám pribudol súbor "keystore". 
-Presunieme ho do umiestnenia "/opt/jetty/etc" a nastavíme mu potrebné oprávnenia: 
- 
-<code> 
-mv keystore /opt/jetty/etc 
-chown idp:idp /opt/jetty/etc/keystore 
-</code> 
- 
-**Obsfukácia hesla.** 
- 
-Účelom je skomplikovať viditeľnosť hesla "Heslo_2", ktoré potrebujeme zapísať do konfigurácie ''start.ini''. 
- 
-<alert type="warning" icon="glyphicon glyphicon-alert"> 
-Uvedený príkaz obsahuje verziu jetty-util súvisiacu s verziou Jetty, ktorá bola nainštalovaná pre účely tohto návodu. 
-</alert> 
- 
- 
-<code> 
-java -cp /opt/jetty/lib/jetty-util-9.4.31.v20200723.jar org.eclipse.jetty.util.security.Password Heslo_2 
-</code> 
- 
-Výstup po úspešnej obsfukácii vyzerá nasledovne (pre príklad sú použité "x"): 
- 
-<code> 
-Heslo_2 
-OBF:XxxxXxxxXXxxxxXXxxxXXXXxxxxxXXXXxxxxXxxXxXxXxxxxXXxXXxxxxX 
-MD5:XxXxxXXxxxXxxXXxXxx 
-</code> 
- 
-<alert type="info" icon="glyphicon glyphicon-info-sign"> 
-Ďalej pracujeme pod používateľom "idp" 
-</alert> 
- 
- 
-Do konfigurácie ''start.ini'' doplníme obsfukované Heslo_2 vo formáte OBF: 
- 
-<code> 
-vim /opt/jetty/start.d/start.ini 
-</code> 
- 
-<code> 
-# --------------------------------------- 
-# Module: ssl 
-# Enables a TLS(SSL) Connector on the server. 
-# This may be used for HTTPS and/or HTTP2 by enabling 
-# the associated support modules. 
-# --------------------------------------- 
---module=ssl 
-jetty.ssl.port=443 
- 
-## Keystore password 
-jetty.sslContext.keyStorePassword=OBF:XxxxXxxxXXxxxxXXxxxXXXXxxxxxXXXXxxxxXxxXxXxXxxxxXXxXXxxxxX 
- 
-## KeyManager password 
-jetty.sslContext.keyManagerPassword=OBF:XxxxXxxxXXxxxxXXxxxXXXXxxxxxXXXXxxxxXxxXxXxXxxxxXXxXXxxxxX 
- 
-## Truststore password 
-jetty.sslContext.trustStorePassword=OBF:XxxxXxxxXXxxxxXXxxxXXXXxxxxxXXXXxxxxXxxXxXxXxxxxXXxXXxxxxX 
-</code> 
- 
-**Zakázanie nedôveryhodných protokolov a slabých šifier** 
- 
-Vytvoríme súbor ''tweak-ssl.xml'': 
- 
-<code> 
-vim /opt/jetty/etc/tweak-ssl.xml 
-</code> 
- 
-S obsahom: 
- 
-<code xml> 
-<?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> 
-</code> 
- 
-Ďalej pridáme obsah súboru do konfigurácie HTTPS: 
- 
-<code> 
-echo /opt/jetty/etc/tweak-ssl.xml >> /opt/jetty/start.d/https.ini 
-</code> 
- 
-**Vytvorenie systemd service file pre Jetty** 
- 
-<alert type="info" icon="glyphicon glyphicon-info-sign"> 
-Pracujeme pod používateľom "root" 
-</alert> 
- 
- 
-> jetty.service 
->> https://gist.github.com/canariecaf/0fdd6db9e4f294afca79 
- 
-<code> 
-vim /usr/lib/systemd/system/jetty.service 
-</code> 
- 
-Vytvoríme súbor ''jetty.service'' s obsahom: 
- 
-<code> 
-# 
-# A basic systemd configuration for Jetty to start on boot  
- 
-# Uses the Service scenario of 'oneshot' run as root 
-# and once the process has run, it is considered successful 
-# regardless of error code (even 'FAILURE') as jetty 
-# may take longer to start than jetty.sh observes it's logs  
-# for.   
-# 
-# 
- 
-[Unit] 
-Description=Jetty Web Application Server 
-After=network.target 
- 
-[Install] 
-WantedBy=multi-user.target 
-Alias=jetty.service 
-  
-[Service] 
-Type=oneshot 
- 
-# Execute pre and post scripts as root 
-PermissionsStartOnly=true 
- 
-# The process will be considered active after it exits 
-RemainAfterExit=yes 
- 
-# Note on the Start we do not wait for successful start. 
-# This is to allow the container to run beyond the jetty shell script 
-# in cases where it takes very long to start and results in jetty.sh 
-# reporting FAILED.  It's a false positive on failure. 
- 
-ExecStart=-/opt/jetty/bin/jetty.sh start 
-ExecStop=/opt/jetty/bin/jetty.sh stop 
-ExecReload=/opt/jetty/bin/jetty.sh restart 
-</code>  
- 
-Povolíme službu HTTPS vo firewall: 
- 
-<code> 
-firewall-cmd --zone=public --permanent --add-service=https 
-firewall-cmd --reload 
-firewall-cmd --zone=public --list-services  (môžeme skontrolovať zmenu) 
-</code> 
- 
-Nastavíme automatické spustenie služby ''jetty.service'' a službu spustíme: 
- 
-<code> 
-systemctl daemon-reload 
-systemctl enable jetty 
-systemctl start jetty 
-systemctl status jetty (môžeme skontrolovať stav) 
-</code> 
- 
-Stav Jetty môžeme skontrolovať aj spustením skriptu: 
- 
-<code> 
-/opt/jetty/bin/jetty.sh check 
-</code> 
- 
-Môžete pokračovať [[install:idp:konfiguracia_a_instalacia_shibboleth|Konfigurácia a inštalácia Shibboleth]] 
  • install/idp/konfiguracia_a_instalacia_openjdk_a_jetty.1617965031
  • Posledná úprava: 09. 04. 2021 12:43