TYPO3: SSL Zertifikat in einer Multidomainumgebung

Angenommen man hat eine Typo3 Multidomainumgebung, welche die Domains kundenname1.de, kundenname2.de und kundenname3.de ohne ein SSL Zertifikat verwaltet, der Webserver selbst befindet sich hinter einem Loadbalancer, welcher die Anfragen intern entsprechend weitergibt. Nach außen Port 443, intern werden Anfragen über Port 80 verarbeitet.

Nun entscheidet der Kunde, dass die Domain kundenname3.de ein SSL Zertifikat erhalten muss. Das Zertifikat ist bereits auf dem Server eingerichtet, die Redirects im Webserver sind gesetzt, die Webserver-Konfiguration wurde angepasst und die BaseURL wurde für diese eine Domain für die Multidomainumgebung im Typo3 angepasst.

Auf einmal steht man dann vor dem folgenden Problem: Im Backend ist über SSL der Seitenbaum nicht mehr sichtbar. Das liegt an den folgenden fehlenden Einträgen in der LocalConfiguration.php.

'SYS' => array(
	'trustedHostsPattern' => '.*\\.kundendomain1|.kundendomain2|.kundendomain3\\.de:*',
	'reverseProxyIP' => '*.*.*.*',
	'reverseProxySSL' => '*',
),

Mit den Einträgen funktioniert nun auf jeden Fall mal das Backend mit SSL Zertifikat unter der Domain kundenname3.de – allerdings leiten die ersten Aufrufe der Domains im Frontend kundenname1.de und kundenname2.de jetzt auf SSL um. Somit werden die benötigten Sourcen wie z.B. CSS nicht korrekt ausgeliefert (das Zertifikat ist ja nicht für die Domain verfügbar), und die Webseiten ohne Zertifikat sehen aus wie … Kraut und Rüben. Alle weiteren Aufrufe, z.B. Klicks auf Unterseiten, sind jedoch kein Problem, da die baseURL weiterhin ohne SSL hinterlegt ist und den Links vorangestellt wird.

Um das zu umgehen kann man sich mit folgender Einstellung in der LocalConfiguration.php helfen.

ACHTUNG: Der Code sollte später in eine Extension ausgelagert werden, um ein Überschreiben durch Typo3 zu verhindern.

Noch vor dem „return“ fügt man folgende Zeilen php-Code ein:

$host = $_SERVER['HTTP_HOST'];
switch( $host ) {
	case 'kundenname1.de':
	case 'www.kundenname1.de':
	case 'kundenname2.de':
	case 'www.kundenname2.de':
		$reverseProxyIP = '';
		$reverseProxySSL = '';
		break;
	default:
		$reverseProxyIP = '*.*.*.*';
		$reverseProxySSL = '*';
		break;
}

Anschliessend werden die Einträge unter ‚SYS‘ angepasst.

'SYS' => array(
	'reverseProxyIP' => $reverseProxyIP,
	'reverseProxySSL' => $reverseProxySSL,
),

Mit dieser kleinen und einfachen Anpassung sollte nun sowohl das Typo3 Backend als auch das Frontend jeweils mit dem korrekten Protokoll ausgeliefert werden und funktionieren.

 

Und damit das Ganze in der LocalConfiguration.php dann auch nicht zufälligerweise von Typo3 aus Versehen überschrieben wird packt man die Konfiguration am allerbesten in die ext_localconf.php einer eigenen Extension.

$host = $_SERVER['HTTP_HOST'];
switch( $host ) {
	case 'kundenname1.de':
	case 'www.kundenname1.de':
	case 'kundenname2.de':
	case 'www.kundenname2.de':
        $reverseProxyIP = '';
        $reverseProxySSL = '';
        break;
    default:
        $reverseProxyIP = '*.*.*.*';
        $reverseProxySSL = '*';
        break;
}

$GLOBALS['TYPO3_CONF_VARS']['SYS']['reverseProxyIP'] = $reverseProxyIP;
$GLOBALS['TYPO3_CONF_VARS']['SYS']['reverseProxySSL'] = $reverseProxySSL;

 


Beitrag veröffentlicht

in

von

Schlagwörter: