Die Nutzung der SharePoint-Schnittstellen durch die App wird durch ein Token authorisiert. Das Token selbst enthält eine kryptografische Signatur, die von SharePoint geprüft wird. Für diesen Zweck muss ein Zertifikat erzeugt werden.
Serverzertifikate im IIS
Man kann den Weg über den SharePoint-Server nehmen, der in der MSDN beschrieben ist. Das Ergebnis sind eine PFX- und eine CER-Datei, die die binäre Version des privaten und des öffentlichen Schlüssels enthalten. Der private Teil muss anschließend in das PEM-Format umgewandelt werden, dazu dient der folgende Befehl:
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
Zertifikat mit openssl
Zuerst wird ein Schlüssel erzeugt:
openssl genrsa -des3 -out server.key 2048
Danach wird eine Zertifikatsanforderung erstellt:
openssl req -new -key server.key -out server.csr
Der Einfachheit halber wird nun der Passwortschutz der Schlüssel-Datei entfernt:
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
Jetzt kann das Zertifikat ausgestellt werden:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Jetzt liegen die Dateien server.key und server.crt vor, wiederum der private und der öffentliche Teil.
Für die Verwendung im Registrierungsschritt muss der öffentliche Teil noch umgewandelt werden:
openssl x509 -outform der -in server.crt -out server.cer
Fingerabdruck x5t erzeugen
Dazu muss zuerst der Fingerabdruck des Zertifikats ausgelesen werden. Folgender Befehl kann genutzt werden:
openssl x509 -sha1 -in server.crt -noout -fingerprint
Der angezeigte Hex-Code wird anschließend in folgender JavaScript-Funktion verarbeitet:
g="A1:A5:55:04:EA:13:CA:F3:16:FC:36:7C:4C:C2:F1:50:A1:25:70:DB" gp = g.split(":") bytes=[] for(var i=0; i< gp.length; i++ ){ bytes.push(parseInt(gp[i], 16)) } str = String.fromCharCode.apply(String, bytes) console.log(btoa(str))