Die Root-CA, eine Intermediate-CA und das Server-Zertifikat sind fertig, aber liegen bisher noch ungenutzt auf dem Server rum. Diesmal soll es endlich darum gehen, das Zertifikat ganz konkret auf einem Webserver zu installieren, damit dieser HTTPS spricht und der Netzverkehr mit dem Browser verschlüsselt und geschützt wird.
Und als langjährige Domino-Dienstleister beginne ich natürlich mit dem Domino-Web-Server, in diesem Teil erst einmal unter Linux, im zweiten Teil dieser Folge dann unter Windows.
Vorbereitungen
Zunächst müssen wir das signierte Server-Zertifikat, alle Zertifikate "die Kette hoch" und den privaten Schlüssel des Servers auf den Domino-Server kopieren.
Um uns das einfacher zu machen, hatten wir zum Ende der letzten Folge alles, was wir brauchen, in eine Datei zusammengefasst, sodass wir nur diese eine Datei - im Beispiel domino-006-key-cert-chain-bundle.pem
- in das Domino-Datenverzeichnis /local/notesdata
kopieren müssen.
Bei Domino V11 wird das benötigte Werkzeug, das KYRTool
mitgeliefert und es gibt schon den notwendigen Softlink /opt/hcl/domino/bin/kyrtool
. Bei Domino V10 muss man diesen erst anlegen (als root
):
cd /opt/ibm/domino/bin/
ln -s /opt/ibm/domino/bin/tools/startup kyrtool
ls -l kyrtool
lrwxrwxrwx. 1 root root 33 7. Jul 12:00 kyrtool -> /opt/ibm/domino/bin/tools/startup
Unter Domino 9.x muss man das KYRTool herunterladen und in das Domino-Programmverzeichnis ablegen. Das verlinkte ZIP-Archiv enthält Versionen für Windows und Linux, jeweils für 32 und 64 Bit.
Das KYRTool
sollte als Benutzer notes
ausgeführt werden (nicht als root
), deshalb:
su - notes
cd /local/notesdata/
Mit dem KYRTool
einmal die kombinierte Schlüssel-Zertifikate-Datei prüfen (/opt/hcl
oder /opt/ibm
je nach Installation):
/opt/hcl/domino/bin/kyrtool verify domino-006-key-cert-chain-bundle.pem
KyrTool v1.2.0
Successfully read 4096 bit RSA private key
INFO: Successfully read 3 certificates
INFO: Private key matches leaf certificate
INFO: IssuerName of cert 0 matches the SubjectName of cert 1
INFO: IssuerName of cert 1 matches the SubjectName of cert 2
INFO: Final certificate in chain is self-signed
Keyring-Datei erstellen und alles importieren
Der Domino-Server braucht alles zusammen in einem eigenen Schlüsselbund, einer Keyring-Datei, die wir zunächst neu erstellen:
/opt/hcl/domino/bin/kyrtool create -k domino-006.kyr -p ********
Keyfile domino-006.kyr created successfully
Aber natürlich mit einem richtigen Passwort, dass wir uns für später (also in einem oder zwei Jahren!) notieren und sicher ablegen. (Shameless Plug: z. B. im assono Passwort-Safe Pro)
Wir können jetzt den privaten Schlüssel des Servers zusammen mit der kompletten Zertifikatskette in einem Rutsch importieren:
/opt/hcl/domino/bin/kyrtool import all -i domino-006-key-cert-chain-bundle.pem -k domino-006.kyr
Using keyring path 'domino-006.kyr'
Successfully read 4096 bit RSA private key
SECIssUpdateKeyringPrivateKey succeeded
SECIssUpdateKeyringLeafCert succeeded
Zur Kontrolle den privaten Schlüssel aus dem Keyring ausgeben…
/opt/hcl/domino/bin/kyrtool show keys -k domino-006.kyr
Using keyring path 'domino-006.kyr'
Key length: 4096 bits
Key type: RSA
-----BEGIN PUBLIC KEY-----
[…]
-----END PUBLIC KEY-----
Key length: 4096 bits
Key type: RSA
-----BEGIN RSA PRIVATE KEY-----
[…]
-----END RSA PRIVATE KEY-----
… und die Zertifikate:
/opt/hcl/domino/bin/kyrtool show certs -k domino-006.kyr
Using keyring path 'domino-006.kyr'
Certificate #0
Subject: EMAIL=tbahn@assono.de/CN=domino-006.assono.local/O=assono GmbH/L=Schnwentinental/ST=Schleswig-Holstein/C=DE
Issuer: EMAIL=tbahn@assono.de/CN=servers.assono/O=assono GmbH/ST=Schleswig-Holstein/C=DE
Not Before: 07.07.2020 11:45:45
Not After: 07.07.2022 11:45:45
Public Key Alg: rsaEncryption
Fingerprint: 5pOqnN4zk0Q2bqqx1JdXg+zOY7R5MyABIfDr3Vuq6rs=
Key length: 4096 bits
Signature Alg: sha256WithRSAEncryption
-----BEGIN CERTIFICATE-----
[…]
-----END CERTIFICATE-----
Certificate #1
Subject: EMAIL=tbahn@assono.de/CN=servers.assono/O=assono GmbH/ST=Schleswig-Holstein/C=DE
Issuer: EMAIL=tbahn@assono.de/CN=assono/O=assono GmbH/L=Schnwentinental/ST=Schleswig-Holstein/C=DE
Not Before: 07.07.2020 11:40:26
Not After: 05.07.2030 11:40:26
Public Key Alg: rsaEncryption
Fingerprint: o7VvFLArzvmgwdqPHVEDtof/w1wMT4PI2SxeY3L7wsg=
Key length: 4096 bits
Signature Alg: sha256WithRSAEncryption
-----BEGIN CERTIFICATE-----
[…]
-----END CERTIFICATE-----
Certificate #2
Subject: EMAIL=tbahn@assono.de/CN=assono/O=assono GmbH/L=Schnwentinental/ST=Schleswig-Holstein/C=DE
Issuer: EMAIL=tbahn@assono.de/CN=assono/O=assono GmbH/L=Schnwentinental/ST=Schleswig-Holstein/C=DE
Not Before: 07.07.2020 11:35:49
Not After: 02.07.2040 11:35:49
Public Key Alg: rsaEncryption
Fingerprint: /sdplSM5mrtb3BmC4p6MfW9RMvOeecMsDJhEY4h+NYU=
Key length: 4096 bits
Signature Alg: sha256WithRSAEncryption
-----BEGIN CERTIFICATE-----
[…]
-----END CERTIFICATE-----
Weil in der pem-Datei auch der private Schlüssel des Servers drin ist, sie zur Sicherheit sofort wieder löschen:
rm -f domino-006-key-cert-chain-bundle.pem
Es sollte jetzt den Keyring (*.kyr) und die Stash-Datei mit dem verschlüsselten Passwort (*.sth) geben:
ls -l domino-006.*
-rw-rw-r--. 1 notes notes 38636 7. Jul 12:07 domino-006.kyr
-rw-------. 1 notes notes 129 7. Jul 12:07 domino-006.sth
Ein paar Worte zur Stash-Datei
Der Domino-Server muss an seinen privaten Schlüssel selbst ran kommen können. Aus Sicherheitsgründen wäre es aber eine schlechte Idee, ihn einfach so ungeschützt als Datei auf dem Server abzulegen - deswegen haben wir beim Erstellen der Keyring-Datei ein Passwort angegeben. Dieses Passwort wird mit dem öffentlichen Schlüssel aus der ID-Datei des Servers verschlüsselt und in Form der Stash-Datei neben dem Keyring, also der *.kyr-Datei abgelegt. So kann nur der Server mit dem privaten Schlüssel aus seiner ID-Datei die Stash-Datei wieder entschlüsseln und seinen privaten Schlüssel verwenden.
Daniel Nashed hat mich darauf aufmerksam gemacht, dass die Stash-Datei nicht verschlüsselt (encrypted), sondern nur encoded gespeichert wird - aus Sicherheitssicht darf man sie also wie Klartext behandeln. Immerhin werden die Zugriffsberechtigungen unter Linux so schmal wie möglich gesetzt.
Domino-Web-Server konfigurieren
Es fehlen jetzt noch zwei kleine Schritte: Wir müssen dem HTTP-Task des Domino-Servers noch sagen, wo der Keyring liegt, und das HTTPS-Protokoll aktivieren.
Ich gehe im heutigen Teil davon aus, dass für den Server Internet-Site-Dokumente aktiviert sind: Im Server-Dokument, Reiter Allgemein, Abschnitt Allgemein ist im Feld "Internet-Konfigurationen aus Server-\Internet-Site-Dokumenten laden:" "Aktiviert" ausgewählt.
Dann im Domino-Verzeichnis das entsprechende Internet-Site-Dokument und auf Ports – Internet Ports/Sicherheit gehen:
Falls noch nicht geschehen, HTTPS aktivieren, und in jedem Fall mindestens den HTTP-Task durchstarten.
Zum Test kann man eine Seite des Webservers (z. B. https:// fqdn.des.servers/homepage.nsf) schon einmal im Browser seiner Wahl öffnen, aber natürlich kennt der Browser die neue Root-CA noch nicht und daher ist das Server-Zertifikat für ihn noch nicht vertrauenswürdig.
Im zweiten Teil dieser Folge machen wir alles noch einmal genauso, nur unter Windows.