Nachdem wir zuerst die Vorbereitungen durchgeführt haben, geht es jetzt an die Basis für alle weiteren Schritte: die Erstellung der Root-CA - oder wie es Microsoft so treffend nennt: die vertrauenswürdige Stammzertifizierungsstelle.
Pfade, Dateinamen und natürlich alle Inhalte können und sollten natürlich angepasst werden. Dann aber darauf achten, dass dies einheitlich geschieht. Etwas mehr Aufwand würde eine Änderung der Verzeichnisstrukturen mit sich bringen. Wer das wagen will: Bitte! Aber danach nicht sagen, ich hätte nicht gewarnt...
Konfigurationsdatei erstellen
Als solide Basis kopieren wir die Standard-Konfigurationsdatei und öffnen sie gleich zur weiteren Bearbeitung:
cd /local/assono-ca/root/
cp /etc/pki/tls/openssl.cnf ./
nano openssl.cnf
Im Abschnitt [ CA_default ] die folgenden Zeilen ändern von
dir = /etc/pki/CA # Where everything is kept
certs = $dir/certs # Where the issued certs are kept
new_certs_dir = $dir/newcerts # default place for new certs.
certificate = $dir/cacert.pem # The CA certificate
private_key = $dir/private/cakey.pem # The private key
in
dir = /local/assono-ca/root # Where everything is kept
certs = $dir # Where the issued certs are kept
new_certs_dir = $dir # default place for new certs.
certificate = $dir/assono-cert.pem # The CA certificate
private_key = $dir/assono-key.pem # The private key
Im Abschnitt [ req_distinguished_name ] ändern von
countryName_default = XX
localityName_default = Default City
0.organizationName_default = Default Company Ltd
in
countryName_default = DE
localityName_default = Schwentinental
0.organizationName_default = assono GmbH
und eine neue Zeile (hinter der auskommentierten) hinzufügen
stateOrProvinceName_default = Schleswig-Holstein
Und ein ganz neuer Abschnitt hinter [ v3_ca ], den wir dann für die Erstellung der Intermediate-CAs nutzen werden:
[ v3_intermediate_ca ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true, pathlen:0
keyUsage = critical, digitalSignature, cRLSign, keyCertSign
Privaten Schlüssel der Root-CA erstellen
Eine 4096 Bit langen und mit 3DES verschlüsselten privaten Schlüssel für die Root-CA erstellen, der später insbesondere für das elektronische Signieren der ausgestellten Zertifikate benutzt wird:
openssl genrsa -des3 -passout file:../passwort.enc -out assono-key.pem 4096
Generating RSA private key, 4096 bit long modulus (2 primes)
....................................................++++
...........................++++
e is 65537 (0x010001)
Und gleich wieder validieren:
openssl rsa -noout -text -in assono-key.pem -passin file:../passwort.enc
RSA Private-Key: (4096 bit, 2 primes)
modulus:
[…]
publicExponent: 65537 (0x10001)
privateExponent:
[…]
prime1:
[…]
prime2:
[…]
exponent1:
[…]
Root-CA-Zertifikat erstellen
Und jetzt erstellen wir das Root-CA-Zertifikat selbst. Damit es nicht morgen gleich wieder abläuft, stellen wir eine Gültigkeit vor 7300 Tagen, also rund 20 Jahren ein:
openssl req -new -x509 -days 7300 -passin file:../passwort.enc -config openssl.cnf -extensions v3_ca -key assono-key.pem -out assono-cert.pem
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [DE]:
State or Province Name (full name) [Schleswig-Holstein]:
Locality Name (eg, city) [Schnwentinental]:
Organization Name (eg, company) [assono GmbH]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:assono
Email Address []:tbahn@assono.de
Und es ist klar, dass wir uns auch das Zertifikat noch einmal ansehen:
openssl x509 -noout -text -in assono-cert.pem
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
6c:90:58:67:3b:a9:43:8d:10:15:1a:2c:bd:42:b2:24:95:5a:59:24
Signature Algorithm: sha256WithRSAEncryption
Issuer: C = DE, ST = Schleswig-Holstein, L = Schnwentinental, O = assono GmbH, CN = assono, emailAddress = tbahn@assono.de
Validity
Not Before: Jul 7 09:35:49 2020 GMT
Not After : Jul 2 09:35:49 2040 GMT
Subject: C = DE, ST = Schleswig-Holstein, L = Schnwentinental, O = assono GmbH, CN = assono, emailAddress = tbahn@assono.de
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: (4096 bit)
Modulus:
[…]
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
41:AA:79:F1:2E:AF:42:10:11:BB:33:8B:32:DA:A8:B5:49:64:F6:43
X509v3 Authority Key Identifier:
keyid:41:AA:79:F1:2E:AF:42:10:11:BB:33:8B:32:DA:A8:B5:49:64:F6:43
X509v3 Basic Constraints: critical
CA:TRUE
Signature Algorithm: sha256WithRSAEncryption
[…]
Jetzt steht die Basis - die Root-CA liegt bereit - und wir können im nächsten Schritt eine Intermediate-CA erstellen.