Selbstsignierte Zertifikate unter iOS 13

Mit iOS 13 und auch mit macOS 15 hat Apple die Anforderungen an Zertifikate deutlich erhöht (siehe Anforderungen an vertrauenswürdige Zertifikate in iOS 13 und macOS 10.15). Dies betrifft insbesondere selbst-signierte Zertifikate für Entwicklungsumgebungen.

Bei mir hat es nicht genügt, die Zertifikate gemäß den Anforderungen zu generieren, sondern es war zusätzlich notwendig, eine eigene CA zu erstellen. Hier daher die notwendigen Schritte.

Zuerst den Schlüssel und das Zertifikat für die eigene CA erzeugen:

sudo openssl genrsa -out ca.key 2048
sudo openssl req -x509 -sha256 -new -key ca.key -out ca.crt -days 730 -subj /CN="My CA"

Nun werden noch zwei Konfigurationsdateien req.conf und v3.ext benötigt.

# req.conf
[req]
distinguished_name = req_distinguished_name
prompt = no
[req_distinguished_name]
C = DE
ST = NRW
L = Ort
O = Dein Name
OU = Deine Firma 
CN = deine.url.de
# v3.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1 = deine.url.de

Mit Hilfe dieser Dateien kann nun das eigentliche Zertifikat erzeugt werden, wobei als Zwischenschritt ein Certificate Signing Request verwendet wird, also wie bei einer richtigen CA:

sudo openssl req -new -sha256 -nodes -out sslcert.csr -newkey rsa:2048 -keyout sslcert.key -config req.conf 
sudo openssl x509 -req -in sslcert.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out sslcert.crt -days 730 -sha256 -extfile v3.ext

Jetzt die Dateien ca.crt und sslcert.crt per Mail an das iPhone oder iPad senden und importieren. Danach müssen beide in den Einstellungen Allgemein > Profile installiert werden. Für die CA muss unter Allgemein > Info > Zertifikatsvertrauenseinstellungen die Option “Volles Vertrauen für Root-Zertifikate aktivieren” ausgewählt werden.

Referenzen: