Shib2IdpInstall
Tartalomjegyzék
[elrejtés]Előkészületek
entityID
Tanúsítvány
Tűzfal
Be kell engedni a 443-as és a 8443-as portokat. Ha nagyon szigorúan vesszük, akkor a 8443-as portot elegendő csak a szóbajöhető SP-kről beengedni, de ezzel általában nem vagyunk tisztában, ezért célszerű a "nagyvilágból" beengedni. Biztonsági szempontból nem sok különbség van a 443-as és a 8443-as porton elérhető alkalmazások között.
JDK
Sajnos Etch alatt a sun-java5-jdk
csomag függ egy csomó X-es csomagtól, melyeket nem biztos, hogy szeretnénk telepíteni egy szerveren, érdemes lehet
- feltenni a
sun-java5-jre
csomagot ÉS - kézzel telepíteni egy JDK-t, mondjuk a http://java.sun.com oldalról letöltve
Ez igazából egy nagy hack, ugyanis ahhoz, hogy a tomcat-et csomagból telepíteni tudjuk, kell a java2-runtime
csomag, amelyet biztosít a JRE is, viszont a Tomcat-nek JDK kell, hogy JSP-t tudjon futtatni.
- Megj.: Minden JSP-t első futtatáskor a konténer (Tomcat) lefordít Java kóddá, aztán byte-kóddá, ezért tart jó sokáig az - újraindítás utáni - első request. Ezután az eredményt elcache-eli, így csak akkor kell újrafordítania, ha a JSP megváltozik.
A JDK telepítés elég egyszerű, letöltjük a java.sun.com oldalról a nekünk tetsző verziót, aztán kicsomagoljuk, mondjuk a /usr/lib
alá, aztán csinálunk egy szimbolikus linket, hogy a /usr/jdk
mindig a "jó" JDK-ra mutasson.
Állítsuk be, a JAVA_HOME
környezeti változót!
export JAVA_HOME=/usr/jdk
Shibboleth security provider
Be kell másolni a lib/shib-jce-1.0.jar
állományt a $JAVA_HOME/jre/lib/ext
könyvtárba. Ha az ext/
könyvtár nem létezik, akkor hozzuk létre.
cp lib/shib-jce-1.0.jar $JAVA_HOME/jre/lib/ext
Ezek után be kell állítani, hogy a JRE használni is tudja ezt a providert. Ehhez a $JAVA_HOME/jre/lib/security/java.security
fájlban keressük meg az ún. "security provider"-eket, és írjuk hozzá a következő sort:
security.provider.7=edu.internet2.middleware.shibboleth.DelegateToApplicationProvider
- Megj.: a "security.provider." után következő szám mindig a megelőzőnél legyen eggyel nagyobb!
Bouncy Castle JCE
A JVM-mel jövő Java Cryptography Engine (JCE) nem támogatja az összes kriptográfiai algoritmust, amelyre az Identity Providernek szüksége lehet (pl. XML Digital Signature, XML Encryption). A Bouncy Castle JCE ezek mellett még olyan algoritmusokat is tartalmaz (általában hatékonyabb és szabványosabb formában), amelyek benne vannak a Java JCE-ben.
Ehhez először le kell tölteni a Castle JCE-t. A JCE állományok a Provider oszlopban, a "Signed Jar Files" részben találhatók. (A nevük bcprov-jdk-VERZIO.jar
.) Letöltés után a .jar fájlokat a $JAVA_HOME/jre/lib/ext
könyvtárba kell tenni.
wget http://polydistortion.net/bc/download/bcprov-jdk15-138.jar cp bcprov-jdk15-138.jar $JAVA_HOME/jre/lib/ext
Ezek után be kell állítani, hogy a JRE használni is tudja ezt a providert. Ehhez a $JAVA_HOME/jre/lib/security/java.security
fájlban keressük meg az ún. "security provider"-eket, és írjuk hozzá a következő sort:
security.provider.8=org.bouncycastle.jce.provider.BouncyCastleProvider
- Megj.: a "security.provider." után következő szám mindig a megelőzőnél legyen eggyel nagyobb!
Tomcat 5.5
Telepítés
Ha minden rendben meg, akkor elegendő egy
apt-get install tomcat5.5
Ez felpakolja a tomcat különböző függőségeit is.
Ahhoz, hogy a Tomcat rendben elinduljon, szükséges neki megmondani, hogy hol találja a JDK-t. Ezért tegyük a /etc/default/tomcat5.5
fájlba a következőt:
JAVA_HOME=/usr/jdk
Ne felejtsük el, hogy a Tomcat szerver "tomcat55" user nevében fog futni! Mivel a Shibboleth servletnek szüksége van arra, hogy hozzáférjen a filerendszerhez, a Java Security Manager-t ki kell kapcsolni a /etc/default/tomcat5.5
fájlban:
TOMCAT5_SECURITY=no
Ahhoz, hogy a Tomcat számára üzembiztosan elegendő memóriát biztosítsunk, ugyanebbe a fájlba ( /etc/default/tomcat5.5
) adjuk meg:
CATALINA_OPTS="-Xms256M -Xmx512M -XX:MaxPermSize=512M -XX:-DisableExplicitGC -server"
Beállítás
Tomcat Apache mögött fut
A 8009-es porton figyelő Connector elem konfigurációjához hozzá kell adni, hogy a tomcatAuthentication
értéke "false" legyen, ezen kívül a hozzáférést korlátozhatjuk a localhost-ra is (hiszen a Connector-t csak a helyben futó Apache mod_jk konnektora érheti el).
<Connector port="8009" address="127.0.0.1" tomcatAuthentication="false"
enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
Tomcat önállóan, Apache nélkül fut
Ha a Tomcat Apache nélkül fut, akkor be kell állítani, hogy az SP-vel való kommunikációra fenntartott 8443-as porton egyből a Tomcat figyeljen.
<Connector port="8443"
maxHttpHeaderSize="8192"
maxSpareThreads="75"
scheme="https"
secure="true"
clientAuth="want"
SSLEnabled="true"
sslProtocol="TLS"
keystoreFile="IDP_HOME/credentials/idp.jks"
keystorePass="PASSWORD"
truststoreFile="IDP_HOME/credentials/idp.jks"
truststorePass="PASSWORD"
truststoreAlgorithm="DelegateToApplication"/>
Ahol az IDP_HOME
az IdP alapkönyvtára, a PASSWORD
pedig az IdP telepítésekor megadandó jelszó lesz.
Shibboleth 2.0 IdP servlet telepítés
Letöltés
Az IdP innen tölthető le: http://shibboleth.internet2.edu/downloads/shibboleth/idp/latest/
Kicsomagolás
A shibboleth-idp-2.0.0-bin.zip
fájl tartalma kicsomagolás után a /usr/local/shibboleth-idp
könyvtár alákerül
cd /usr/local jar -xf shibboleth-idp-2.0.0-bin.zip
Endorsed jar állományok
Sajnos - legalábbis a cikk írásakor - a "kincstári" Sun-os Tomcat (Java?) JAXP parser egy ismert memóriaszivárgást tartalmaz, ezért a disztribúcióban az endorsed/
könyvtárban található .jar file-okat kézzel be kell másolni a Tomcat endorsed/
könyvtárába.
- A Debian alatti tomcat5.5 csomag használatakor a
/usr/share/tomcat5.5/common/endorsed
könyvtárba kell tenni a jar file-okat.
rm /usr/share/tomcat5.5/common/endorsed/xercesImpl.jar rm /usr/share/tomcat5.5/common/endorsed/xml-apis
cp endorsed/*.jar /usr/share/tomcat5.5/common/endorsed/
Installer
export JAVA_HOME=/usr/jdk cd /usr/local/shibboleth-idp chmod 755 ant.sh ./ant.sh
A telepítés során az alábbi kérdésekre kell választ adnunk:
Is this a new installation? Answering yes will overwrite your current configurat ion. [yes|no] yes
Új telepítés, vagy sem.
Where should the Shibboleth Identity Provider software be installed? [default: / opt/shibboleth-idp-2.0.0] /usr/local/shobboleth-idp
Itt található a letöltött és kicsomagolt shibboleth programcsomag
What is the hostname of the Shibboleth Identity Provider server? [default: idp.example.org] idp.example.org
Shibboleth IdP alkalmazás URI alapú azonosítója.
A keystore is about to be generated for you. Please enter a password that will be used to protect it. secret
Feljegyzendő jelszó :)
Befejezés
Szimbolikus linkek megadása - az egyértelműség és konvenció kedvéért...
ln -s /usr/local/shibboleth-idp/conf /etc/shibboleth ln -s /usr/local/shibboleth-idp/logs /var/log/shibboleth
Környezeti változó beállítása
IDP_HOME=/usr/local/shibboleth-idp export IDP_HOME
Jogosultságok beállítása - hogy a tomcat55
felhasználü írhassa az alábbi könyvtárakat
cd /usr/local/shibboleth-idp chown -R tomcat55 logs metadata credentials chmod 755 logs metadata
Create a context descriptor (mi ez magyarul???)
cd /var/lib/tomcat5.5/ mkdir -p conf/Catalina/localhost
Az így létrehozott könyvtárban készítsünk egy idp.xml
nevű (a név legyen azonos a idp webalkalmazás nevével) fájlt az alábbi tartalommal:
<Context
docBase="/opt/shibboleth-idp/war/idp.war"
privileged="true"
antiResourceLocking="false"
antiJARLocking="false"
unpackWAR="false" />
Autentikáció beállítása
Apache beállítás
Tanusítványok beszerzése és bemásolása /etc/ssl
vonatkozó alkönyvtárai alá.
![]() |
A tanusítványos rész még megírásra vár
Ha ki tudod egészíteni, megköszönjük! |
Meg kell adni, hogy az apache figylejen a 443-as és 8443-as portokon. Az alábbiak kerüljenek a /etc/apache2/ports.conf
fájlba
Listen 443 Listen 8443
Be kell állítani a virtuális hosztot, amelyhez az IdP-t rendeltük. Először a 443-as portot konfiguráljuk.
<IfModule mod_ssl.c> <VirtualHost _default_:443> ServerName aai-logon.example.org SSLEngine On SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile /etc/ssl/certs/aai-logon.example.org.crt SSLCertificateKeyFile /etc/ssl/private/aai-logon.example.org.key SSLCertificateChainFile /etc/ssl/certs/aai-logon.example.org.crt #SSLCACertificatePath /etc/ssl/certs #SSLCACertificateFile /etc/ssl/ca-bundle.crt #SSLCARevocationPath /etc/ssl/certs #SSLCARevocationFile /etc/ssl/ca-bundle.crl #SSLVerifyDepth 10 SSLOptions +StdEnvVars </VirtualHost> </IfModule> <IfModule mod_proxy_ajp.c> ProxyRequests Off <Proxy ajp://localhost:8009> Allow from all </Proxy> ProxyPass /idp ajp://localhost:8009/idp retry=5 ProxyPass /cas ajp://localhost:8009/cas retry=5 </IfModule>
Majd a 8443-as portot is beállítjuk
<IfModule mod_ssl.c> <VirtualHost _default_:8443> ServerName aai-logon.example.org SSLEngine On SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile /etc/ssl/certs/aai-aa.example.org.crt SSLCertificateKeyFile /etc/ssl/private/aai-aa.example.org.key SSLCertificateChainFile /etc/ssl/certs/aai-aa.example.org.crt #SSLCACertificatePath /etc/ssl/certs SSLCACertificateFile /etc/ssl/ca-bundle.switchaai.crt #SSLCARevocationPath /etc/ssl/certs #SSLCARevocationFile /etc/ssl/ca-bundle.crl SSLVerifyDepth 10 SSLVerifyClient optional_no_ca SSLOptions -StdEnvVars +ExportCertData </VirtualHost> </IfModule> <IfModule mod_proxy_ajp.c> ProxyRequests Off <Proxy ajp://localhost:8009> Allow from all </Proxy> ProxyPass /idp ajp://localhost:8009/idp retry=5 </IfModule>
Ezek után engedélyezni kell a virtuális hosztokat
a2ensite aai-logon a2ensite aai-aa apache2ctl -t Syntax OK
Majd az ssl modult
a2enmod ssl Module ssl installed; run /etc/init.d/apache2 force-reload to enable.
Végül a proxy_ajp modult
a2enmod proxy_ajp Enabling proxy as a dependency Module proxy installed; run /etc/init.d/apache2 force-reload to enable. Module proxy_ajp installed; run /etc/init.d/apache2 force-reload to enable.
Végezetül újra kell indítani az apache-ot
apache2ctl -k restart
Shibboleth 2.0 IdP beállítás
Metadaták beállítása
![]() |
A metadatákkal kapcsolatos rész még hiányzik
Ha ki tudod egészíteni, megköszönjük! |