# XAMPP auf SSL konfigurieren



## blz (12. Mrz 2019)

Hallo,
ich habe XAMPP aufgesetzt.
Ich möchte nun, dass der Server über das Internet erreichbar ist.
Hierzu habe ich bereits folgendes unternommen:


Habe ein Portweiterleitung von Port 80 extern auf Port 80 intern eingerichtet
Habe ein Portweiterleitung von Port 443 extern auf Port 443 intern eingerichtet

Habe eine htaccess-Datei im Ordner htdocs platziert und die zugehörige htpasswd-Datei im Ordner xampp
Habe ein TLS Zertifikat generiert und unter folgenden Pfaden abgelegt:
\xampp\apache\conf\ssl.crt\
\xampp\apache\conf\ssl.key\

Habe versucht, HTTPS zu erzwingen, in dem ich in der Datei
xampp\apache\conf\extra\httpd-xampp.conf
die roten Zeilen ergänzt habe:

Ganz oben in der Datei:
<IfModule mod_rewrite.c>
    RewriteEngine On

    # Redirect /phpMyAdmin folder to https
    RewriteCond %{HTTPS} !=on
    RewriteCond %{REQUEST_URI} phpmyadmin
    RewriteRule ^(.*) https://%{SERVER_NAME}$1 [R,L]

    # Redirect /htdocs folder to https
    RewriteCond %{HTTPS} !=on
    RewriteCond %{REQUEST_URI} htdocs
    RewriteRule ^(.*) https://%{SERVER_NAME}$1 [R,L]
</IfModule>


Alias /phpmyadmin "C:/xampp/phpMyAdmin/"
<Directory "C:/xampp/phpMyAdmin">
        AllowOverride AuthConfig
#       Require local
        Require all granted
        ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
  SSLRequireSSL
</Directory>



Wenn ich nun die Adresse im Browser eingebe, funktioniert die Umleitung auf https nur bei phpMyAdmin. Eine im htdocs Ordner liegende Webseite erreiche ich weiterhin per http.
Erscheint mir auch logisch, denn da fehlt ja noch das SSLRequiereSLL.
Allerdings finde ich in der httpd-xampp.conf keinen mir geeignet erscheinenden Block, wo ich das reinschreiben könnte ...


----------



## mihe7 (12. Mrz 2019)

Wir machen das einfach bei der Definition der virtuellen Hosts. Der für Port 80 hat eine Rewrite-Condition auf 443 und der für 443 hat im Directory-Eintrag (für das Directory, das als DocumentRoot angegeben ist) SSLRequireSSL stehen.


----------



## blz (5. Apr 2019)

Hallo,
könntest du das ein bisschen genauer erklären.
ich bin kein Netzwerker und suche mir das ganze recht mühsam zusammen ...


----------



## mihe7 (5. Apr 2019)

Naja, das ist die Config für Port 80:

```
<VirtualHost IP_ADDRESS_DES_SERVERS:80>
        ServerName ...
        ...
        RewriteEngine On
        RewriteCond %{REQUEST_URI} !^/\.well-known/
        RewriteRule ^.* https://%{SERVER_NAME}:443 [R,L]
</VirutalHost>
```
Und für Port 443 gibt es eine eigene:

```
<VirtualHost IP_ADDRESS_DES_SERVERS:443>
        ServerName ...
        ...
        DocumentRoot /path/to/docroot
        ...
        <Directory /path/to/docroot>
                <IfModule mod_ssl.c>
                        SSLRequireSSL
                </IfModule>
                ...
        </Directoy>
</VirtualHost>
```


----------



## blz (9. Apr 2019)

Ok, 
habe nachgelesen, wofür VHs da sind.
Anscheinend braucht man sie zwangsläufig nur, wenn man auf einem Server mehrere Adressen betreiben möchte.
Reicht dann auch schon die Portnummer, damit es sich in diesem Kontext um eine andere Adresse handelt?


----------



## mihe7 (9. Apr 2019)

Ja, du solltest auch *:443 bzw *:80 schreiben können.


----------



## blz (12. Apr 2019)

ok, ich habe das jetzt wie folgt in die bisher leere httpd-vhosts.conf eingetragen:


```
<VirtualHost 172.17.128.5:80>
    ServerName srvxampp
    DocumentRoot "C:/xampp/htdocs"
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/\.well-known/
    RewriteRule ^.* https://%{SERVER_NAME}:443 [R,L]
</VirtualHost>


<VirtualHost 172.17.128.5:443>
        ServerName srvxampp
        DocumentRoot "C:/xampp/htdocs"
        <Directory "C:/xampp/htdocs">
                <IfModule mod_ssl.c>
                        SSLRequireSSL
                </IfModule>
        </Directoy>
</VirtualHost>
```

Wenn ich den apache nun aber neustarten will, tut er das nicht mehr und bringt folgende Fehlermeldung:
17:50:43  [Apache]     Fehler: Apache wurde unerwartet beendet
17:50:43  [Apache]     Ursache könnte ein geblockter Port, fehlende Abhängigkeiten,
17:50:43  [Apache]     fehlende Berechtigungen, ein Absturz oder ein Abbruch einer anderen Methode sein.
17:50:43  [Apache]     Drücke den Logs Button um error logs zu sehen und prüfe
17:50:43  [Apache]     im Windows Event Viewer für weitere Hinweise
17:50:43  [Apache]     Wenn du weitere Hilfe benötigst, kopiere den kompletten Inhalt des Log Fensters
17:50:43  [Apache]     und füge ihn als Ergänzung in einem neuen Forum Eintrag hinzu.

ich habe die Adressen



			http://172.17.128.5:80
		



			https://172.17.128.5:443
		



			http://srvxampp
		



			https://srvxampp
		


alle im lokalen Browser ausprobiert, sie funktionieren!
Wenn ich die ursprüngliche vhosts Datei wieder hernehme, startet der Server auch wieder.


----------



## blz (12. Apr 2019)

und zweite Nachfrage:

was ist schlechter/anders, wenn ich einfach nur das Folgende in die vhosts eintrage (so funktioniert es nämlich):

<VirtualHost *:80>
    ServerName srvxampp
    DocumentRoot "C:/xampp/htdocs"
    Redirect / https://webadresse_von_außen.de:443
</VirtualHost>


----------



## mihe7 (13. Apr 2019)

Die Frage ist halt, welche IP-Adressen gebunden werden. Nur eine oder alle.


----------

