• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

[10.12 Sierra] Server.app Apache: TLS Version ändern

Ijon Tichy

Clairgeau
Registriert
21.11.06
Beiträge
3.690
Ich bin am Verzweifeln. Ich habe irgendwann mal aus Gründen TLS 1.0 und 1.1 im Apache-Webserver der Server.app aktiviert. Wie genau, weiß ich leider nicht mehr. Ich habe die conf-Dateien angepasst und weiß noch, dass das ein rechtes Gepfriemel war, weil die Server.app sich immer eingemsicht hat.

Nun habe ich dasselbe Problem wieder, habe mir aber nirgends notiert wie ich gelöst hatte. Ich entferne in allen Apache-Konfigurationen TLS 1.0 und TLS 1.1, indem ich überall

Code:
SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2

durch

Code:
SSLProtocol -all +TLSv1.2

ersetze, was auch nachweislich funktioniert – eine anschließende Suche in allen Dateien findet 'TLSv1.1' nicht mehr.

Wenn ich teste, sehe ich aber dass weiterhin TLS 1.0 und TLS 1.1 verwendet wird. Wenn ich in der Server.app die Konfiguration einer Website ändere, sind anschließend meine Änderungen in den Konfigurationsdateien wieder zurückgesetzt.

Was ich schon versucht habe:

  • Vor der Änderung den Webserver deaktivieren (serveradmin stop web oder in der Server.app), danach wieder starten --> erfolglos
  • Vor der Änderung den Webserver deaktivieren und die Server.app beendet --> wie erwartet kein Unterschied
  • Vor der Änderung den Webserver deaktivieren und den Server komplett neu starten --> auch das ist erfolglos
Wenn man mit serveradmin stop web den Serber stoppt, laufen weiterhin zahlreiche httpd-Prozesse, sodass der Stop wohl nicht wirklich den ganzen Apache beendet. Das dürfte das Problem sein, aber wie löse ich es?

@Wuchtbrumme ? :)

Ergänzung

Auf diesen Beitrag bei Stackexchange hin habe ich nun auch folgendes probiert:
  1. sudo serveradmin stop web
  2. sudo launchctl unload -w /Applications/Server.app/Contents/ServerRoot/System/Library/LaunchDaemons/com.apple.server.httpd.plist
  3. sudo launchctl unload -w /Applications/Server.app/Contents/ServerRoot/System/Library/LaunchDaemons/com.apple.serviceproxy.plist
  4. TLS 1.0 und TLS 1.1 in den Config-Files entfernt
  5. Config-Files geprüft: ok
  6. sudo launchctl load -w /Applications/Server.app/Contents/ServerRoot/System/Library/LaunchDaemons/com.apple.serviceproxy.plist
  7. sudo launchctl load -w /Applications/Server.app/Contents/ServerRoot/System/Library/LaunchDaemons/com.apple.server.httpd.plist
  8. Config-Files geprüft: ok
  9. Test mit openssl s_client: TLS 1.1 funktioniert weiterhin – WTF!? :(
  10. Config-Files geprüft: ok
  11. sudo serveradmin start web
  12. Config-Files geprüft: ok
  13. Kleine Änderung in der Server.app an einer Website (.htaccess ein/ausschalten)
  14. Config-Files geprüft: TLS 1.0 und TLS 1.1 sind wieder drin!
Wo zum Kuckuck wird das immer hergenommen?
 
Zuletzt bearbeitet:

Wuchtbrumme

Golden Noble
Registriert
03.05.10
Beiträge
21.493
serveradmin settings ?

 

Wuchtbrumme

Golden Noble
Registriert
03.05.10
Beiträge
21.493
ok, schade. Ich dachte, dass man die Zertifikate in der Server.app global setzt und hätte gehofft, dass das TLS-Protokoll sich in den Settings versteckt.

Du benutzt den Webserver von macOS Server.app oder bestand Dein Workaround darin, eine extra Apache2-Instanz zu installieren? Oder Du hast zumindest mod_ssl ausgetauscht?
 

Ijon Tichy

Clairgeau
Registriert
21.11.06
Beiträge
3.690
Ich hab die Lösung anscheinend gefunden....

Zu erst einmal ist bzgl. SSL/TLS nur relevant was in /Library/Server/Web/Config/Proxy/apache_serviceproxy.conf konfiguriert ist. Diese Datei wird vom Proxy (/Applications/Server.app/Contents/ServerRoot/System/Library/LaunchDaemons/com.apple.serviceproxy.plist) gelesen, der unabhängig vom eigentlichen Webserver gestartet wird. Diese Datei wird offensichtlich auch nicht zurückgesetzt, wenn man in der Server-App etwas ändert, d.h. da stand drin was sollte:
Code:
SSLProtocol -all +TLSv1.2

Wenn ich aber mit testssl.sh getestet habe, ob auch wirklich nur TLS 1.2 möglich ist, war leider weiterhin trotzdem TLS 1.0 und 1.1 aktiviert.

Das wiederum liegt offensichtlich an einem Bug in Apache, der dazu führt, dass TLS 1.0 und 1.1 weiterhin aktiviert bleibt, solange Verschlüsselungsverfahren aktiv sind, die es in TLS 1.2 nicht mehr gibt. Entfernt man diese Chiffren, dann funktioniert es plötzlich. Ich habe also nur noch die aktuell empfohlenen Chiffren aktiviert, das sieht dann so aus:
Code:
<IfModule mod_ssl.c>
   SSLEngine On
   SSLCertificateFile "/etc/certificates/${CERT_ID}.cert.pem"
   SSLCertificateKeyFile "/etc/certificates/${CERT_ID}.key.pem"
   SSLCertificateChainFile "/etc/certificates/${CERT_ID}.chain.pem"
   SSLCipherSuite ALL:+HIGH:!ADH:!EXP:!SSLv2:!SSLv3:!MEDIUM:!LOW:!NULL:!aNULL
   SSLProtocol -all +TLSv1.2
   SSLHonorCipherOrder on
   SSLProxyEngine On
   SSLProxyProtocol -all +TLSv1.2
   SSLProxyCheckPeerCN off
   SSLProxyCheckPeerName off
</IfModule>

Ich habe das an allen ähnlichen Stellen in /Library/Server/Web/Config/Proxy/apache_serviceproxy.conf so gemacht. Ob das notwendig ist, weiß ich nicht, aber ich hatte auch keine Lust mehr, das auszuprobieren.

Nun berichtet testssl.sh, dass TLS 1.0 und 1.1 nicht mehr vom Server angeboten werden.

Bei einer Änderung mit der Server-App wird die Konfiguration in der Webserver-Konfiguration zwar trotzdem wieder überschrieben, aber das scheint tatsächlich völlig wurscht zu sein, da testssl.sh weiterhin bestätigt, dass TLS 1.0 und 1.1 nicht mehr angeboten werden. Das ganze SSL/TLS-Handling wird ja eh vom Proxy gemacht.

Puh!
 
  • Like
Reaktionen: Wuchtbrumme

Wuchtbrumme

Golden Noble
Registriert
03.05.10
Beiträge
21.493
wenn man bedenkt, wieviele und wieviele gravierende relevante Sicherheitslücke diese alte Software hat, dann ist ein TLSv1.2 quasi wie ein Feigenblatt auf einem sehr grossen Haufen…
 

Ijon Tichy

Clairgeau
Registriert
21.11.06
Beiträge
3.690
Bei einem Zugriff übers Internet würde ich den Server auch schon lange nicht mehr verwenden.

Ein aktueller SSL-Test bescheinigt dem Webserver aber zumindest nun einwandfreie Sicherheit. Keine Vulnerabilities gefunden.
ok, schade. Ich dachte, dass man die Zertifikate in der Server.app global setzt und hätte gehofft, dass das TLS-Protokoll sich in den Settings versteckt.

Du benutzt den Webserver von macOS Server.app oder bestand Dein Workaround darin, eine extra Apache2-Instanz zu installieren? Oder Du hast zumindest mod_ssl ausgetauscht?
Bezüglich der Zertifikate stimmt das, aber die TLS-Version kann man in der Server-App leider nirgends konfigurieren. Normalerweise nimmt man das ja so wie vorkonfiguriert.

Ich nehme den "eingebauten" Webserver, wobei er aber eigentlich nur als SSL-Proxy für ein paar Anwendungen verwendet wird.

Der Proxy wird irgendwann durch einen Nginx ersetzt, OpenDirectory durch einen OpenLDAP und der DNS-Server durch BIND9 usw., aber solange es läuft, besteht ja kein dringender Bedarf..... ;)
 

Wuchtbrumme

Golden Noble
Registriert
03.05.10
Beiträge
21.493
Proxy wird irgendwann durch einen Nginx ersetzt, OpenDirectory durch einen OpenLDAP und der DNS-Server durch BIND9 usw., aber solange es läuft, besteht ja kein dringender Bedarf..... ;)

so ähnlich wie bei mir. Läuft, und solange es das tut, nehme ich‘s mit. Aber ich habe beim Mailserver einen Bug, der die VM sich RAM- und festplattenseitig aufblähen lässt. Muss also zumindest das mal auf Linux migrieren.
 

Ijon Tichy

Clairgeau
Registriert
21.11.06
Beiträge
3.690
Den Mailserver benutze ich nur marginal, nämlich nur zum Versenden lokaler Benachrichtigungsmails in Kombination mit einem sehr simplen Verschlüsselungsscript. Da gibt's keine Probleme.