You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 19 Next »

Nedan beskrivs installation av Shibboleth IdP på en Windows-miljö, direkt kopplad mot ett Active Directory. Vid testinstallationen användes en Windows 2008 R2. Standardbrandvägg med öppning för 8443 och 443.

Följ instruktionerna på Shibboleth-wikin: https://wiki.shibboleth.net/confluence/display/SHIB2/IdPQuickInstall

Sätta JAVA_HOME permanent

  1. Högerklicka på Computer
  2. Klicka på Advanced system settings
  3. Klicka på Environment Variables
  4. Lägg till JAVA_HOME under System variables, lämpligt värde kan vara C:\Program Files (x86)\Java\jre7
  5. Kontrollera att det blev rätt genom att öppna en kommandoprompt (cmd)
    "%JAVA_HOME%\bin\java" -version
    

Logfiler

Loggar hamnar i C:\Program Files (x86)\Internet2\Shib2IdP\logs\idp-process.log

Vanliga fel

idp-process.log: Could not negotiate TLS connection, unable to find valid certification path to requested target

Detta betyder att SSL-uppkopplingen mot AD:t/LDAP:en misslyckades. En trolig orsak är att AD:ts/LDAP:ens certifikat inte är signerat av för JRE:n en betrodd part. För att lösa detta behöver AD:ts/LDAP:ens certifikat läggas in i JRE:ns certifikatstore.

"%JAVA_HOME%\bin\keytool" -importcert -keystore "%JAVA_HOME%\lib\security\cacerts" -storepass changeit -file cert.cer -alias adserver1.hsk.se

Flera AD-servrar med olika certifikat

Typiskt så har man flera AD-servrar i ett AD, exvis adserver1.hsk.se, adserver2.hsk.se, osv. Då har man ofta ett dns-entry, exvis ad.hsk.se, som pekar ut ad-servrarna med round-robin. Java kräver dock att certifikatet matchar servernamnet man anropar, så anropar man ad.hsk.se så måste certifikatet vara utställt på ad.hsk.se, inte adserver1.hsk.se. Enklaste lösningen är att välja en av AD-servrarna och bara peka ut den, nackdelen är att redundansen påverkas. AD-/LDAP-server konfigurerar man i dessa filer:

C:\Program Files (x86)\Internet2\Shib2IdP\conf\attribute-resolver.xml
C:\Program Files (x86)\Internet2\Shib2IdP\conf\login.config

Starta om tomcat

Tomcat läggs in som en tjänst i Windows, "tomcat6". Den startas om i Kontrollpanelen - Administrative Tools - Services.

Okänt certifikat för LDAP:en

Om CN för certifikatet som AD/LDAP-servern presenterar inte matchar servernamnet du angett i attribute-resolver.xml och login.xml så kommer ett felmeddelande skrivas i idp-process.log. Lättast sättet att lista ut CN för certifikatet är att köra följande OpenSSL-kommande:

openssl s_client -connect <ldap-servernamn>:636

Om inte OpenSSL finns installerat kan man istället köra dessa PowerShell-kommandon:

# Ange servernamn och port
$hostname = "ad.hsk.se"
$port = 636

# Anslut till servern och hämta certifikatet
$socket = New-Object Net.Sockets.TcpClient($hostname, $port)
$sslStream = New-Object System.Net.Security.SslStream $socket.getStream(),$false,{$true}
$sslStream.AuthenticateAsClient($null)
$cert = $sslStream.RemoteCertificate

# Skriv ut subject för certifikatet (CN)
$cert.Subject

# Konvertera certifikatet till DER-format
$certData = $cert.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Cert)

# Skriv ut certifikatet i fil
Set-Content -value $certData -Encoding byte -Path "cert.cer"

# Konvertera certifikatet till PKCS12-format
$certData = $cert.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12)

# Skriv ut certifikatet i fil
Set-Content -value $certData -Encoding byte -Path "cert.p12"

Om certifikatet inte är signerad av en för JRE:n känd CA så behöver certifikatet läggas in i cacert för JRE:n. Används cert.cer eller cert.p12 från ovan tillsammans med keytool.

Inloggning misslyckas

Verifiera att baseDN i attribute-resolver.xml och login.config matchar strukturen i AD:t/LDAP:en. Default i AD är "CN=Users,DC=<domain>". Det är också viktigt att man ser till att den användare som man använder för att autentisiera mot AD endast är en läsanvändare och inte en Domain Admin eller dylikt.

Publikt SSL-servercertifikat

Vid installationen automatgenereras ett självsignerat servercertifikat:

C:\Program Files (x86\IInternet2\Shib2IdP\credentials\idp.jks

Detta anges i tomcat-konfigurationen:

C:\Program Files (x86)\Internet2\CaptiveTomcat 6.0\conf\server.xml

JKS-filer hanteras av keytool som följer med Java JRE. För att importera ett befintligt certifikat med keytool behövs en p12-fil.

Skapa en PKCS12-fil

Installera OpenSSL: http://www.openssl.org/related/binaries.html

openssl pkcs12 -export -in cert.pem -inkey cert.key -certfile ca.pem -passout pass:secretpassword1 -out cert.p12 -name mycert

Skapa en JKS-fil från en p12-fil

"%JAVA_HOME%\bin\keytool" -importkeystore -deststorepass secretpassword2 -destkeypass secretpassword2 -destkeystore cert.jks -srckeystore cert.p12 -srcstoretype PKCS12 -srcstorepass secretpassword1 -alias mycert
  • No labels