ssl@apache2@suseLinux9.0Professional

Apache, Lighttpd, nginx, Cherokee
Post Reply
dialsc
Posts: 5
Joined: 2004-07-19 22:42
 

ssl@apache2@suseLinux9.0Professional

Post by dialsc »

hi@all,

also ich verzweifel noch...

ich versuch schon seit tagen den apache2 mittels ssl sicher zu machen. fuer entsprechende seiten zumindest. hab auf ihm schon ein paar vHosts definiert und das tut soweit auch ganz gut. fuer jeden vHost habe ich eine separate configDatei unter /etc/apache2/vhosts.d angelegt und somit die originale httpd.config im urspruenglichen zustand belassen.

nun moechte ich fuer einen dieser vHosts ssl aktivieren.
so sieht meine config fuer diesen vHost aus:

Code: Select all

<VirtualHost VHOST.MYDOMAIN.TLD>
    DocumentRoot "/srv/www/vhosts/VHOST.MYDOMAIN.TLD"
    ServerName VHOST.MYDOMAIN.TLD
    LogLevel warn
    TransferLog /var/log/apache2/vhosts_VHOST.MYDOMAIN.TLD.access_log
    Alias /MYWEBMAILAPP/ /ANY_PATH/MYWEBMAILAPP/
    Alias /MYWEBMAILAPP /ANY_PATH/MYWEBMAILAPP/
    Alias /MYSTATISTICAPP/ /ANY_PATH/VHOST.MYDOMAIN.TLD/
    Alias /MYSTATISTICAPP /ANY_PATH/VHOST.MYDOMAIN.TLD/
    <Directory "/">
        allow from all
        order allow,deny
    </Directory>
    ServerAdmin webmaster@MYDOMAIN.TLD
    ServerAlias VHOST
    SSLCipherSuite ALL:!ADH:!    EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCertificateFile /srv/openSSL/apache2/server.crt
    SSLCertificateKeyFile /srv/openSSL/apache2/server.key.unsecure
    SSLVerifyClient none
    SSLEngine on
</VirtualHost>
in /etc/sysconfig/apache2 habe ich dies eingetragen:

Code: Select all

APACHE_SERVER_FLAGS="-D SSL"
der apache laesst sich auch ohne zu mekern starten. alle vHosts sind erreichbar, bis auf den einen, fuer den ich die sslAktivierung versuche. dieser ist dann weder mittels http noch via https erreichbar. in der log taucht dann folgendes auf:

Code: Select all

[Mon Jul 19 22:53:43 2004] [error] [client 192.168.xxx.yyy] Invalid method in request x80Lx01x03
egal, welches tut ich versuche oder welche hilfeStellungen ich auch schon verfolgt habe, es will einfach nicht klappen.

kann mir vielleicht bitte jemand helfen?

thx in advance

dialsc
andreask2
Posts: 696
Joined: 2004-01-27 14:16
Location: Aachen
 

Re: ssl@apache2@suseLinux9.0Professional

Post by andreask2 »

Bedenke dass Du bei SSL keine Name-Based VHosts verwenden kannst, da der Apache sich für einen VHost entscheiden muss, bevor er das SSL-Paket entschlüsseln kann (denn der Pfad zum privaten Schlüssel steht ja erst in der VHost Konfiguration). Dummerweise steht der Hostname im HTTP-Header, der ja zu dem Zeitpunkt wie gesagt noch nicht lesbar ist. Also bleibt Dir nur ein IP-Based VHost, oder sowas wie

Code: Select all

 <VirtualHost _default_:443>
da Du ja nur einen SSL-VHost hast. Wenn Du mehrere willst, brauchst Du weitere IP-Adressen.

Siehe auch: http://httpd.apache.org/docs-2.0/vhosts/examples.html

Der nächste Punkt ist, dass Du HTTP und HTTPS zusammenlegst, und es so konfigurierst, dass der VHost nur auf HTTP-Anfragen reagiert, die darin enthaltenen Direktiven aber nur mit SSL funktioniert. Wenn Du jetzt per HTTP anfragst, funktioniert es zwar noch wunderbar mit dem Name-based VHost, dafür versucht er die SSL-Direktiven in Deiner Konfig anzuwenden, was mit einfachem HTTP natürlich nicht funktioniert. Daher vermutlich die Fehlermeldung.

Auch wenn HTTP und HTTPS auf denselben Inhalt zugreifen, brauchst Du wohl 2 VHosts, einen der auf Anfragen an Port 443 Deiner IP reagiert, und einen der auf bei HTTP, also Port 80 auf den Hostnamen reagiert.

Die restlichen Kapitel ist übrigens auch lesenswert: http://httpd.apache.org/docs-2.0/vhosts/


Grüße
Andreas
PS: Sagst Du dem Server auch dass er an Port 443(SSL) lauschen soll? -> Stichwort "Listen"
Last edited by andreask2 on 2004-07-19 23:50, edited 1 time in total.
dialsc
Posts: 5
Joined: 2004-07-19 22:42
 

Re: ssl@apache2@suseLinux9.0Professional

Post by dialsc »

hi Andreas,

also das mit dem weiteren vHost fuer die ip:443 werd ich gleich mal testen. ob eingestellt ist, dass der server an 443 lauschen soll, weiss ich grad gar ned... :roll: hab ich jedenfalls nicht aktiv konfiguriert.

vielleicht kannst du mir, waerend ich jetzt mal schaue, wie ich den weiteren vHost hinzu bekomme, nen kleinen tip geben, wo ich nach dieser einstellung schauen muss.

thx a lot

dialsc
andreask2
Posts: 696
Joined: 2004-01-27 14:16
Location: Aachen
 

Re: ssl@apache2@suseLinux9.0Professional

Post by andreask2 »

Das kommt auf die Konfiguration an, normalerweise in der httpd.conf.

Du kannst das prüfen, ob bei

Code: Select all

netstat -ant
der Port 443 auftaucht.
Last edited by andreask2 on 2004-07-19 23:56, edited 1 time in total.
dialsc
Posts: 5
Joined: 2004-07-19 22:42
 

Re: ssl@apache2@suseLinux9.0Professional

Post by dialsc »

ich verwende suse linux 9.0 professional.

hab gerade geschaut und fuer port 443 berichtet netstat:

Code: Select all

tcp        0      0 :::443                  :::*                    LISTEN
schaut doch eigentlich ganz gut aus, oder...!?
andreask2
Posts: 696
Joined: 2004-01-27 14:16
Location: Aachen
 

Re: ssl@apache2@suseLinux9.0Professional

Post by andreask2 »

dialsc wrote:hab gerade geschaut und fuer port 443 berichtet netstat:

Code: Select all

tcp        0      0 :::443                  :::*                    LISTEN
schaut doch eigentlich ganz gut aus, oder...!?
Hm, hast Du das jetzt "anonymisiert" oder sieht das bei Suse tatsächlich so aus? Aber ja, "LISTEN" sieht gut aus ;-)
dialsc
Posts: 5
Joined: 2004-07-19 22:42
 

Re: ssl@apache2@suseLinux9.0Professional

Post by dialsc »

okay,

habe nun einen weiteren vHost hinzugefuegt und wie folgt angelegt:

Code: Select all

<VirtualHost _default_:443>
DocumentRoot /srv/www/vhosts/MYDOMAIN.TLD
ServerName MYDOMAIN.TLD
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /srv/openSSL/apache2/server.crt
SSLCertificateKeyFile /srv/openSSL/apache2/server.key.unsecure
SSLVerifyClient none
SSLEngine on
</VirtualHost>
leider bekomme ich aber nach wie vor diese fehlermeldung:

Code: Select all

[Tue Jul 20 00:00:06 2004] [error] [client 192.168.xxxx.yyy] Invalid method in request x80Lx01x03
:cry:

was haelst du denn von der config?

vielleicht noch eine frage. sollte diese vHost als erster eingebunden werden oder nicht. momentan wird er naemlich als letzter eingebunden.
sollte doch aber klappen, da er ja der einzige ist, der auf port 443 lauscht, oder seh ich das falsch?
andreask2
Posts: 696
Joined: 2004-01-27 14:16
Location: Aachen
 

Re: ssl@apache2@suseLinux9.0Professional

Post by andreask2 »

dialsc wrote:was haelst du denn von der config?
Hm, das einzige was mir auf den ersten Blick auffällt, ist dass Du

Code: Select all

SSLEngine on
mal vor die anderen Direktiven stellen könntest. Hm, ich hatte noch nie solche Probleme mit SSL. Hast Du den Apachen auch neu gestartet?

Hier mal die Beispiel-Konfiguration für einen SSL-VHost aus dem Apache (1.3, sollte aber passen) Paket von Gentoo. Habe die auskommentierten Direktiven mit deren Kommentaren gelöscht.

Code: Select all

<IfModule mod_ssl.c>

<VirtualHost _default_:80>
  SSLEngine off
</VirtualHost>

##
## SSL Virtual Host Context
##

<VirtualHost _default_:443>

#  General setup for the virtual host
DocumentRoot /var/www/localhost/htdocs
#ServerName new.host.name
#ServerAdmin you@your.address
ErrorLog logs/ssl-error_log
TransferLog logs/ssl-access_log

#   SSL Engine Switch:
#   Enable/Disable SSL for this virtual host.
SSLEngine on

#   SSL Cipher Suite:
#   List the ciphers that the client is permitted to negotiate.
#   See the mod_ssl documentation for a complete list.
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

#   Server Certificate:
#   Point SSLCertificateFile at a PEM encoded certificate.  If
#   the certificate is encrypted, then you will be prompted for a
#   pass phrase.  Note that a kill -HUP will prompt again. A test
#   certificate can be generated with `make certificate' under
#   built time.
SSLCertificateFile conf/ssl/server.crt

#   Server Private Key:
#   If the key is not combined with the certificate, use this
#   directive to point at the key file.
SSLCertificateKeyFile conf/ssl/server.key

#   Notice: Most problems of broken clients are also related to the HTTP
#   keep-alive facility, so you usually additionally want to disable
#   keep-alive for those clients, too. Use variable "nokeepalive" for this.
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown

#   Per-Server Logging:
#   The home of a custom SSL log file. Use this when you want a
#   compact non-error SSL logfile on a virtual host basis.
CustomLog logs/ssl_request_log 
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"

</VirtualHost>

</IfModule>
vielleicht noch eine frage. sollte diese vHost als erster eingebunden werden oder nicht. momentan wird er naemlich als letzter eingebunden.
sollte doch aber klappen, da er ja der einzige ist, der auf port 443 lauscht, oder seh ich das falsch?
Hm ich denke das ist egal, ich binde das ganze Verzeichnis ein, ohne spezielle Reihenfolge...
dialsc
Posts: 5
Joined: 2004-07-19 22:42
 

Re: ssl@apache2@suseLinux9.0Professional

Post by dialsc »

nun, werd gleich mal einen abgleich vornehmen.

etwas interessantes habe ich nun aber in der zwischenzeit herausgefunden.

beinhaltet die config fuer den sslVHost folgendest statement:

Code: Select all

<IfDefine SSL>
so wird dieser vHost erst gar nicht beim laden mit eingebunden. ergo => SSL scheint mir nicht defined zu sein. vielleicht nen plan, wo ich das machen kann. eigentlich dachte ich, ich haette das schon in der /etc/sysconfig/apache2 mittels

Code: Select all

APACHE_SERVER_FLAGS="-D SSL"
getan, scheint aber nicht so zu sein.

zur sicherheit mach ich jetzt auch alle faelle mal einen reboot...
(altes $msKind :-D)
Post Reply