Rechnernetze / Kommunikationssysteme

Praktikumsversuch Netzsicherheit/Zertifikate

Ziel

Sie kennen den Einsatz, Aufbau und die Bedeutung der Felder von X.509-Zertifikaten. Sie können diese Zertifikate validieren und erstellen. Weiterhin können Sie ein Root-Zertifikat erstellen und im Browser installieren.

1. Grundlagen

X.509v3 ist der am häufigsten verwendete Standard für digitale Zertifikate (RFC 5280) und BSI Technische Richtlinie TR-02103. Ausgestellt werden die Zertifikate von Zertifizierungsstellen (Certification Authorities, CAs). Diese dienen als Vertrauensanker.

Verwendet werden können diese Zertifikate z.B. um einen Server per TLS-Server-Zertifikat gegenüber einem Client zu authentisieren. Sogenannte S/MIME-Zertifikate diesen der Signatur und Verschlüsselung von E-Mail-Nachrichten.

Ein ausgestelltes Zertifikat kann im Gültigkeitszeitraum per von der CA ausgestellten Sperrliste (Certificate Revocation List, CRL) für ungültig erklärt werden.

Validierungsverfahren:

Certificate Transparency (CT) ist ein Verfahren, um Zertifikate revisionssicher zu speichern, um Missbrauch zu verhindern.

1.1. Felder und Aufbau

Wichtige Felder:

Die Zertifikate sind hierarchisch in einer Baumstruktur gemäß ASN.1 aufgebaut.

Zertifikatsformate:

PEM (Privacy Enhanced Mail)
Textbasiertes Format (Base64)
DER (Distinguished Encoding Rules)
Binärformat mit DER ASN.1-Codierung
CER/CRT
DER- oder Base64-kodiertes Zertifikat
PKCS #7 Zertifikate
Java keytool
PKCS #8 Key
private key store
PKCS#12 (.p12, .pfx)
kann öffentliche Zertifikate und private Schlüssel (Kennwort-geschützt) enthalten.
CSR (Certificate Signing Request)
Eine Base64-kodierte Zertifizierungsanfrage, die an eine Zertifizierungsstelle (CA) geschickt wird, um ein Zertifikat zu erhalten.

Konvertierungen zwischen PEM und DER

openssl x509 -inform PEM -in domain.pem -outform DER -out domain.der
openssl x509 -inform DER -in domain.der -outform PEM -out domain.pem

1.2. Verständnisfragen

2. Aufgaben

2.1. Serverzertifikate

Hilfe

# Get Certificate (Chain)
openssl s_client -showcerts -connect www.example.com:443 </dev/null

# View Certificate
openssl x509 -text -noout -in cert.crt 

2.2. TLS-Aushandlung

Untersuchung der ausgehandelten TLS-Verfahren:

2.3. Vertrauensanker im Browser / Betriebssystem

2.4. selbstsigniertes Zertifikat

# Help
  openssl genpkey -help
  openssl rsa     -help
  openssl req     -help
  openssl x509    -help
  
# Privaten Schlüssel erzeugen
  openssl genpkey -algorithm RSA -out private.key

# Öffentlicher Schlüssel extrahieren 
  openssl rsa -in private.key -pubout -out public.key
  
# Signaturanforderung erzeugen
  openssl req -key private.key -new -out csr.pem

# Signatur 
  openssl req -x509 -days 365 -key private.key -in csr.pem -out certificate.crt
  
# Anzeige der verschiedenen Dateien
  openssl [x509|req|pkey|rsa] -in dateiname  -text -noout  [-pubin]

2.5. Eigene CA

# Root-CA
  openssl req -x509 -sha256 -days 1825 -newkey rsa:4096 -keyout rootCA.key -out rootCA.crt
  
# Signatur  
  openssl x509 -req -CA rootCA.crt -CAkey rootCA.key -in domain.csr  -out domain.crt  -days 90 -CAcreateserial  
 
# Signatur mit SAN-Erweiterung 
  openssl x509 -req -CA rootCA.crt -CAkey rootCA.key -in domain.csr  -out domain.crt  -days 90 -CAcreateserial  -extfile domain.ext 

domain.ext

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
subjectAltName = @alt_names
[alt_names]
DNS.1 = domain

2.6. Zertifikats-Sperrverfahren

# Get Certificate (with TLS Server Name Indication - TLS SNI, for TLS handshake with corresponding certificate)
openssl s_client -showcerts -connect www.example.com:443 </dev/null
openssl s_client -showcerts -servername www.example.com -connect www.example.com:443 </dev/null

# Get URL from certificate
openssl x509 -in fd.crt -noout -text | grep -A 5 CRL

# Download CRL
wget URL -O geant.crl

# Verify CRL
openssl crl -in geant.crl -inform DER -CAfile issuer.crt -noout

# Determine SN of certificate to check
openssl x509 -in fd.crt -noout -serial

# List CRL and search for SN
openssl crl -inform DER -text -noout -in geant.crl   | grep SN

Literatur


Letzte Änderung: 01. July 2024 17:38