Zertifikat erzeugen

Gespeichert von Erik Wegner am/um

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))