SSL Zertifikate mit OpenSSL erstellen
Aus Fedorawiki.de
Um verschlüsselte SSL oder TLS-Verbindungen anzubieten (z.B. HTTPS, IMAPS SMTP mit TLS usw)) wird ein Serverzertifikat benötigt. Dieses Zertifikat muss von einer Zertifizierungsstelle (Certification Authority oder kurz CA) signiert sein.
Sollte dies nicht der Fall sein, werden Clients (Mailclient, Browser etc.) die Authentizität des Zertifikats nicht überprüfen können und zeigen in den meisten Fällen eine Warnmeldung. Ein offizielles Serverzertifikat, welches von einer offiziellen Zertifizierungsstelle (z.B. Verisign, RSA etc) signiert ist, ist leider nicht kostenlos. In den meisten Fällen sind jährliche Gebühren von mehreren hundert Euro fällig. Als Alternative können auch Zertifikate von CAcert verwendet werden, welche kostenlos sind, wenn man Mitglied des Web-of-Trust ist.
Diese Anleitung beschreibt wie man eine eigene CA erstellt, um Zertifikate auszustellen und zu signieren.
Inhaltsverzeichnis |
Eigene CA erstellen
Für das Erstellen der CA wird das Wrapper Skript CA.sh verwendet, welches im Paket openssl beinhaltet ist. Das hier verwendete Skript ist eine leicht modifizierte Version, da nicht alle Funktionen verwendet werden.
Das Skript erstellt alle nötigen Dateien im Verzeichnis /CA. Sollte dieses Verzeichnis nicht erwünscht sein, muß sowohl das Skript (CA.sh) als auch die Konfigurationsdatei (openssl.cnf) angepasst werden.
Die Konfigurationsdatei wird in das Verzeichnis /CA kopiert.
| |
Wichtig: Der untere Abschnitt aus der openssl.cnf ist wichtig und sollte entsprechend angepasst werden. |
[ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = DE countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = Bavaria localityName = Locality Name (eg, city) localityName_default = Munich 0.organizationName = Organization Name (eg, company) 0.organizationName_default = Fedoraforum.de ROOT CA commonName = Common Name (eg, your name or your server\'s hostname) commonName_default = centos.fedoraforum.de commonName_max = 64 emailAddress = Email Address emailAddress_default = root@fedoraforum.de emailAddress_max = 64
Besonders die Variable commonName_default sollte die IP Adresse oder den DNS Namen des Systems enthalten.
Mit ./CA.sh -newca wird nun die CA erstellt:
CA certificate filename (or enter to create)
Making CA certificate ... Generating a 1024 bit RSA private key .....................................++++++ .....................++++++ writing new private key to '/CA/private/./cakey.pem' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- 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) [Bavaria]: Locality Name (eg, city) [Munich]: Organization Name (eg, company) [Rootserver]: Organizational Unit Name (eg, section) []:centos.fedoraforum.de Common Name (eg, your name or your server's hostname) []:centos.fedoraforum.de Email Address []:root@fedoraforum.de
Der Schlüssel und das Serverzertifikat sollte sich im Verzeichnis /CA/private/ befinden.
Damit ist man nun in der Lage Zertifikate auszustellen und zu signieren.
IMAPS Zertifikate erstellen und signieren
Bevor man ein CSR (Certificate Signing Request) generiert, muß der Schlüssel erzeugt werden:
Als nächstes wirde ein CSR generiert:
[root]# openssl req -new -key imapd-ssl.key -config /CA/openssl.cnf -out imapd-ssl.csr
welches mit dem Skript sign.sh signiert wird:
CA signing: imapd-ssl.csr -> imapd-ssl.crt:
Using configuration from /CA/openssl.cnf
Enter pass phrase for /CA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 1 (0x1)
Validity
Not Before: Jul 12 09:43:03 2007 GMT
Not After : Sep 27 09:43:03 2016 GMT
Subject:
countryName = DE
stateOrProvinceName = Bavaria
organizationName = Fedoraforum.de ROOT CA
organizationalUnitName = centos.fedoraforum.de
commonName = centos.fedoraforum.de
emailAddress = root@fedoraforum.de
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
33:3A:FC:94:40:10:36:85:6B:7A:CF:64:4D:88:B0:E0:81:A2:45:0F
X509v3 Authority Key Identifier:
keyid:D5:6C:DC:B4:0A:58:80:23:29:E7:97:84:63:86:B3:30:EF:C0:02:CB
DirName:/C=DE/ST=Bavaria/L=Munich/O=Fedoraforum.de ROOT CA/OU= centos.fedoraforum.de/CN=centos.fedoraforum.de/emailAddress=root@fedoraforum.de
serial:00
Certificate is to be certified until Sep 27 09:43:03 2016 GMT (3365 days) Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated CA verifying: imapd-ssl.crt <-> CA cert imapd-ssl.crt: OK
Das Zertifikat ist nun erstellt und signiert. Damit IMAP dieses Zertifikat auch lesen kann, muß es leicht angepasst werden.
In der Datei imapd-ssl.crt werden alle Zeilen bis:
-----BEGIN CERTIFICATE-----
gelöscht.
Jetzt muss der Schlüssel und das Zertifikat in einer .pem Datei zusammengefügt werden:
Anschließend wird der Diffie-Hellman Code hinzugefügt:
Damit die Mailclients dieses Zertifikat auch überprüfen können, muß die CA exportiert werden. Dazu kopiert die Datei /CA/private/cacert.pem in /CA/private/cacert.crt um. Diese Datei wird nun im Mailcient importiert. Bei Thunderbird z.B. wird dies im Menü Zertifizierungsstellen erledigt.
fedoraforum.de CA
Das Zertifikat für die IMAPS Verbindung wurde von der fedoraforum.de CA signiert:
-----BEGIN CERTIFICATE----- MIID1jCCAz+gAwIBAgIBADANBgkqhkiG9w0BAQQFADCBqTELMAkGA1UEBhMCREUx EDAOBgNVBAgTB0JhdmFyaWExDzANBgNVBAcTBk11bmljaDETMBEGA1UEChMKUm9v dHNlcnZlcjEeMBwGA1UECxMVY2VudG9zLmZlZG9yYWZvcnVtLmRlMR4wHAYDVQQD ExVjZW50b3MuZmVkb3JhZm9ydW0uZGUxIjAgBgkqhkiG9w0BCQEWE3Jvb3RAZmVk b3JhZm9ydW0uZGUwHhcNMDcwNzA1MDkyNzI2WhcNMTYwOTE3MDkyNzI2WjCBqTEL MAkGA1UEBhMCREUxEDAOBgNVBAgTB0JhdmFyaWExDzANBgNVBAcTBk11bmljaDET MBEGA1UEChMKUm9vdHNlcnZlcjEeMBwGA1UECxMVY2VudG9zLmZlZG9yYWZvcnVt LmRlMR4wHAYDVQQDExVjZW50b3MuZmVkb3JhZm9ydW0uZGUxIjAgBgkqhkiG9w0B CQEWE3Jvb3RAZmVkb3JhZm9ydW0uZGUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ AoGBAMnkiybodeLhzmpyGht6X5lkI3rlrAUKiYyJl7CxO5vElxjtGuzC1nHFq3Yu nIzaJqv8LFHuwtbFtoxDGRoM3R+XNvMiPTlPwHr5TC94vZLVr58CZZHDHMZOT9Q4 2WyxSUVzmD7AeKu84aZzKVzswnmdc03c2z9fe5hanPKT6rLxAgMBAAGjggEKMIIB BjAdBgNVHQ4EFgQU4pjbHhauj+XrwoAg6mfM/BbLSYkwgdYGA1UdIwSBzjCBy4AU 4pjbHhauj+XrwoAg6mfM/BbLSYmhga+kgawwgakxCzAJBgNVBAYTAkRFMRAwDgYD VQQIEwdCYXZhcmlhMQ8wDQYDVQQHEwZNdW5pY2gxEzARBgNVBAoTClJvb3RzZXJ2 ZXIxHjAcBgNVBAsTFWNlbnRvcy5mZWRvcmFmb3J1bS5kZTEeMBwGA1UEAxMVY2Vu dG9zLmZlZG9yYWZvcnVtLmRlMSIwIAYJKoZIhvcNAQkBFhNyb290QGZlZG9yYWZv cnVtLmRlggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAt/POVbBr EH8wK8qkIIi6z5qHo89go0zfMol+pqpplQ8CsSJn9bhuFCpx+xzcAOvJmuXlNu62 2RoFmJsEDGXQZVDe1fI0fQbohjVrTa2m7o68paceXRaCta5ILUHrtC2LLSAJnivF qxfWrWSLuxuHVBpiho60QGK7jBSRKyafmPA= -----END CERTIFICATE-----
MD5 Fingerprint=AF:AB:46:91:67:A1:87:1D:ED:15:AF:FB:EB:36:6A:DD
Die CA ist im Format .crt verfügbar und kann hier heruntergeladen werden. Alle weitere Zertifikate werden von dieser CA signiert.
