Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Beim Implementieren der Sperrung ist das Bereitstellen einer Sperrliste erforderlich. Dabei handelt es sich um ein XML-Dokument, das die XrML-Sprache (eXtensible Rights Markup Language) verwendet und die Prinzipale auflistet, die keinen Zugriff mehr auf durch Rechte geschützte Inhalte haben sollen. Sie müssen Sperrlisten erstellen, die mit einem Zeitstempel versehen und entsprechend mit dem in RMS bereitgestellten Tool zum Signieren von Sperrlisten („RLsigner.exe“) signiert wurden.
Wichtig
Um die Sperrliste mit „RLsigner.exe“ signieren zu können, müssen Sie sie als Unicode-Datei speichern.
Beispiel für eine Sperrliste
In diesem Thema wird ein umfassendes Sperrlistenbeispiel dargestellt, das alle möglichen Sperrmechanismen zeigt. Sie können dieses Beispiel als Modell zum Erstellen eigener Sperrlisten verwenden.
Eine Sperrliste ist eine XML-Datei, die die XrML-Sprache verwendet.
Das BODY-Element enthält vier untergeordnete Elemente:
- ISSUEDTIME. Enthält das Datum und die Uhrzeit der Ausstellung der Sperrliste. Dieses Element wird von „RLsigner.exe“ in die Datei eingefügt. Im Beispiel hier wird es nur angegeben, um die Gesamtstruktur der Sperrlistendatei zu zeigen.
- DESCRIPTOR. Enthält Daten, die die Datei als Sperrliste identifizieren.
- ISSUER. Enthält Daten zum Identifizieren der Entität, die die Sperrliste ausstellt.
- REVOCATIONLIST. Enthält untergeordnete REVOKE-Elemente, die von dieser Liste gesperrte Entitäten angeben.
Ein Beispiel für eine Sperrlistendatei ist unten dargestellt.
Hinweis
Die Elemente ISSUEDTIME, PUBLICKEY und SIGNATURE sind nicht unbedingt erforderlich, da sie von „RLsigner.exe“ eingefügt oder überschrieben werden.
<?xml version="1.0" ?>
<XrML xml:space=”preserve” version=”1.2”>
<BODY type="LICENSE" version="3.0">
<ISSUEDTIME>...</ISSUEDTIME>
<DESCRIPTOR>
<OBJECT type="Revocation-List">
<ID type="MS-GUID">{d6373cba-01f1-4f32-ac58-260f580af0f8}</ID>
</OBJECT>
</DESCRIPTOR>
<ISSUER>
<OBJECT type="Revocation-List">
<ID type="acsii-tag">External revocation authority</ID>
<NAME>Revocation list name</NAME>
<ADDRESS type="URL">https://somedomain.com/revocation_list_file</ADDRESS>
</OBJECT>
<PUBLICKEY>...</PUBLICKEY>
</ISSUER>
<REVOCATIONLIST>
<REVOKE>...<\REVOKE>
<REVOKE>...<\REVOKE>
</REVOCATIONLIST>
<SIGNATURE>...</SIGNATURE>
</XrML>
![]() |
---|
Wenn Sie in der Sperrliste eine URL angeben, darf in RMS mit SP1 und RMS mit SP2 nicht mehr ein UNC-Pfad verwendet werden. Sie müssen zwingend eine URL angeben. |
Nachdem Sie die REVOKE-Elemente definiert haben, kann die Sperrliste signiert werden.
Verwenden des REVOKE-Elements
In der Beispielsperrliste im Abschnitt „Beispiel für eine Sperrliste“ gibt jedes REVOKE-Element einen Prinzipal an, der zu sperren ist. Das öffnende Tag verfügt über Kategorie- und Typattribute, die definieren, was gesperrt wird und welches Kriterium für die Sperrung verwendet wird. Welche Elemente dem REVOKE-Element jeweils untergeordnet sind, hängt von der durch die Kategorie und die Typattribute angegebenen Aktion ab.
Weitere Informationen zum Angeben von REVOKE-Elementen finden Sie in den folgenden Beispielen:
- Sperren von Prinzipalen anhand eines öffentlichen Schlüssels
- Sperren von Zertifikaten und Lizenzen anhand der GUID
- Sperren von Zertifikaten und Lizenzen anhand des Hashwerts
- Sperren von Zertifikaten und Lizenzen anhand des öffentlichen Schlüssels des Ausstellers
- Sperren von Zertifikaten und Lizenzen anhand der Aussteller-ID
- Sperren von Inhalten anhand der Inhalts-ID
- Sperren von Prinzipalen anhand der Prinzipal-ID
- Sperren von Prinzipalen anhand der Windows Live-ID
Sperren von Prinzipalen anhand eines öffentlichen Schlüssels
In diesem Beispiel wird ein Prinzipal anhand seines öffentlichen Schlüssels gesperrt. Der Inhalt des <PUBLICKEY>-Tags stammt aus dem Knoten <BODY><ISSUEDPRINCIPALS><PRINCIPAL><PUBLICKEY> des Zertifikats, das den Schlüssel ausgestellt hat.
<REVOKE category="principal" type="principal-key">
<PUBLICKEY>
<ALGORITHM>RSA-1024</ALGORITHM>
<PARAMETER name="public exponent">
<VALUE encoding="integer32">65537</VALUE>
</PARAMETER>
<PARAMETER name="modulus">
<VALUE encoding="base64" size="1024">
6Jn0kEAWU+1AFWtuUmBYL8Jza8tLhUv/BCmgcq/Pc08Au3DvXkH65s+0MEyZjM+71j3F1xaXUSst+wH2FjApkY1RxgL8VAKIuEvIy9hRrvY1YhJx/0Ite5fZeg2crUFrmoQgZzaJ50FvoakA2QMgZZgxoQmwiGE0y40cEJtIlE0=
</VALUE>
</PARAMETER>
</PUBLICKEY>
</REVOKE>
Sperren von Zertifikaten und Lizenzen anhand der GUID
In diesem Beispiel wird ein Zertifikat oder eine Lizenz anhand der GUID gesperrt. Bei Verwendung dieser Sperrliste kann kein Zertifikat bzw. keine Lizenz mit einer übereinstimmenden GUID verwendet werden. Der Inhalt des „<ID>“-Tags in diesem Beispiel stammt aus dem Knoten „<BODY><DESCRIPTOR><OBJECT><ID>“ des Zertifikats oder der Lizenz, das bzw. die Sie sperren möchten. (Sie können auch Anwendungen mithilfe dieses Mechanismus sperren, indem Sie die ID des Anwendungsmanifests angeben.)
<REVOKE category="license" type="license-id">
<OBJECT>
<ID type="MS-GUID">{06BCB94D-43E5-419f-B180-AA9FD321ED7A}</ID>
</OBJECT>
</REVOKE>
Sperren nach Anwendungsmanifest
Zum Sperren nach Anwendungsmanifest müssen Sie die Aussteller-ID, den öffentlichen Schlüssel des Ausstellers, die Lizenz-ID oder den Lizenz-Hash aus dem Anwendungsmanifest extrahieren. Anwendungsmanifeste sind jedoch Base-64-kodiert. Daher sind diese Informationen in einfacher Textform nicht verfügbar. Mit dem RMS-SDK kann ein Programm entwickelt werden, das die Methoden „DRMConstructCertificateChain“, „DRMDeconstructCertificateChain“ und „DRMDecode“ verwendet, um das Anwendungsmanifest zu dekodieren und die erforderlichen Informationen abzurufen.
Wenn Sie nicht möchten, dass eine bestimmte Anwendung durch Rechte geschützte Inhalte abrufen kann, sollten Sie mithilfe eines Anwendungsausschlusses verhindern, dass der RMS-Cluster dieser Anwendung Nutzungslizenzen erteilt. Ein Anwendungsausschluss kann jedoch nicht verhindern, dass ein Benutzer mit einer gültigen Nutzungslizenz durch Rechte geschützte Inhalte entschlüsselt. Weitere Informationen zum Anwendungsausschluss finden Sie weiter oben unter Ausschließen von Anwendungen.
Sperren von Zertifikaten und Lizenzen anhand des Hashwerts
In diesem Beispiel wird ein Zertifikat oder eine Lizenz mithilfe des Hashwerts gesperrt. Der Inhalt des „<VALUE>“-Tags ist der SHA-1-Hash der Unicode-Zeichen von „<BODY>“ bis „</BODY>“ (einschließlich der Tags) im Zertifikat oder in der Lizenz. Sie finden diesen Hashwert im Abschnitt „<SIGNATURE>“ des Zertifikats oder der Lizenz. (Sie können auch Anwendungen mithilfe dieses Mechanismus sperren, indem Sie den Hash des Anwendungsmanifests angeben.)
<REVOKE category="license" type="license-hash">
<DIGEST>
<ALGORITHM>SHA1</ALGORITHM>
<VALUE encoding="base64" size="160">
ABfB4mcEslVCMEZR9reACqXHCoQ=
</VALUE>
</DIGEST>
</REVOKE>
Sperren nach Anwendungsmanifest
Zum Sperren nach Anwendungsmanifest müssen Sie die Aussteller-ID, den öffentlichen Schlüssel des Ausstellers, die Lizenz-ID oder den Lizenz-Hash aus dem Anwendungsmanifest extrahieren. Anwendungsmanifeste sind jedoch Base-64-kodiert. Daher sind diese Informationen in einfacher Textform nicht verfügbar. Mit dem RMS-SDK kann ein Programm entwickelt werden, das die Methoden „DRMConstructCertificateChain“, „DRMDeconstructCertificateChain“ und „DRMDecode“ verwendet, um das Anwendungsmanifest zu dekodieren und die erforderlichen Informationen abzurufen.
Wenn Sie nicht möchten, dass eine bestimmte Anwendung durch Rechte geschützte Inhalte abrufen kann, sollten Sie mithilfe eines Anwendungsausschlusses verhindern, dass der RMS-Cluster dieser Anwendung Nutzungslizenzen erteilt. Ein Anwendungsausschluss kann jedoch nicht verhindern, dass ein Benutzer mit einer gültigen Nutzungslizenz RMS-geschützte Inhalte entschlüsselt. Weitere Informationen zum Anwendungsausschluss finden Sie weiter oben unter Ausschließen von Anwendungen.
Sperren von Zertifikaten und Lizenzen anhand des öffentlichen Schlüssels des Ausstellers
In diesem Beispiel werden alle Zertifikate und Lizenzen gesperrt, die vom Besitzer des angegebenen öffentlichen Schlüssels ausgestellt wurden. Der Inhalt des „<PUBLICKEY>“-Tags stammt aus dem Knoten „<BODY><ISSUER><PUBLICKEY>“ der zu sperrenden Zertifikate oder Lizenzen.
<REVOKE category="license" type="issuer-key">
<PUBLICKEY>
<ALGORITHM>RSA-1024</ALGORITHM>
<PARAMETER name="public exponent">
<VALUE encoding="integer32">65537</VALUE>
</PARAMETER>
<PARAMETER name="modulus">
<VALUE encoding="base64" size="1024">
AAn0kEAWU+1AFWtuUmBYL8Jza8tLhUv/BCmgcq/Pc08Au3DvXkH65s+0MEyZjM+71j3F1xaXUSst+wH2FjApkY1RxgL8VAKIuEvIy9hRrvY1YhJx/0Ite5fZeg2crUFrmoQgZzaJ50FvoakA2QMgZZgxoQmwiGE0y40cEJtIlE0=
</VALUE>
</PARAMETER>
</PUBLICKEY>
</REVOKE>
Sperren von Zertifikaten und Lizenzen anhand der Aussteller-ID
In diesem Beispiel wird eine Gruppe von Zertifikaten oder Lizenzen anhand der Aussteller-ID gesperrt. Der Inhalt des „<ID>“-Tags stammt aus dem Knoten „<BODY><ISSUER><OBJECT><ID>“ der zu sperrenden Zertifikate oder Lizenzen.
<REVOKE category="license" type="issuer-id">
<OBJECT type="MS-DRM-Server">
<ID type="MS-GUID">{2BE9E200-3040-41B9-8832-D4D0445EBBD6}</ID>
</OBJECT>
</REVOKE>
Hinweis
Beim Angeben des ID-Typs muss dafür gesorgt werden, dass sich zwischen GUID und Schlusstag kein Zeilenumbruch befindet. Wird versehentlich ein Zeilenumbruch eingefügt, kann der RMS-Client die Sperrliste nicht analysieren.
Sperren von Inhalten anhand der Inhalts-ID
In diesem Beispiel werden geschützte Inhalte anhand der Inhalts-ID gesperrt. Dies ist die Methode, die Sie zum Sperren von Inhalten bevorzugt verwenden sollten, da alle aus einer gegebenen Veröffentlichungslizenz erstellten Nutzungslizenzen über dieselbe Inhalts-ID verfügen. Der Wert des Knotens „<OBJECT>“ stammt aus dem Knoten „<BODY><WORK><OBJECT>“ einer Veröffentlichungslizenz oder einer Nutzungslizenz für die Inhalte.
<REVOKE category="content" type="content-id">
<OBJECT type="Microsoft Office Document">
<ID type="MS-GUID">{8702641D-3512-4AA4-A584-84C703A5B5C0}</ID>
</OBJECT>
</REVOKE>
Hinweis
Beim Angeben des ID-Typs muss dafür gesorgt werden, dass sich zwischen GUID und Schlusstag kein Zeilenumbruch befindet. Wird versehentlich ein Zeilenumbruch eingefügt, kann der RMS-Client die Sperrliste nicht analysieren.
Sperren von Prinzipalen anhand des Windows-Kontos
In diesem Beispiel wird ein Benutzer oder ein aktivierender Prinzipal anhand seines Windows-Kontos gesperrt. Der Inhalt des „<OBJECT>“-Elements hier stammt aus dem Knoten „<BODY><ISSUEDPRINCIPALS><PRINCIPAL>“ eines Rechtekontozertifikats oder einer Nutzungslizenz.
<REVOKE category="principal" type="principal-id">
<OBJECT type="Group-Identity">
<ID type="Windows">{Windows account SID}</ID>
<NAME>{E-mail address}</NAME>
</OBJECT>
</REVOKE>
Hinweis
Beim Angeben des ID-Typs muss dafür gesorgt werden, dass sich zwischen Sicherheitskennung (SID) des Windows-Kontos und Schlusstag kein Zeilenumbruch befindet. Wird versehentlich ein Zeilenumbruch eingefügt, kann der RMS-Client die Sperrliste nicht analysieren.
Sperren von Prinzipalen anhand der Windows Live-ID
In diesem Beispiel wird ein Benutzer oder ein aktivierender Prinzipal anhand seiner Windows Live-ID gesperrt. Der Inhalt des „<OBJECT>“-Elements hier stammt aus dem Knoten „<BODY><PRINCIPAL><OBJECT>“ eines Rechtekontozertifikats oder einer Nutzungslizenz.
<REVOKE category="principal" type="principal-id">
<OBJECT type="Group-Identity">
<ID type="Passport">{PUID}</ID>
<NAME>michael@contoso.com</NAME>
</OBJECT>
</REVOKE>
Hinweis
Beim Angeben des ID-Typs muss dafür gesorgt werden, dass sich zwischen PUID (Principal Unique Identifier) und Schlusstag kein Zeilenumbruch befindet. Wird versehentlich ein Zeilenumbruch eingefügt, kann der RMS-Client die Sperrliste nicht analysieren.
Einfügen einer Signatur in eine Sperrliste
Wenn Sie eine Sperrliste erstellt haben, müssen Sie in diese eine Signatur einfügen, wie in diesem Thema beschrieben. Dann können Sie die Sperrliste über die URL, die Sie in der zugehörigen Vorlage für Benutzerrechterichtlinien angegeben haben, den Benutzern zur Verfügung stellen.
Zum Einfügen einer Signatur müssen Sie zunächst mit dem „Sn.exe“ (Strong Name, Starker Name) ein Schlüsselpaar und eine Schlüsseldatei für die Sperrliste generieren. „Sn.exe“ ist Teil des Microsoft .NET Framework SDK 1.1, das auf der Microsoft-Website https://go.microsoft.com/fwlink/?LinkId=104796 (möglicherweise in englischer Sprache) zum Herunterladen bereitsteht.
Ihre Sperrlistendatei muss als Unicode-Datei gespeichert worden sein, um sie mit „RLsigner.exe“ signieren zu können.
So verwenden Sie „Sn.exe“, um ein neues Schlüsselpaar zu erzeugen und es in eine Datei zu schreiben
Erstellen Sie den privaten Schlüssel. Geben Sie dazu an einer Eingabeaufforderung den folgenden Befehl ein, und drücken Sie dann die EINGABETASTE:
sn -k Privater-Schlüssel-Datei .snk
wobei Privater-Schlüssel-Datei der Name der Schlüsseldatei ist.
Extrahieren Sie mithilfe von „Sn.exe“ aus der in Schritt 1 erstellten Schlüsselpaardatei den öffentlichen Schlüssel, und exportieren Sie ihn in eine separate Datei. Geben Sie den folgenden Befehl ein, und drücken Sie dann die EINGABETASTE:
sn -p Privater-Schlüssel-Datei Öffentlicher-Schlüssel-Datei
wobei Privater-Schlüssel-Datei der Name der in Schritt 1 erstellten Datei mit dem privaten Schlüssel und Öffentlicher-Schlüssel-Datei der Name der Datei ist, in der der exportierte öffentliche Schlüssel gespeichert wird.
Ändern Sie die Erweiterung der (in Schritt 1) erstellten Datei mit dem privaten Schlüssel von SNK in DAT, damit die Datei für „RLsigner.exe“ verwendbar wird.
Fügen Sie mit „RLsigner.exe“ eine Signatur in eine Sperrlistendatei ein. Dieses Tool ist in RMS enthalten. Standardmäßig befindet es sich im Verzeichnis „%systemdrive%\Programme\Windows Rights Management Services\Tools“.
Hinweis
„RLsigner.exe“ unterstützt keine Dateinamen mit Leerzeichen.
Verwenden von „RLsigner.exe“
Beim Ausführen von „RLsigner.exe“ erstellt das Tool zunächst unter Verwendung des privaten Schlüssels aus der Schlüsseldatei eine Signatur. Dann erstellt es eine Ausgabedatei, die auf der von Ihnen bereitgestellten Sperrlistendatei basiert.
Wichtig
Dazu muss die Sperrlistendatei zuvor als Unicode-Datei gespeichert worden sein.
Wenn Sie die Sperrliste mit „RLsigner.exe“ signieren möchten, geben Sie an einer Eingabeaufforderung den folgenden Befehl ein:
rlsigner.exe Eingabedatei {-f Schlüsseldatei | -h Containername CSP} Ausgabedatei
Verwenden Sie zur Vervollständigung der Eingabeparameter des Befehls die folgenden Informationen:
Parameter | Beschreibung |
---|---|
Eingabedatei | Name der von Ihnen vorbereiteten XrML-konformen Sperrlistendatei |
Schlüsseldatei | Name der Datei, die den von Ihnen generierten öffentlichen und privaten Schlüssel enthält |
Containername | Name des Schlüsselcontainers |
Ausgabedatei | Name der signierten Sperrlistendatei, die mit dem Tool erstellt wird |
**rlsigner.exe rl.xml -f schluessel.dat ausgabe.xml**
Beispiel für eine Befehlszeilensyntax bei Verwendung eines Hardwaresicherheitsmoduls:
rlsigner.exe rl.xml -h Container CSP ausgabe.xml
„RLsigner.exe“ stellt in seinem Rückgabecode grundlegende Informationen zu Fehlern und Erfolgen bereit. In der folgenden Tabelle werden die möglichen Rückgabecodes beschrieben.
Rückgabecode | Beschreibung |
---|---|
0 | Erfolg |
-1 | Lesen der Quelldatei nicht möglich |
-2 | Lesen der Schlüsseldatei nicht möglich |
-3 | Ungültige Schlüsseldatei |
-4 | Ungültige Quelldatei |
-5 | Schreiben der Ausgabedatei nicht möglich |
-6 | Unbekannter Fehler |
Dim WshShell, oExec
Set WshShell = CreateObject( "WScript.Shell" ) Set oExec = WshShell.Exec("rlsigner.exe input_file key_file output_file") Do While oExec.Status = 0 WScript.Sleep 100 Loop
if WshShell.ExitCode <> 0 Then WshShell.LogEvent EVT_ERROR, "RLsigner failed with error """ + WshShell.ExitCode + """" else WshShell.LogEvent EVT_SUCCESS, "RLsigner completed successfully" end if