ubuntuusers.de

Apache2/SSL - Meldung: ssl_error_rx_record_too_long

Status: Gelöst | Ubuntu-Version: Xubuntu 7.10 (Gutsy Gibbon)
Antworten |

vigidr

(Themenstarter)
Avatar von vigidr

Anmeldungsdatum:
22. Januar 2008

Beiträge: 198

melc schrieb:

Diese Konfiguration läuft bei dir ohne Warnungen?

sudo apache2ctl configtest

Ja.

Hast du noch weitere Virtualhosts definiert?

Nein.

Und hängt dein Server direkt am Internet oder hinter einem Router?

Hinter einem Router. Portweiterleitung ist aber entsprechend eingerichtet.

melc

Anmeldungsdatum:
28. Dezember 2008

Beiträge: 181

Wohnort: Karlsruhe

Falls das Problem noch besteht eine verspätete Rückmeldung:

Dass die Konfiguration aus dem letzten Beitrag fehlerfrei akzeptiert wird kann nicht sein, dann müssen an anderer Stelle noch weitere VirtualHost- oder NameVirtualHost-Angaben stehen. Welche Version von Apache verwendest du?

sudo apachectl -v

Zu den Einträgen in /etc/apache2/sites-enabled/:

1. default bzw der erste Virtualhost in der Liste

  • Füge in den ersten beiden beiden Zeilen den Port hinzu, da dieser Virtualhost anscheinend nur unverschlüsselt erreichbar sein soll: NameVirtualHost * durch NameVirtualHost *:80 sowie <VirtualHost *> durch <VirtualHost *:80> ersetzen.

2. cdb bzw der zweite Virtualhost in der Liste

  • Wenn der Server hinter einem Router steht kann er nicht über die Dyndns-Adresse verfügen, da dies wohl eine externe, im Internet erreichbare Adresse ist. NameVirtualHost [DynDNS-Adresse] ergibt daher keinen Sinn, der Server kann nicht auf Schnittstellen, die er nicht hat, Virtualhosts anbieten. Zeile löschen.

  • <VirtualHost *> wie oben durch <VirtualHost *:80> ersetzen.

  • LogLevel würde ich im Allgemeinen nicht höher als warn stellen.

3. ssl bzw der dritte Virtualhost in der Liste

  • NameVirtualHost * durch NameVirtualHost *:443 ersetzen.

  • Bei ServerName den Namen eintragen, unter welcher dieser verschlüsselte Virtualhost erreichbar sein soll, also zB die Dyndns-Adresse. Wenn der Virtualhost auch noch unter einem internen Namen ansprechbar sein soll, dann diesen unter ServerAlias eintragen.

Nach den Änderungen nochmal sudo apachectl configtest aufrufen, prüfen dass es keine Fehler gibt und dann Apache neustarten (kein reload). Wenn das immer noch nicht hilft, zeig bitte die Ausgabe von

grep -R "NameVirtualHost" /etc/apache/
grep -REh "^SSL" /etc/apache2/mods-enabled/

sowie nochmal das Ergebnis der Änderungen der Virtualhosts

cat /etc/apache2/sites-enabled/*

vigidr

(Themenstarter)
Avatar von vigidr

Anmeldungsdatum:
22. Januar 2008

Beiträge: 198

melc schrieb:

Falls das Problem noch besteht eine verspätete Rückmeldung:

Dass die Konfiguration aus dem letzten Beitrag fehlerfrei akzeptiert wird kann nicht sein, dann müssen an anderer Stelle noch weitere VirtualHost- oder NameVirtualHost-Angaben stehen. Welche Version von Apache verwendest du?

Server version: Apache/2.2.4 (Ubuntu)
Server built:   Feb  4 2008 20:30:42

Kann sein, dass ich beim Anonymisieren der Daten Tippfehler hatte. Ich werd' das nochmal pruefen.

Zu den Einträgen in /etc/apache2/sites-enabled/:

1. default bzw der erste Virtualhost in der Liste

  • Füge in den ersten beiden beiden Zeilen den Port hinzu, da dieser Virtualhost anscheinend nur unverschlüsselt erreichbar sein soll: NameVirtualHost * durch NameVirtualHost *:80 sowie <VirtualHost *> durch <VirtualHost *:80> ersetzen.

2. cdb bzw der zweite Virtualhost in der Liste

  • Wenn der Server hinter einem Router steht kann er nicht über die Dyndns-Adresse verfügen, da dies wohl eine externe, im Internet erreichbare Adresse ist. NameVirtualHost [DynDNS-Adresse] ergibt daher keinen Sinn, der Server kann nicht auf Schnittstellen, die er nicht hat, Virtualhosts anbieten. Zeile löschen.

  • <VirtualHost *> wie oben durch <VirtualHost *:80> ersetzen.

Wenn ich beide auf *:80 setze, weiss Apache doch nicht, welcher Ordner nun angesprochen werden soll. cdb laeuft als eigene Subdomain, das funktioniert wunderbar: Wenn ich cdb.meinedyndns-adresse eintippe, ruft er diesen Host auf. Wenn ich nur die DynDNS-Adresse aufrufe, wird der erste Host (default) angesprochen. Das war auch der Sinn. Wie kann ich denn sonst eine Subdomain als Host verwalten lassen? Funktioniert beispielsweise cdb.*:80?

Zu den anderen Sachen: Melde mich zurueck, wenn ich das getestet habe. Bis dahin: Danke fuer die Tipps.

vigidr

(Themenstarter)
Avatar von vigidr

Anmeldungsdatum:
22. Januar 2008

Beiträge: 198

Und es funktioniert! Zwar meckert Firefox, dass das Zertifikat einer anderen Webpraesenz gehoeren solle, aber ich kann ja eine Ausnahme hinzufuegen.

Vielen Dank.

Hier nun die korrekt auszufuehrende Konfigurationen (anonymisiert):

NameVirtualHost *:80
<VirtualHost *:80>
	ServerAdmin webmaster@localhost
	ServerName localhost
	
	DocumentRoot /var/www/
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/www/>
		Options FollowSymLinks MultiViews
		AllowOverride All
		Order allow,deny
		allow from all
		# This directive allows us to have apache2's default start page
                # in /apache2-default/, but still have / go to the right place
                #RedirectMatch ^/$ /apache2-default/
	</Directory>

	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
	<Directory "/usr/lib/cgi-bin">
		AllowOverride None
		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
		Order allow,deny
		Allow from all
	</Directory>

	ErrorLog /var/log/apache2/error.log

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn

	CustomLog /var/log/apache2/access.log combined
	ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>
NameVirtualHost cdb.dyndnsadresse:80
<VirtualHost cdb.dyndnsadresse:80>
	ServerAdmin webmaster@localhost
	ServerName localhost
	
	DocumentRoot /var/anderer-ordner/
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/cdb-web/>
		Options FollowSymLinks MultiViews
		AllowOverride All
		Order allow,deny
		allow from all
		# This directive allows us to have apache2's default start page
                # in /apache2-default/, but still have / go to the right place
                #RedirectMatch ^/$ /apache2-default/
	</Directory>

	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
	<Directory "/usr/lib/cgi-bin">
		AllowOverride None
		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
		Order allow,deny
		Allow from all
	</Directory>

	ErrorLog /var/log/apache2/error.log

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn

	CustomLog /var/log/apache2/access.log combined
	ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>
NameVirtualHost *:443
<VirtualHost *:443>
	ServerAdmin webmaster@localhost
	ServerName localhost
	SSLEngine On
	SSLCertificateFile /etc/apache2/ssl/apache.pem
	DocumentRoot /var/anderer-ordner/
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/cdb-web/>
		Options FollowSymLinks MultiViews
		AllowOverride All
		Order allow,deny
		allow from all
		# This directive allows us to have apache2's default start page
                # in /apache2-default/, but still have / go to the right place
                #RedirectMatch ^/$ /apache2-default/
	</Directory>

	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
	<Directory "/usr/lib/cgi-bin">
		AllowOverride None
		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
		Order allow,deny
		Allow from all
	</Directory>

	ErrorLog /var/log/apache2/error.log

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn

	CustomLog /var/log/apache2/access.log combined
	ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

xabbuh Team-Icon

Anmeldungsdatum:
25. Mai 2006

Beiträge: 6411

NameVirtualHost *:443 kannst du auch noch rausschmeißen.

melc

Anmeldungsdatum:
28. Dezember 2008

Beiträge: 181

Wohnort: Karlsruhe

vigidr schrieb:

Wenn ich beide auf *:80 setze, weiss Apache doch nicht, welcher Ordner nun angesprochen werden soll. cdb laeuft als eigene Subdomain, das funktioniert wunderbar: Wenn ich cdb.meinedyndns-adresse eintippe, ruft er diesen Host auf. Wenn ich nur die DynDNS-Adresse aufrufe, wird der erste Host (default) angesprochen. Das war auch der Sinn. Wie kann ich denn sonst eine Subdomain als Host verwalten lassen? Funktioniert beispielsweise cdb.*:80?

Du hast das Virtualhost-Konzept nicht ganz verstanden. Siehe http://httpd.apache.org/docs/2.2/en/vhosts/

  • NameVirtualHost definiert IP-Adressen und optional Ports über die mehrere Webseiten erreichbar sein sollen. Mit der Angabe NameVirtualHost 10.1.1.1:80 wird Apache beispielsweise mitgeteilt, dass bei allen Anfragen, die über die Netzkarte mit der IP-Adresse 10.1.1.1 und den Port 80 reinkommen, erstmal geschaut werden soll an welchen Virtualhost sie gerichtet sind und sie dann entsprechend zugestellt werden. Der * ist dabei wie üblich ein Platzhalter, damit sind alle vorhandenen IP-Adressen gemeint.

  • Mit dem <VirtualHost>-Befehl können nun ein oder mehrere Virtualhosts angelegt werden, die über die oben angegebenen IP-Adressen und Ports erreichbar sein sollen. Deswegen ist es wichtig, dass die hier definierte Adresse vorher bei NameVirtualHost angegeben wurde. Im Beispiel also <VirtualHost 10.1.1.1:80> ... </VirtualHost>. Würde hier eine IP-Adresse angegeben werden, die bei keinem NameVirtualHost-Eintrag auftaucht, wüsste Apache überhaupt nicht, dass unter dieser IP-Adresse mehrere Virtualhosts verfügar sind.

  • In jedem der <VirtualHost>-Container gibt man mit Hilfe von ServerName und ServerAlias an, für welche Adressen dieser VirtualHost zuständig ist.

Ein einfaches, auf die Virtualhost-Angaben beschränktes Beispiel:

# Über die Adresse 10.1.1.1:80 sind mehrere Webseiten erreichbar
NameVirtualHost 10.1.1.1:80

# Die erste unter dieser IP-Adresse erreichbare Webseite
<VirtualHost 10.1.1.1:80>
  # Dieser Virtualhost soll unter dem Namen example.com erreichbar sein
  ServerName example.com
  DocumentRoot /var/www/1/
</VirtualHost>

# Die zweite unter dieser IP-Adresse erreichbare Webseite
<VirtualHost 10.1.1.1:80>
  # Diese Virtualhost soll unter den Namen example.net und www.example.net erreichbar sein
  ServerName example.net
  ServerAlias www.example.net
  DocumentRoot /var/www/2/
</VirtualHost>

Statt 10.1.1.1 könnte man auch jeweils einen * angeben, dann würden alle Anfragen auf Port 80, egal über welche IP-Adresse sie reinkommen, an die Virtualhosts geleitet werden.

Dass in deiner Konfiguration ein NameVirtualHost für die IP-Adresse von cdb.dyndnsadresse angelegt wird, ergibt daher keinen Sinn, da der Server solch eine IP-Adresse gar nicht hat, sondern nur interne. Richtig wäre:

<VirtualHost *:80>
  ServerName cdb.dyndnsadresse
  ...

vigidr

(Themenstarter)
Avatar von vigidr

Anmeldungsdatum:
22. Januar 2008

Beiträge: 198

Ah gut, dann verstehe ich das. Danke. Werd' ich gleich mal anpassen.

Antworten |