Toto je staršia verzia dokumentu!


Inštalácia Shibboleth SP

Pridať repoziár Shiboleth. Obsah konfiguráku sa dá vygenerovať na stránke: https://shibboleth.net/downloads/service-provider/RPMS/

vim /etc/yum.repos.d/shibboleth.repo
[shibboleth]
name=Shibboleth (CentOS_7)
# Please report any problems to https://issues.shibboleth.net
type=rpm-md
mirrorlist=https://shibboleth.net/cgi-bin/mirrorlist.cgi/CentOS_7
gpgcheck=1
gpgkey=https://shibboleth.net/downloads/service-provider/RPMS/repomd.xml.key
enabled=1
yum install shibboleth.x86_64

Po inštalácii sa nachádza konfigurácia v adresári:

/etc/shibboleth/

a konfiguracia Apache v subore:

/etc/httpd/conf.d/shib.conf

Do adresára /usr/sbin sa nainštaluje shibd, ktorý je možné manažovať cez systemctl.

Modul mod_shib.so bude nainštalovaný do /usr/lib64/shibboleth.

Pre službu je potrebné zvoliť jednoznačný identifikátor. Odporúčaný postup je taký, že ak sa služba nachádza napríklad na doméne https://www.safeid.sk tak identifikátor bude https://www.safeid.sk/shibboleth.

Keď máme zvolený identifkátor, vygenerujeme SSL certifikát, ktorý bude využívať Shibboleth pre komunikáciu s IdP. Odporúča sa vytvoriť nový certifikát a nepoužíť SSL certifikát webu aj za cenu, že vytvorené certifikát bude self signed:

Certifikát vytvoríme pomocou nástroja, ktorý sa nainštaloval spolu so Shibboleth SP:

/etc/shibboleth/keygen.sh -h www.safeid.sk -e https://www.safeid.sk/shibboleth -f -y 10

Certifikát vygenerovaý týmto príkazom bude mať platnosť 10 rokov.

Vygenerovanné súbory budú uložené v adresári /etc/shibboleth a ich názvy budú sp-encrypt-cert.pem, sp-encrypt-key.pem, sp-signing-cert.pem, sp-signing-key.pem.

Súborom treba zmeniť vlastníka na používateľa, pod ktorým beží služba shibd:

chown shibd:shibd sp-encrypt-cert.pem
chown shibd:shibd sp-encrypt-key.pem
chown shibd:shibd sp-signing-cert.pem
chown shibd:shibd sp-signing-key.pem

Do adresára s certifikátmi stiahneme aj certifikát, ktorý používa federácia:

wget https://www.safeid.sk/metadata/cert/SAFEID_metadata_signer.pem

Podľa potreby upravíme metadata uložené v súbore /etc/shibboleth/metadata-template.xml:

<?xml version="1.0" encoding="utf-8" ?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata">
  <md:SPSSODescriptor>
    <md:Extensions>
      <mdui:UIInfo xmlns:mdui="urn:oasis:names:tc:SAML:metadata:ui">
        <mdui:DisplayName xml:lang="en">safeID Wiki</mdui:DisplayName>
        <mdui:DisplayName xml:lang="sk">safeID Wiki</mdui:DisplayName>
        <mdui:Description xml:lang="en">Slovak Academic Federation of Identities Wiki.</mdui:Description>
        <mdui:Description xml:lang="sk">Wiki stránky Slovenskej akademickej federácie identít.</mdui:Description>
        <mdui:InformationURL xml:lang="en">https://www.safeid.sk/</mdui:InformationURL>
        <mdui:InformationURL xml:lang="sk">https://www.safeid.sk/</mdui:InformationURL>
        <mdui:Logo height="81" width="99">https://www.safeid.sk/lib/tpl/arctic/images/sanetsmall_sk.gif</mdui:Logo>
      </mdui:UIInfo>
    </md:Extensions>
  </md:SPSSODescriptor>
  <md:Organization>
    <md:OrganizationName xml:lang="en">The Association of the Users of the Slovak Academic Network SANET</md:OrganizationName>
    <md:OrganizationName xml:lang="sk">Združenie používateľov slovenskej akademickej dátovej siete SANET</md:OrganizationName>
    <md:OrganizationDisplayName xml:lang="en">SANET</md:OrganizationDisplayName>
    <md:OrganizationDisplayName xml:lang="sk">SANET</md:OrganizationDisplayName>
    <md:OrganizationURL xml:lang="en">http://www.sanet.sk/en</md:OrganizationURL>
    <md:OrganizationURL xml:lang="sk">http://www.sanet.sk/</md:OrganizationURL>
  </md:Organization>
  <md:ContactPerson contactType="technical">
    <md:GivenName>Helpdesk</md:GivenName>
    <md:SurName>UMB</md:SurName>
    <md:EmailAddress>mailto:helpdesk@umb.sk</md:EmailAddress>
  </md:ContactPerson>
</md:EntityDescriptor>

Úpravy urobíme aj v súbore shibboleth2.xml:

 <SPConfig xmlns="urn:mace:shibboleth:3.0:native:sp:config"
    xmlns:conf="urn:mace:shibboleth:3.0:native:sp:config"
    clockSkew="180">
    <OutOfProcess tranLogFormat="%u|%s|%IDP|%i|%ac|%t|%attr|%n|%b|%E|%S|%SS|%L|%UA|%a" />
 
    <!-- Doplníme ID služby -->
    <ApplicationDefaults entityID="https://www.safeid.sk/shibboleth"
        REMOTE_USER="eppn subject-id pairwise-id persistent-id"
        cipherSuites="DEFAULT:!EXP:!LOW:!aNULL:!eNULL:!DES:!IDEA:!SEED:!RC4:!3DES:!kRSA:!SSLv2:!SSLv3:!TLSv1:!TLSv1.1">
 
        <Sessions lifetime="28800" timeout="3600" relayState="ss:mem"
                  checkAddress="false" handlerSSL="true" cookieProps="https">
 
    	    <!-- Zadáme URL discovery servisu -->	
            <SSO discoveryProtocol="SAMLDS" discoveryURL="https://wayf.safeid.sk/">
              SAML2
            </SSO>
 
            <Logout>SAML2 Local</Logout>
          <!-- Nastavíme IP rozsahy, z ktorých môže ppristupovať administrátor k vybraným url (funkciám) -->
            <LogoutInitiator type="Admin" Location="/Logout/Admin" acl="127.0.0.1 194.160.39.60 194.160.44.13" />
 
          <!-- Metadata su ulozene v subore metadata-template.xml -->
          <Handler type="MetadataGenerator" Location="/Metadata" signing="false" template="metadata-template.xml"/>
 
          <Handler type="Status" Location="/Status" acl="127.0.0.1 194.160.39.60 194.160.44.13"/>
 
            <Handler type="Session" Location="/Session" showAttributeValues="false"/>
 
            <Handler type="DiscoveryFeed" Location="/DiscoFeed"/>
        </Sessions>
 
 
      <Errors supportContact="helpdesk@umb.sk"
            helpLocation="/about.html"
            styleSheet="/shibboleth-sp/main.css"/>
        <!-- Informácia o umiestnení metadát federácie a jej podpisového certifikátu (súbor, ktorý sme stiahli) -->
        <MetadataProvider type="XML" validate="true"
                    url="https://www.safeid.sk/metadata/metadata.safeid.sk.idp.xml"
              backingFilePath="safeid-idp.xml" maxRefreshDelay="600">
            <MetadataFilter type="Signature" certificate="SAFEID_metadata_signer.pem" verifyBackup="false"/>
        </MetadataProvider>
 
        <AttributeExtractor type="XML" validate="true" reloadChanges="false" path="attribute-map.xml"/>
 
        <AttributeFilter type="XML" validate="true" path="attribute-policy.xml"/>
 
      	<!-- Názvy súborov s vygenenerovanými certifikátmi -->
        <CredentialResolver type="File" use="signing"
            key="sp-signing-key.pem" certificate="sp-signing-cert.pem"/>
        <CredentialResolver type="File" use="encryption"
            key="sp-encrypt-key.pem" certificate="sp-encrypt-cert.pem"/>
 
    </ApplicationDefaults>
 
    <SecurityPolicyProvider type="XML" validate="true" path="security-policy.xml"/>
 
    <ProtocolProvider type="XML" validate="true" reloadChanges="false" path="protocols.xml"/>
</SPConfig>

Mozno bude treba nainstalovat verziu curl z projektu Shibboleth :

cd /etc/yum.repos.d/
wget https://download.opensuse.org/repositories/security:shibboleth/CentOS_7/security:shibboleth.repo
yum install curl-openssl

Keďže Centos obsahuje Curl skompilované s NSS a nie OpenSSl (viac tu https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPLinuxRH6) je nutné pred spustením nasledovného príkazu zmeniť cestu ku knižniciam (pre používateľa shibd sa to robí automaticky):

export LD_LIBRARY_PATH=/opt/shibboleth/lib64

Konfiguráciu je možné potom skontrolovať nasledujúcim príkazom:

shibd -tc /etc/shibboleth/shibboleth2.xml

Spustíme Shibboleth service a reštartujeme Apache.

systemctl enable shibd
systemctl start shibd

Následne je treba zabezpečiť aby požadovaný web vyžadoval zabezpečenie cez Shibboleth:

<Directory "/var/www/html/">
  ....
  AuthType shibboleth
  require shibboleth
</Directory>

Nakoniec reštartujeme webový server:

apachectl graceful
  • install-sp-shibboleth.1563914993
  • Posledná úprava: 12. 10. 2020 15:24