In unserem Podcast diskutiert Thomas Bahn über Nutzen, Anwendungen und Erfahrungen aus den Bereichen Chatbots und Künstliche Intelligenz. Mehr erfahren

Zweistufige CA-Infrastruktur: Server-Zertifikat auf einen Domino-Web-Server installieren - Teil 1: Linux

von Thomas,
assono GmbH, Standort Kiel,

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:

Den Namen des Schlüsseldatei im Website-Dokument eintragen
SSL-Portstatus im Server-Dokument aktivieren

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.

Nächste Artikel in dieser Reihe:

Quellen:

Fachbeitrag HCL Domino Sicherheit Administration Für Entwickler

Sie haben Fragen zu diesem Artikel? Kontaktieren Sie uns gerne: blog@assono.de

Sie haben Interesse an diesem Thema?

Gerne bieten wir Ihnen eine individuelle Beratung oder einen Workshop an.

Kontaktieren Sie uns

Weitere interessante Artikel

Sie haben Fragen?

Wenn Sie mehr über unsere Angebote erfahren möchten, können Sie uns jederzeit kontaktieren. Gerne erstellen wir eine individuelle Demo für Sie.

assono GmbH

Standort Kiel (Zentrale)
assono GmbH
Lise-Meitner-Straße 1–7
24223 Schwentinental

Standort Hamburg
assono GmbH
Bornkampsweg 58
22761 Hamburg

Telefonnummern:
Zentrale: +49 4307 900 416
Vertrieb: +49 4307 900 402

E-Mail-Adressen:
kontakt@assono.de
bewerbung@assono.de