Aktionen

ISPConfig ab 3.1.x - Webinterface als Subdomain auf Port 443 https einrichten

Aus znilwiki

Normalerweise verbirgt sich das ISPConfig Interface hinter dem Port 8080
Dieser Port ist natürlich nicht aus jedem Netzwerk erreichbar - insbesondere aus Firmennetzwerken.

Also machen wir das Interface über den Port 443 (= https) erreichbar, und zwar unter einer eigenen Subdomain!


1 Subdomain in ISPConfig anlegen

Wir legen einfach eine neue Webseite in ISPConfig an:

ispconfig.euredomain.suffix

ich z.B. also

ispconfig.znil.net
ISPConfig-3.1-hinter-Subdomain-und-https-001.png

Den Haken bei Let's Encrypt SSL: setzen wir auch gleich - so geht es von überall ohne Zertifikatswarnungen.

Nun warten wir einen Moment bis ISPConfig uns die Seite angelegt und das Zertifikat erstellt hat. Dauert bei der neuen Version keine 2 Minuten.
Wenn Ihr die Subdomäne schon bei euren Domänen-Hoster angelegt habt bzw. es diese im DNS angelegt ist könnt Ihr schon auf die Seite zugreifen - er müsste euch die Standard-Seite des Apache2 zeigen.



2 .vhost Datei bearbeiten

Wir melden uns per SSH / puTTY auf unserem Server mit dem installiertem ISPConfig 3.1.x an und bearbeiten die .vhost Datei unserer Subdomain.
Da meine Subdomain ispconfig.znil.net heisst, muss ich folgende Datei bearbeiten:

nano /etc/apache2/sites-available/ispconfig.znil.net.vhost

In der Datei löschen wir (fast) alles zwischen den VirtualHost Einträgen und ersetzen den Inhalt wie folgt:

  • Alles was Gelb hinterlegt ist müsst Ihr an den Namen eurer Subdomain oder eurer IP-Adresse anpassen!
  • Alles was Grün hinterlegt übernehmt Ihr aus der Original-Datei - also NICHT löschen. Das sind die Zeilen mit dem Pfad zum SSL-Zertifikat
<VirtualHost 192.168.42.10:80>

                ServerName ispconfig.znil.net
                ServerAdmin admin@znil.net

                Redirect permanent / https://ispconfig.znil.net
</VirtualHost>

<VirtualHost 192.168.42.10:443>

        ServerName ispconfig.znil.net
        ServerAdmin webmaster@znil.net

        <Directory /var/www/ispconfig/>
                <FilesMatch "\.ph(p3?|tml)$">
                        SetHandler None
                </FilesMatch>
        </Directory>
        <Directory /usr/local/ispconfig/interface/web/>
                <FilesMatch "\.ph(p3?|tml)$">
                        SetHandler None
                </FilesMatch>
        </Directory>

        <IfModule mod_fcgid.c>
                DocumentRoot /var/www/ispconfig/
                SuexecUserGroup ispconfig ispconfig
                <Directory /var/www/ispconfig/>
                        Options -Indexes +FollowSymLinks +MultiViews +ExecCGI
                        AllowOverride AuthConfig Indexes Limit Options FileInfo
                        <FilesMatch "\.php$">
                                SetHandler fcgid-script
                        </FilesMatch>
                        FCGIWrapper /var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter .php
                        Require all granted
                </Directory>
                IPCCommTimeout  7200
                MaxRequestLen 15728640
        </IfModule>

        <IfModule mpm_itk_module>
                DocumentRoot /usr/local/ispconfig/interface/web/
                AssignUserId ispconfig ispconfig
                AddType application/x-httpd-php .php
                <Directory /usr/local/ispconfig/interface/web>
                        # php_admin_value open_basedir "/usr/local/ispconfig/interface:/usr/share:/tmp"
                        Options +FollowSymLinks
                        AllowOverride None
                        Require all granted
                        php_value magic_quotes_gpc        0
                </Directory>
        </IfModule>

        # ErrorLog /var/log/apache2/error.log
        # CustomLog /var/log/apache2/access.log combined
        ServerSignature Off

        <IfModule mod_security2.c>
                SecRuleEngine Off
        </IfModule>

        # SSL Configuration

        SSLEngine on
        SSLProtocol All -SSLv2 -SSLv3
        SSLCertificateFile /var/www/clients/client0/web1/ssl/ispconfig.znil.net.crt
        SSLCertificateKeyFile /var/www/clients/client0/web1/ssl/ispconfig.znil.net.key
        SSLCertificateChainFile /var/www/clients/client0/web1/ssl/ispconfig.znil.net.bundle

        <IfModule mod_headers.c>
                Header always add Strict-Transport-Security "max-age=15768000"
                RequestHeader unset Proxy early
        </IfModule>

        SSLUseStapling On
        SSLStaplingResponderTimeout 5
        SSLStaplingReturnResponderErrors Off

</VirtualHost>

<IfModule mod_ssl.c>
        SSLStaplingCache shmcb:/var/run/ocsp(128000)
</IfModule>

<Directory /var/www/php-cgi-scripts>
        AllowOverride None
        Require all denied
</Directory>

<Directory /var/www/php-fcgi-scripts>
        AllowOverride None
        Require all denied
</Directory>

Anpassen müsst Ihr:

  • Die IP bei den VirtualHost einträgen - lasst die beim löschen am besten stehen
  • ServerName und ServerAdmin auch beim löschen stehen lassen
  • Bei Redirect permanent eure Subdomain eintragen (https!)
  • Bei SSLCertificateFile und SSLCertificateKeyFile halt eure Pfade - am besten lasst Ihr diese Zeilen beim löschen ebenfalls stehen!
Face-wink.png
Tipp: Mit der Taste F9 könnt Ihr in nano eine Zeile löschen, mit F10 fügt Ihr die zuletzt gelöschten wieder ein!



Nun noch speichern und mit

service apache2 restart

bzw.

systemctl reload apache2

den Webserver neu starten. Und schon funktioniert es! Im Webbrowser einmal F5 drücken und schon sollte die Anmeldeseite von ISPConfig 3.1.x kommen!



3 Erklärung der Lösung

Warum das nicht nach der alten Proxy Methode funktioniert kann ich auch nicht sagen, eventuell gibt es eine HTTP_REDIRECT Prüfung oder ähnliches.
Nach vielen - ergebnislosen - probieren und etwas nachdenken fand ich dann aber die oben stehende Lösung.
In der Datei

/etc/apache2/sites-available/ispconfig.vhost

steht die normale Konfiguration für die ISPConfig Webseite drin. Also das diese auf Port 8080 lauschen soll und welches Zertifikat usw.
Den Inhalt dieser Datei habe ich einfach - bis auf wenige Zeilen - in die .vhost Datei meiner Subdomain übertragen - und schon ging das.
Die Seite wird nun also 2 x gehostet - einmal im Original und dem selbst signierten Zertifikat auf Port 8080 und einmal mit dem Let's Encrypt Zertifikat in der Subdomain.



4 Kommentare


anonymous

29 Monaten zuvor
Punktzahl 0++

Vielen Dank für diese Beschreibung. Ich wünschte, es würde einen offiziellen Weg geben.

Ich kann allen, die Ihr Panel nicht mehr über 8080 erreichen wollen, die oben genannten Änderungen in das ispconfig template für das admin panel und platziert Sie unter usr/local/ispconfig/server/conf-custom/install/

Das Problem an der oben beschrieben Lösung ist, dass die Konfiguration durch den ISPconfig cronjob überschrieben werden kann.

Daher empfehle ich die oben beschriebene .vhost Datei in einer separaten Datei zu speichern und nur den Link von /etc/apache2/sites-enabled/spconfig.znil.net.vhost zu /etc/apache2/sites-available/ispconfig.znil.net.vhost umzubiegen.

BLinz

18 Monaten zuvor
Punktzahl 0++
Nur wenn ich in der GUI an der Subdomain etwas ändern würde

anonymous

29 Monaten zuvor
Punktzahl 0++

Hier ist meine Lösung in leicht abgewandelter Form, welche auch Updates von ISPConfig und dem angelegten VHOST übersteht.

Im Prinzip wird eine komplett neue vhost-Datei angelegt und per cron überwacht, ob der Link der Webseite noch auf diese zeigt anstatt auf die von ISPConfig "gerade" angelegte. Der zweite cronjob soll den admin benachrichtigen, wenn sich die 8080 vhost-Datei verändert, damit man die Änderungen in die eigene integrieren kann.


1. Gehe wie oben vor, erstelle aber eine neue vhost-Datei, z.B. '/etc/apache2/sites-available/000-non8080-ispconfig.vhost' anstatt die Original vhost-Datei der erstellten Webseite anzupassen.

2. Erstelle einen cronjob ('/etc/cron.d/my-check_admin_panel_vhost') mit dem folgenden Inhalt:

  1. This file manages the special ISPConfig Admin Panel configuration

SHELL=/bin/bash

  1. Check if the link from sites-enabled is still directed to the special configuration
  1. Check if the original ISPConfig Admin Panel configuration has changed
  2. You have to update the hash after you migrated the new changes
  • /30 * * * * root if sed 's/ .*//')" ; then echo -e "The configuration of the ISPConfig Admin Panel has changed.\nPlease check it and migrate the changes from /etc/apache2/sites-available/ispconfig.vhost to /etc/apache2/sites-available/000-non8080-ispconfig.vhost"; fi

3. Ersetze die Dateinamen entsprechend.

4. Passe den hash an. Es ist der Hash der /etc/apache2/sites-available/ispconfig.vhost

anonymous

29 Monaten zuvor
Punktzahl 0++
Sorry die Formatierung scheint kaputt gegangen zu sein.

Pappmann

27 Monaten zuvor
Punktzahl 0++

Hallo,

diese Apache Direktive funktioniert mit IspConfig 3.1.x

https://www.…#post-356870

BLinz

27 Monaten zuvor
Punktzahl 0++

mhh, das entspricht doch dem was oben beschrieben ist.

Oder halt als Proxy-Lösung

Pappmann

27 Monaten zuvor
Punktzahl 0++
Funktioniert leider doch nicht hinter der Firmenfirewall die alle port bis auf 80/443 blockt. :(

BLinz

27 Monaten zuvor
Punktzahl 0++
Es wird doch auch Port 443 genutzt (bei mir mit Let's Encrypt Zertifikat), das funktionierte bisher aus allen Kundennetzen, egal wie hart die Firewall ist - solange https Seiten erlaubt sind

Mike

17 Monaten zuvor
Punktzahl 0++
Klasse. Gefällt mir sehr gut die Lösung.

R.

4 Monaten zuvor
Punktzahl 0++

Ach, das Problem auf Seiten ispconfig ist ... kruder. Er bindet eine zwangs-Domain an den Login-Cookie und wertet dazu aber nicht den redirect aus (wie es eigentlich richtig wäre). Dh., beim proxy nach localhost:8080 hat er den Cookie auch für localhost und nicht für ispconfig.meine-domain.de gesetzt -> wurde nicht mehr gefunden -> login nicht möglich.

wenn man in interface/lib/app.php $cookie_domain einfach auf leer setzt (nach Zeile 73) dann klappt es perfekt mit einem stinknormalen redirect bzw proxy selbst aus .htaccess heraus.

IMHO etwas, was im ispconfig gefixt werden sollte, weil diese Rangehensweise keinen Sinn ergibt.

j4i
Kommentar hinzufügen
znilwiki freut sich über alle Kommentare. Sofern du nicht anonym bleiben möchtest, trage deinen Namen oder deine Email-Adresse ein oder melde dich an. Du kannst das Feld auch einfach leer lassen. Bei einem Kommentar wird deine IP-Adresse zusammen mit dem Text, den angegebenen Namen bzw. der Email-Adresse in der Datenbank für die Kommentare dauerhaft gespeichert. Genaueres kannst du hier nachlesen: Datenschutzerklärung