Um alles möglichst detailliert und nachvollziehbar zu beschreiben, möchte ich von möglichst geringen, genau definierten Voraussetzungen ausgehen. In diesem Fall heißt das:
Ich habe eine (virtuelle) Maschine unter CentOS 8, die ich als "Server mit GUI" installiert hatte.
Außerdem habe ich OpenSSL in der aktuellsten Versionen der Distribution installiert:
yum -y install openssl
Als Basis für die Artikelserie verwende ich das Verzeichnis /local/assono-ca
:
mkdir /local/assono-ca
cd /local/assono-ca
Zertifikate erhalten eine eindeutige Nummer (die wirklich immer eindeutig sein muss). Die Hexadezimalzahl muss mindestens zwei Stellen haben. In der folgenden Datei wird später die zuletzt vergebene Seriennummer gespeichert werden:
echo 01 > serial
Und schließlich werden in der folgenden Datei die von der CA ausgestellten Zertifikate aufgelistet werden. Dazu können wir mit einer leeren Datei beginnen:
touch index.txt
Verschlüsselte Passwort-Datei erstellen
Aus Sicherheitsgründen ist es äußerst sinnvoll, die CA mit einem hochkomplexen und sehr langen Passwort zu schützen. Um das Passwort aber nicht immer wieder bei jeder Nutzung der CA eingeben zu müssen, kann man es in eine Schlüsseldatei schreiben, die wiederum sicher verschlüsselt gespeichert wird.
Ein langes, komplexes Passwort in die Datei passwort.txt
schreiben und speichern:
cd /local/assono-ca
nano passwort.txt
Die Datei verschlüsseln wir jetzt mit AES256. Das eingegebene Passwort darf jetzt kürzer und einfacher sein, weil es nur zusammen mit der Datei "funktioniert". Wir haben jetzt eine 2-Faktor-Authentifizierung: Die Datei ist der erste Faktor, das Passwort, mit dem sie verschlüsselt ist, ein zweiter.
openssl enc -aes256 -pbkdf2 -salt -in passwort.txt -out passwort.enc
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
Wenn man sich den Inhalt ansieht, sieht man (hoffentlich) nicht viel:
cat passwort.enc
Oder zur Kontrolle kann man das ursprügnliche Passwort noch einmal entschlüsselt ausgeben:
openssl enc -aes256 -pbkdf2 -salt -d -in passwort.enc
enter aes-256-cbc decryption password:
***********************************
Die unverschlüsselte Datei sollte man jetzt löschen:
rm -f passwort.txt
Zur Steigerung der Sicherheit die Zugriffsrechte so weit reduzieren, dass nur noch der Benutzer root
darauf zugreifen kann:
chmod -R go-rwx *
Unsere beiden Verzeichnisse sollten jetzt so aussehen:
ls -l
insgesamt 4
-rw------- 1 root root 64 6. Jul 20:46 passwort.enc
drwx------ 2 root root 37 7. Jul 11:28 root
ls -l root/
insgesamt 4
-rw------- 1 root root 0 7. Jul 11:28 index.txt
-rw------- 1 root root 3 7. Jul 11:28 serial
Damit sind unsere Vorbereitungen abgeschlossen und wir können als Nächstes unsere Root-CA erstellen.