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

Zweitstufige CA-Infrastruktur: die Root-CA erstellen

von Thomas,
assono GmbH, Standort Kiel,

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.

Nächste Artikel in dieser Reihe:

Quellen:

Fachbeitrag 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