„Shib2IdpInstall” változatai közötti eltérés

Innen: KIFÜ Wiki
(Apache beállítás)
(Apache beállítás)
161. sor: 161. sor:
  
 
== Apache beállítás ==
 
== Apache beállítás ==
 +
 +
Tanusítványok beszerzése és bemásolása <code>/etc/ssl</code> vonatkozó alkönyvtárai alá.
 +
=== MySQL Autentikáció TomCat-en keresztül ===
 +
{{ambox
 +
| type = todo
 +
| image = [[Image:UnderConstruction.png|40px]]
 +
| text = <big>'''A tanusítványos rész még megírásra vár'''</big>
 +
----
 +
{{#if:{{{1|}}} | {{{1}}} | 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 <code>/etc/apache2/ports.conf</code> fájlba
 
Meg kell adni, hogy az apache figylejen a 443-as és 8443-as portokon. Az alábbiak kerüljenek a <code>/etc/apache2/ports.conf</code> fájlba

A lap 2008. október 15., 12:36-kori változata

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.

További információ angolul

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á.

MySQL Autentikáció TomCat-en keresztül



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

Teszt