Da ich heute etwas Zeit hatte habe ich mal hingesetzt und eine Möglichkeit gesucht, unter SysCP ein SSL Zertfikat für eine Domain zu betreiben. Als erstes habe ich ein SSL Verzeichnis für den Apache2 erstellt
mkdir /etc/apache2/ssl/
Anschließend eine Zertfifikatsanfoderung für die Domain blog.cscholz.io gestellt.
openssl req -newkey rsa:1024 -subj /CN=blog.cscholz.io -nodes -keyout private.key -out server.csr
Nun bei http://www.cacert.org anmleden und die Domain verifizieren lassen. Dazu wird eine eMail an postmaster@blog.cscholz.io geschickt in der sich ein Link befindet um den Besitz der Domain zu verifizieren. Anschließend die Zertifikatsanforderung die mittels openssl erstellt wurde (server.csr) online auf cacert.org unter dem Punkt Domain in das Edit Feld eingefügt. War bis hierhin alles korrekt, bekommt man anschließend das Zertfikat angezeigt bzw. zugeschickt.
Achten Sie bitte darauf, kein Kennwort für das Zertifikat zu vergeben, sonst klappt es nicht. Achten Sie ebenfalls darauf, dass die Zeilen —–BEGIN CERTIFICATE REQUEST—– und—–END CERTIFICATE beim einfügen vorhanden sein müssen.
Das angezeigte SSL-Zertfikat kann anschließend in die Datei /etc/apache2/ssl/server.crt kopiert werden.
Nun noch ein paar Dateien umkopieren:
cd /etc/apache2/ssl/ wget http://wiki.cacert.org/wiki/SimpleApacheCert?action=AttachFile&do=get&target=CAcert_chain.pemmv ~/private.key /etc/apache2/ssl/ rm ~/server.csrcp /etc/apache2/ssl/private.key /etc/ssl/private/ chown root.ssl-cert /etc/ssl/private/private.key chmod 0640 /etc/ssl/private/private.keycp /etc/apache2/ssl/CAcert_chain.pem /etc/ssl/certs/ cp /etc/apache2/ssl/server.crt /etc/ssl/certs
Das CAcert_chain.pem file konnte ich komsicherweise nicht über wget ziehen. Alternativ kann man diese Adresse auch einfach im Browser eingeben.
Nun die Datei /etc/apache2/sites-available/default-ssl erstellen. In dieser Datei wird nun der HTTPS aufruf hinterlegt.
<VirtualHost 82.210.7.84:443> # SSL (START) SSLEngine onSSLCertificateFile /etc/apache2/ssl/server.crt SSLCertificateKeyFile /etc/apache2/ssl/private.key SSLCertificateChainFile /etc/apache2/ssl/CAcert_chain.pem # SSL (ENDE)ServerName blog.cscholz.io ServerAlias www.blog.cscholz.io ServerAdmin e-Mail DocumentRoot "/var/kunden/webs/cscholz/blog.cscholz.io/" php_admin_flag safe_mode Off Alias /webalizer "/var/kunden/webs/cscholz//webalizer/blog.cscholz.io" ErrorLog "/var/kunden/logs/cscholz-blog.cscholz.io-error.log" CustomLog "/var/kunden/logs/cscholz-blog.cscholz.io-access.log" combined php_admin_flag safe_mode Off </VirtualHost>
Nun die Date aktivieren:
a2ensite default-ssl
In der Datei /etc/apache2/ports.conf noch den Port 443 freischalten
Listen 80 Listen 443
Das SSL-Modul aktivieren:
a2enmod ssl
und den Apache neustarten:
/etc/init.d/apache2 restart
Wordpress über HTTPS
Um die WordPress Administration über https laufen zu lassen, muss das rewrite Modul von Apache2 aktiviert werden:
a2enmod rewrite
Nun unter SysCP für die WordPress Domain die vhost Einträge um folgende erweitern.
(Entweder manuell: /etc/apache2/sites-available/99_syscp_vhosts.conf
am besten aber über die SysCP Domain Verwaltung)
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^/wp-(admin|login|register)(.*) - [C] RewriteRule ^/(.*) https://blog.cscholz.io/$1 [QSA,L] </IfModule>
Wer sich diese Handarbeit sparen möchte, kann auch einen fertigen Plugin benutzen:
http://haris.tv/2007/04/24/admin-ssl-new-wordpress-plugin/
Achtung, nicht jedes Theme kommt mit diesem Plugin klar.
Links: