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:

    Leave A Reply