Aus Sicherheitsgründen sollte man seinen Privaten Schlüssel auf dem eigenen Server erzeugen. StartSSL bietet an, den privaten Key zu erzeugen, aber wer weiß, wo der Private Schlüssel dann landet und was damit gemacht wird. Denn nur mit dem privaten Schlüssel kann man neue Zertifiakte ausstellen oder fälschen (Man-in-the-Middle Attacke)
Privates Schlüsselpaar erzeugen
openssl genrsa -out <websitename>_private.key 4096
Um jetzt einen Schlüssel bei StartSSL zu bekommen, muss man ein CSR (Certificate Sign Request) erzeugen.
openssl req -new -key <websitename>_private.key -out <websitename>.csr -sha256
es werden nach und nach Informationen über das Zertifikat angefordert. Wichtig ist hier der Common-Name. Dieser sollte der gleiche sein, wie die URL der Webseite.
Zum Schluss werden weitere Einstellungen abgefragt. Hier sollte man ein Passwort hinterlegen, damit der generierte Schlüssel mit einem Passwort geschützt ist.
Nach fertigstellung muss man den generierten csr-Code bei StartSSL eintragen.
nach ein paar Klicks auf weiter und der Eingabe der Domain und Subdomain erhält man das unterschriebene Zertifikatsfile. Dieses als websitename_ssl.crt
abspeichern. In diesem Dialog sollte man auch das intermediate und root CA Zertifikat herunterladen.
Zum Schluss muss man noch die private Datei entschlüsseln
openssl rsa -in <websitename>_private.key -out <websitename>_private_decrypted.key
Man sollte alle Zertifikate in ein separates Verzeichnis legen (z.B. /etc/apache/ssl/
) und die Zugriffsrechet 400 ändern. Es wird hiermit verhindert, dass Nicht-root-User Zertifikate einsehen, stehlen, verändern oder neue erstellen können.
<VirtualHost *:443> ServerAdmin webmaster@<websitename> ServerName <websitename> UseCanonicalName On SSLEngine on SSLCertificateKeyFile /etc/apache2/ssl/<websitename>_private_decrypted.key SSLCertificateFile /etc/apache2/ssl/<websitename>_ssl.crt SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem SSLCACertificateFile /etc/apache2/ssl/ca.pem SSLCipherSuite HIGH SSLProtocol all -SSLv2 DocumentRoot /var/www/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/<websitename>-error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/<websitename>-access.log combined </VirtualHost>