Under Construction
Digitale Signatur für ein eigenes Fileset (DSB)
Sollen eigene Filesets nach Aktivierung von Trusted Installation installiert werden können, benötigt man folgendes:
- Einen Private-Key zum Erzeugen der digitalen Signatur eines Filesets.
- Den zum Private-Key zugehörigen Public-Key.
- Einen DSB am Ende der Fileset-Datei.
Der Public-Key muss auf jedem AIX System unter /etc/security/certificates hinterlegt werden, auf dem das Fileset installiert werden soll. Einträge in den ODMs dsc_key und dsc_keystore sind für das Verfahren mit DSB nicht nötig und werden auch nicht verwendet. Die digitalen Signaturen werden in Form eines DSB direkt am Ende der Fileset-Dateien hinterlegt. Damit ist auch kein Eintrag mehr in der ODM dsc_inventory erforderlich.
Wir empfehlen ausdrücklich die Verwendung des Verfahrens mit DSB. Das Verfahren mit dem DSC sollte nicht mehr verwendet werden.
Wir zeigen nachfolgend alle notwendigen Schritte an einem konkreten Beispiel (Fileset pwrcmps.test.dsb).
Das Erzeugen von Private-Key und Public-Key wurde schon früher gezeigt (Optional: Erzeugen eines digitalen Zertifikats für Trusted Installation) und wird hier nicht wiederholt. Wir verwenden die Keys von früher:
- private.pem
- public.pem
Wir haben ein neues Verzeichnis mit Namen /tmp/unsigned erzeugt und dort unser Beispiel-Fileset abgelegt:
$ ls -lA /tmp/unsigned
total 16
-rw-r--r-- 1 root system 234 Aug 16 14:05 .toc
-rw-r--r-- 1 root system 2560 Aug 16 14:04 pwrcmps.test.dsb.1.0.0.0.bff
$
Eine kurze Überprüfung mit dsblkchk zeigt, das das Fileset keinen DSB enthält:
# dsblkchk -d /tmp /tmp/unsigned/pwrcmps.test.dsb.1.0.0.0.bff
# echo $?
2
#
Hinweis: Der Exit-Status 2 zeigt das Fehlen eines DSB.
Als erstes erzeugen wir die digitale Signatur für das Fileset mit Hilfe des Private-Keys private.pem:
$ openssl dgst -sha256 -sign private.pem -out sign.sha256 /tmp/unsigned/pwrcmps.test.dsb.1.0.0.0.bff
Enter pass phrase for private.pem: XXXXXXXX
$
Hinweis: Den Private-Key private.pem hatten wir mit Passphrase erzeugt, daher muss dieser beim Erzeugen der Signatur angegeben werden.
Der für die Überprüfung zu verwendende Public-Key muss unter /etc/security/certificates stehen! Daher kopieren wir unseren Public-Key public.pem unter dem Namen mypublic.pem in dieses Verzeichnis:
# cp public.pem /etc/security/certificates/mypublic.pem
#
Der Public-Key muss auf jedem System, auf dem das obige Fileset installiert werden soll, einmalig hinterlegt werden.
Im nächsten Schritt muss nun ein DSB mit der erzeugten Signatur (sign.sha256) und dem zur Überprüfung zu verwendenden Public-Key erzeugt werden. Dafür stellt IBM das Kommando dsblkgen bereit. Das Kommando besitzt eine Manual Page und ist als Benutzer-Kommando gedacht. Das Kommando erwartet als Argumente den Tpy des Keys, die ermittelte digitale Signatur, den Pfad zum Public-Key selbst und einen Dateinamen unter dem der generierte DSB abgespeichert werden soll:
# dsblkgen -f LOC sign.sha256 /etc/security/certificates/mypublic.pem dsb
#
Hinweis: Der Typ LOC gibt an, das der angegebene Pfad zum Public-Key im zu generierenden DSB (Datei dsb) hinterlegt werden soll.
Der generierte DSB ist ca 1 KB groß und besteht aus binären Informationen. Wir werfen mit Hilfe von od einen kurzen Blick in diese binäre Datei:
$ od -xa dsb
0000000 494e 5554 5545 5945 0000 0500 0000 0000
I N U T U E Y E nul nul enq nul nul nul nul nul
0000020 0000 0100 0000 0200 0000 0300 0000 0100
nul nul soh nul nul nul stx nul nul nul etx nul nul nul soh nul
0000040 0000 0002 0000 0000 0000 0000 0000 0000
nul nul nul stx nul nul nul nul nul nul nul nul nul nul nul nul
0000060 0000 0000 0000 0000 0000 0000 0000 0000
nul nul nul nul nul nul nul nul nul nul nul nul nul nul nul nul
*
0000400 2a57 338e 018a 5986 6919 15e5 5ee6 b2c4
* W 3 so soh lf Y ack i em nak e ^ f 2 D
0000420 6abf 2fe4 1a84 bbe0 eea3 02ab 2e15 acd3
j ? / d sub eot ; ` n # stx + . nak , S
0000440 85be 9e45 948d a706 8baf 6ca6 7104 8aed
enq > rs E dc4 cr ' ack vt / l & q eot lf m
0000460 8e66 f320 4bc5 0204 a915 1277 61da 12a1
so f s sp K E stx eot ) nak dc2 w a Z dc2 !
0000500 d37c bae2 11bd d225 248d a800 6567 417a
S | : b dc1 = R % $ cr ( nul e g A z
0000520 c909 b9c0 3465 c19e bada 13bd 09da dc00
I ht 9 @ 4 e A rs : Z dc3 = ht Z \ nul
0000540 2563 c1bf dd68 1ed9 e5a3 45f6 379c f2a2
% c A ? ] h rs Y e # E v 7 fs r "
0000560 7ea9 115a ba54 8e7a ebed 8326 17ef c600
~ ) dc1 Z : T so z k m etx & etb o F nul
0000600 f447 b3aa 3620 dc38 0e8e f796 a381 1f88
t G 3 * 6 sp \ 8 so so w syn # soh us bs
0000620 655d 35f0 446e ffe8 4058 0eac 2586 0e03
e ] 5 p D n del h @ X so , % ack so etx
0000640 9141 779f d30c 9287 4a97 29c8 3fb7 458f
dc1 A w us S ff dc2 bel J etb ) H ? 7 E si
0000660 400f 98fb 2124 908b e9f4 37b8 a61f 3a2e
@ si can { ! $ dle vt i t 7 8 & us : .
0000700 6c36 d2cc 9fa0 c171 f624 9f1d f0a9 a668
l 6 R L us sp A q v $ us gs p ) & h
0000720 7804 9f31 a20b 26da 7a7b d2f7 caa9 148a
x eot us 1 " vt & Z z { R w J ) dc4 lf
0000740 0258 a011 71e3 7c7e 46ff 382b bdf0 5d3a
stx X sp dc1 q c | ~ F del 8 + = p ] :
0000760 9da8 17d2 666c 976a ce41 75b7 13c0 d80b
gs ( etb R f l etb j N A u 7 dc3 @ X vt
0001000 0000 0000 0000 0000 0000 0000 0000 0000
nul nul nul nul nul nul nul nul nul nul nul nul nul nul nul nul
*
0001400 2f65 7463 2f73 6563 7572 6974 792f 6365
/ e t c / s e c u r i t y / c e
0001420 7274 6966 6963 6174 6573 2f6d 7970 7562
r t i f i c a t e s / m y p u b
0001440 6c69 632e 7065 6d00 0000 0000 0000 0000
l i c . p e m nul nul nul nul nul nul nul nul nul
0001460 0000 0000 0000 0000 0000 0000 0000 0000
nul nul nul nul nul nul nul nul nul nul nul nul nul nul nul nul
*
0002360 0000 0000 0000 0500 494e 5554 5545 5945
nul nul nul nul nul nul enq nul I N U T U E Y E
0002400
$
Am Anfang und Ende des DSB sieht man den DSB Eye Catcher („INUTUEYE“). Im vorderen Teil des DSB befindet sich die digitale Signatur aus der Datei sign.sha256, im hinteren Teil erkennt man den Pfad zum Public-Key (/etc/security/certificates/mypublic.pem).
Im letzten Schritt muss der generierte DSB an die Fileset-Datei angefügt werden. Im einfachsten Fall kann dies mit einem „cat“ Kommando und Ausgabe-Umleitung mit „>>“ erfolgen:
# ls -l pwrcmps.test.dsb.1.0.0.0.bff
-rw-r--r-- 1 root system 2560 Aug 16 14:26 pwrcmps.test.dsb.1.0.0.0.bff
# cat dsb >>pwrcmps.test.dsb.1.0.0.0.bff
# ls -l pwrcmps.test.dsb.1.0.0.0.bff
-rw-r--r-- 1 root. system 3840 Aug 16 14:26 pwrcmps.test.dsb.1.0.0.0.bff
#
Wir haben aber ein eigenes Unterverzeichnis /tmp/signed für die signierte Version des Filesets angelegt und verwenden die folgende Version von „cat“:
# cat /tmp/unsigned/pwrcmps.test.dsb.1.0.0.0.bff dsb >/tmp/signed/pwrcmps.test.dsb.1.0.0.0.bff
#
Vergleicht man die beiden Fileset-Versionen, sieht man das die Version mit DSB etwas größer ist:
$ ls -l /tmp/*signed/pwrcmps.test.dsb.1.0.0.0.bff
-rw-r--r-- 1 root system 3840 Aug 16 14:28 /tmp/signed/pwrcmps.test.dsb.1.0.0.0.bff
-rw-r--r-- 1 root system 2560 Aug 16 14:04 /tmp/unsigned/pwrcmps.test.dsb.1.0.0.0.bff
$
Bevor wir einen Versuch starten das eigene Fileset zu installieren, überprüfen wir die Signatur kurz manuell:
# dsblkchk -d /tmp /tmp/signed/pwrcmps.test.dsb.1.0.0.0.bff
# echo $?
0
#
Die Überprüfung war erfolgreich (Exit-Status 0). Es wurde ein DSB gefunden und die enthaltene digitale Signatur konnte verifiziert werden.
Abschließend installieren wir unser Fileset:
# inutoc /tmp/signed
# chsignpolicy -p
#signpolicy
high
# installp -ad /tmp/signed pwrcmps.test.dsb
...
Verifying known package signatures of install source: /tmp/signed
Please wait…
+—————————————————————————–+
Installing Software…
+—————————————————————————–+
installp: APPLYING software for:
pwrcmps.test.dsb 1.0.0.0
Finished processing all filesets. (Total time: 0 secs).
+—————————————————————————–+
Summaries:
+—————————————————————————–+
Installation Summary
——————–
Name Level Part Event Result
——————————————————————————-
pwrcmps.test.dsb 1.0.0.0 USR APPLY SUCCESS
#
Das Fileset konnte unter Trusted Installation erfolgreich installiert werden. Weitere eigene Filesets können auf die gleiche Weise mit einem DSB versehen werden.