syslog.warten.de

SSL-Zertifikate Erstellen Und Mit Apache Nutzen

In der Kommunikation zwischen Client und Server werden Zertifikate benötigt, wenn sichergestellt werden soll, dass sich die Parteien vertrauen können. Ein Zertifikat muss von einer Zertifizierungsstelle (Certification Authority, CA) signiert werden; die CA bürgt für die Echtheit des Zertifikats.

Es soll ein SSL-Zertifikat (X.509) erstellt werden. Unabhängig davon, ob das Zertifikat von einer externen CA oder selbst signiert werden soll, muss zuerst immer eine Bürgschaftsanfrage (certificate request, CSR) generiert werden.

$ openssl req -new -nodes -keyout private\_key.pem -out private\_key.pem -days 365  
Generating a 1024 bit RSA private key  
…………………….   
……….   
writing new private key to ‘private_key.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) [AU]:DE  
State or Province Name (full name) [Some-State]:Berlin  
Locality Name (eg, city) []:Berlin  
Organization Name (eg, company) [Internet Widgits Pty Ltd]:  
Organizational Unit Name (eg, section) []:  
Common Name (eg, YOUR name) []:example.com  
Email Address []:webmaster@example.com 
Please enter the following ‘extra’ attributes  
to be sent with your certificate request  
A challenge password []:  
An optional company name []:  

Der Befehl erstellt den privaten Schlüssel und das CSR in einer Datei. Auf die Angabe eines Passworts wurde aus praktischen Gründen verzichtet. Würde ein privater Schlüssel mit Passwort in einen Serverdienst eingebunden werden, müsste das Passwort bei jedem Start des Dienstes erneut eingegeben werden. Da der private Schlüssel somit ungeschützt ist, muss er unbedingt vor fremden Zugriffen geschützt werden.

Nun kann das CSR an die CA übergeben und signiert werden. Eine gemeinschaftsbetriebene, nicht-kommerzielle Zertifizierungsstelle, die kostenfrei X.509-Zertifikate für verschiedene Einsatzgebiete ausstellt ist CAcert.

—–BEGIN CERTIFICATE REQUEST—–  
ICHBINUNGÜLTIG9tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu/ppznA8u  
DD0UzHX/YQj5doqi2vWvGNhg849RJpbJ/ vlW/ZhkBTJ6M8ry/dzg1lp XK08kkK  
BgNVBAcTBkJlcmxpbjEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRk  
MRQwEgYDVQQDEwtleGFtcGxlLmNvbTEkMCIGCSqGSIb3DQEJARYVd2VibWFzdGVy  
pLZMP3XDjvFkZW8F22Aq3ySBaLGagKHxvwIDAQABoAAwDQYJKoZIhvcNAQEFBQAD  
Eob45fj1XE9AOqTAT8noFcdK1uixXsgPYfqNiQrVXfAunoiLUhYYFYXRc1qAI3dA  
MIIBzzCCATgCAQAwgY4xCzAJBgNVBAYTAkRFMQ8wDQYDVQQIEwZCZXJsaW4xDzAN  
gYEAn/HkOtZyMCLZRkhG1Prph/1hbLilyARVul s8Z/J TnAWw6fxcyDpXGDTfNj  
FDj7WXcxZ pfPF9lzfz8mI3NLNr8BSx/ejM7qHAjcie RUkUQo2KToSFv2D9w6cq  
2eZW3F9helt3qae8hXBfbSTORYozLRF8c ZQHKkCJJjoZUs=  
—–END CERTIFICATE REQUEST—– 

Nach einer Identitätsprüfung wird die Zertifizierungsstelle ein signiertes, öffentliches Zertifikat zurückgeben, das zusammen mit dem privaten Schlüssel benutzt werden kann. Das Zertifikat kann in die oben genannte Datei kopiert werden.

Um das Zertifikat für eine sichere Verbindung mit HTTPS zu verwenden, muss es auf den Server kopiert und im Webserver eingebunden werden. Im Beispiel wird ein Apache2 auf einem Debian GNU/Linux verwendet.

# cp private\_key\_and_certificate.pem /etc/apache2/ssl/example.com.pem  
# chmod 600 /etc/apache2/ssl/example.com.pem 

Im Webserver wird das Zertifikat mit der Direktive SSLCertificateFile eingebunden.

NameVirtualHost *:443  

ServerAdmin webmaster@example.com  
ServerName example.com  
SSLEngine On  
SSLCertificateFile /etc/apache2/ssl/example.com.pem

Damit sind alle Vorbereitungen beendet und die sichere Verbindung kann genutzt werden.