Website-Icon .: blog cscholz.io :.

SysCP: HTTPS Zertfikiat für Apache2

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.key
cp /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 on
  SSLCertificateFile /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:

Die mobile Version verlassen