PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SUSE 9.3 Webserver & SSL



PhoenixDH
29.08.2005, 10:40
Möchte meinen Webserver per SSL Verschlüsseln !
Jetzt hab ich mir mit:


openssl genrsa -out server.key -des3 1024

einen privaten Schlüssel erzeugt, welcher in /etc/apache2/ssl.key liegt !

Des weiteren das Zertifikat mit


openssl req -new -key server.key -out server.csr

welches in /etc/apache2/ssl.csr liegt !

In meiner httpd.conf habe ich gelesen, das die ssl-global.conf meine Konfigurationsdatei für SSL ist, jedoch hab ich keinen blassen Schimmer was da eintragen !

Aber zunächst mal die Frage, stimmt das so mit dem Schlüssepaar ?

PhoenixDH
29.08.2005, 13:17
So, hab nun ein paar Infos mehr gesammelt:

Habe in der listen.conf noch


Listen 443

eingefügt !

Ebenso hab ich mir in /etc/apache2/vhosts.d/ eine Datei namens sssl.conf erstellt mit folgendem Inhalt:


<IfDefine SSL>
<IfDefine !NOSSL>

##
## SSL Virtual Host Context
##

<VirtualHost _default_:443>

# General setup for the virtual host
DocumentRoot "/srv/www/htdocs"
ServerName 127.0.0.1:443
#ServerAdmin webmaster@example.com
ErrorLog /var/log/apache2/error_log
TransferLog /var/log/apache2/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:+SSL v2:+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. Keep
# in mind that if you have both an RSA and a DSA certificate you
# can configure both in parallel (to also allow the use of DSA
# ciphers, etc.)
SSLCertificateFile /etc/apache2/ssl.crt/server.crt
#SSLCertificateFile /etc/apache2/ssl.crt/server-dsa.crt

# Server Private Key:
# If the key is not combined with the certificate, use this
# directive to point at the key file. Keep in mind that if
# you've both a RSA and a DSA private key you can configure
# both in parallel (to also allow the use of DSA ciphers, etc.)
SSLCertificateKeyFile /etc/apache2/ssl.key/server.key
#SSLCertificateKeyFile /etc/apache2/ssl.key/server-dsa.key

# Server Certificate Chain:
# Point SSLCertificateChainFile at a file containing the
# concatenation of PEM encoded CA certificates which form the
# certificate chain for the server certificate. Alternatively
# the referenced file can be the same as SSLCertificateFile
# when the CA certificates are directly appended to the server
# certificate for convinience.
#SSLCertificateChainFile /etc/apache2/ssl.crt/ca.crt

# Certificate Authority (CA):
# Set the CA certificate verification path where to find CA
# certificates for client authentication or alternatively one
# huge file containing all of them (file must be PEM encoded)
# Note: Inside SSLCACertificatePath you need hash symlinks
# to point to the certificate files. Use the provided
# Makefile to update the hash symlinks after changes.
#SSLCACertificatePath /etc/apache2/ssl.crt
#SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle.crt

# Certificate Revocation Lists (CRL):
# Set the CA revocation path where to find CA CRLs for client
# authentication or alternatively one huge file containing all
# of them (file must be PEM encoded)
# Note: Inside SSLCARevocationPath you need hash symlinks
# to point to the certificate files. Use the provided
# Makefile to update the hash symlinks after changes.
#SSLCARevocationPath /etc/apache2/ssl.crl
#SSLCARevocationFile /etc/apache2/ssl.crl/ca-bundle.crl

# Client Authentication (Type):
# Client certificate verification type and depth. Types are
# none, optional, require and optional_no_ca. Depth is a
# number which specifies how deeply to verify the certificate
# issuer chain before deciding the certificate is not valid.
#SSLVerifyClient require
#SSLVerifyDepth 10

# Access Control:
# With SSLRequire you can do per-directory access control based
# on arbitrary complex boolean expressions containing server
# variable checks and other lookup directives. The syntax is a
# mixture between C and Perl. See the mod_ssl documentation
# for more details.
#<Location />
#SSLRequire ( %{SSL_CIPHER} !~ m/^(EXP|NULL)/ \
# and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \
# and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \
# and %{TIME_WDAY} >= 1 and %{TIME_WDAY} <= 5 \
# and %{TIME_HOUR} >= 8 and %{TIME_HOUR} <= 20 ) \
# or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/
#</Location>

# SSL Engine Options:
# Set various options for the SSL engine.
# o FakeBasicAuth:
# Translate the client X.509 into a Basic Authorisation. This means that
# the standard Auth/DBMAuth methods can be used for access control. The
# user name is the `one line' version of the client's X.509 certificate.
# Note that no password is obtained from the user. Every entry in the user
# file needs this password: `xxj31ZMTZzkVA'.
# o ExportCertData:
# This exports two additional environment variables: SSL_CLIENT_CERT and
# SSL_SERVER_CERT. These contain the PEM-encoded certificates of the
# server (always existing) and the client (only existing when client
# authentication is used). This can be used to import the certificates
# into CGI scripts.
# o StdEnvVars:
# This exports the standard SSL/TLS related `SSL_*' environment variables.
# Per default this exportation is switched off for performance reasons,
# because the extraction step is an expensive operation and is usually
# useless for serving static content. So one usually enables the
# exportation for CGI and SSI requests only.
# o CompatEnvVars:
# This exports obsolete environment variables for backward compatibility
# to Apache-SSL 1.x, mod_ssl 2.0.x, Sioux 1.0 and Stronghold 2.x. Use this
# to provide compatibility to existing CGI scripts.
# o StrictRequire:
# This denies access when "SSLRequireSSL" or "SSLRequire" applied even
# under a "Satisfy any" situation, i.e. when it applies access is denied
# and no other module can change it.
# o OptRenegotiate:
# This enables optimized SSL connection renegotiation handling when SSL
# directives are used in per-directory context.
#SSLOptions +FakeBasicAuth +ExportCertData +CompatEnvVars +StrictRequire
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars
</Files>
<Directory "/srv/www/cgi-bin">
SSLOptions +StdEnvVars
</Directory>

# SSL Protocol Adjustments:
# The safe and default but still SSL/TLS standard compliant shutdown
# approach is that mod_ssl sends the close notify alert but doesn't wait for
# the close notify alert from client. When you need a different shutdown
# approach you can use one of the following variables:
# o ssl-unclean-shutdown:
# This forces an unclean shutdown when the connection is closed, i.e. no
# SSL close notify alert is send or allowed to received. This violates
# the SSL/TLS standard but is needed for some brain-dead browsers. Use
# this when you receive I/O errors because of the standard approach where
# mod_ssl sends the close notify alert.
# o ssl-accurate-shutdown:
# This forces an accurate shutdown when the connection is closed, i.e. a
# SSL close notify alert is send and mod_ssl waits for the close notify
# alert of the client. This is 100% SSL/TLS standard compliant, but in
# practice often causes hanging connections with brain-dead browsers. Use
# this only for browsers where you know that their SSL implementation
# works correctly.
# 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.
# Similarly, one has to force some clients to use HTTP/1.0 to workaround
# their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and
# "force-response-1.0" for this.
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0

# 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 /var/log/apache2/ssl_request_log ssl_combined

</VirtualHost>

</IfDefine>
</IfDefine>


aber irgendwie kommt wenn ich https://127.0.0.1/index.shtml aufrufen möchte nur die Meldung:


Beim Laden von https://127.0.0.1/index.shtml ist folgender Fehler aufgetreten:
Keine Verbindung zu Rechner 127.0.0.1.


Also denke ich mir ist ssl nicht aktiviert oder ?

khs
29.08.2005, 13:54
ServerName 127.0.0.1:443

[...]

Also denke ich mir ist ssl nicht aktiviert oder ?

Das muesste sich anhand der Logdateien nachvollziehen lassen.
Hast du den Apatschen neu gestartet, nachdem du die Modifikationen gemacht hast? Wie startest du ihn? Aktiviert das Start-Skript ssl automatisch? Bei apachectl gibt es die Option sslstart.
Was passiert bei "telnet localhost 443"?
Wenn das noch nicht zielfuehrend war, stell die Logdateien des SSL-Virtualhosts mal auf separate Dateien, damit das das besser trennen kannst.
Und, deshalb hab ich die Option oben gequotet: versuchs mal ohne die. ServerName is immer so ne Sache, blick da auch manchmal nicht mehr ganz durch. Bei nur einem VirtualHost gehts aber auch ohne.

-khs

PhoenixDH
29.08.2005, 14:05
Also ich hahb schon mehrere Neustarts gemacht nachdem ich was geändert habe !

Also bei sslstart kommt command unknown !

Wo sehe ich ob ssl gestartet ist ? Bzw. wie kann ich es noch per Hand starten, es handelt sich um openssl !

Bei nem telnet passiert folgendes:


<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Authorization Required</title>
</head><body>
<h1>Authorization Required</h1>
<p>This server could not verify that you
are authorized to access the document
requested. Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.</p>
<p>Additionally, a 401 Authorization Required
error was encountered while trying to use an ErrorDocument to handle the request.</p>
<hr>
<address>Apache/2.0.53 (Linux/SUSE) Server at fire Port 80</address>
</body></html>
Connection closed by foreign host.


Hab den versucht mit Hand zu starten, dann kam auch keine Fehlermeldung, hab nen Befehl gefunden ! Auch wenn ich die confic Files checken lasse, sagt er Syntax OK !

Aber wenn ich mir die compilierten Module anzeigen lasswe habe ich nur folgende, aber ssl fehlt !


Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c


Wie bekomme ich das da rein ?

damager
29.08.2005, 15:41
mod_ssl.so ist ein dynamisch ladbares apache-modul.
diese kann mit der anweisung:
LoadModule ssl_module modules/mod_ssl.so
in der konfiguration mitgeladen werden beim neustart des apaches.
dieser ist die grundvorausetzung um ssl damit machen zu können.

aber deine telnet-ausgabe, sollte dir wirklich auf port 443 gehen, zeigt das ssl schon läuft. :think:

PhoenixDH
30.08.2005, 07:11
An was könnte das dann liegen das ich mit dem Browser keine Verbindung bekomme ?

damager
30.08.2005, 08:30
mit welchen browser hast es versucht?
mozilla hat mal in irgendeiner konstelation ein problem mit localhost....das ist aber schon ne zeitlamg her und kann mich auch nicht mehr erinnern woran das lag.

mal nen anderen browser probiert?
dein server hat ja sicher auch ne statische ip-adresse oder?

PhoenixDH
30.08.2005, 08:45
ja, server hat ne statische ip, ich probiere das immer am Server direkt, also über die 127.0.0.1 !
In anderen Browsern geht es auch net, Port 443 ist eingetragen als listen Port und Firewall ist aus !

damager
30.08.2005, 09:08
mich wunder wie gesagt die ausgabe vom telnet localhost 443 (vorschlag von KHS).
der bekommt ja definitiv eine antwort :think:

was sagt den netstat -a?
dort müsste ssl oder 443 als LISTEN oder sogar ESTABLISHED angezeigt werden wenn der server tatsächlich ssl macht.

PhoenixDH
30.08.2005, 09:22
Da is drin:


tcp 0 0 *:https *:* LISTEN


also hört er auf den Port ! Aber ich bin hier bald am verzweifeln !

damager
30.08.2005, 15:35
ja, dann hört da https und wartet auf anfragen ...was auch die telnet ausgabe bestätigen würden.
firewall kann's auch nicht sein ... dann würde ja telnet auch nicht gehen.

:think:
sorry...aber im moment fällt mir nicht mehr dazu ein.
falls mir noch was einfällt schreiebe ich es hier. falls du es löst schreib auch was ... würde mich interessieren :]

khs
30.08.2005, 20:04
was auch die telnet ausgabe bestätigen würden.


Wobei ich mir gar nicht sicher bin, ob die Ausgabe auf Port 443 nicht verschluesselt sein sollte anstatt in plaintext.

Mein Apatsche ist immer noch 1.3, wie ssl in die 2.0 kommt, weiss ich nicht, aber LoadModule und AddModule koennen eigentlich nicht so anders heissen...
Beim 1.3er zeigt http://server.dom/server-info die verwendeten Module an. Beim 2.0 auch?

-khs

-khs

PhoenixDH
31.08.2005, 06:58
Nein macht er nicht !

Hm, dann werd ich es wohl aufgeben müssen !

Gibts nirgends ne schöne Doku ?

damager
31.08.2005, 07:38
kennst du google (http://www.google.de/search?sourceid=mozclient&scoring=d&ie=utf-8&oe=utf-8&q=apache+ssl+howto) ? :D
es gibt massenhaft doku zu apache + ssl. die frage ist was ist eine "schöne" doku? :headup:

PhoenixDH
31.08.2005, 08:01
LOL !!!

Nachdem meine Finger und Zehen nicht mehr gereicht haben um mitzuzählen, wie oft ich in Google schon gesucht habe, habe ich aufgehört mitzuzählen !

Aber dann wird Google wohl trotzdem meine letzte Hoffnung sein, mit viel Experimentierwille und Zeit :) !

Dank euch trotzdem !

Hab mal versucht ssl manuell zu starten mit apache2ctl startsll, dann bekomme ich folgende Fehlermeldung:


Syntax error on line 108 of /etc/apache2/default-server.conf:
Invalid command 'SSLEngine', perhaps mis-spelled or defined by a module not included in the server configuration


Inhalt der Zeilen:


ServerAdmin root@fire
# YaST auto define section
<IfDefine SSL>
SSLEngine on
</IfDefine>


Aber wenn ich apache2ctl start oder restart mache kommt keine Fehlermeldung !

khs
31.08.2005, 10:07
Hab mal versucht ssl manuell zu starten mit apache2ctl startsll, dann bekomme ich folgende Fehlermeldung:


Syntax error on line 108 of /etc/apache2/default-server.conf:
Invalid command 'SSLEngine', perhaps mis-spelled or defined by a module not included in the server configuration



Na da haben wir es doch schon.
Informier dich also, wie du das SSL-Modul in der Apache2-Konfiguration laedst.
Wenn es gar nicht hinzubekommen ist, poste bitte deine komplette httpd.conf, speziell den Teil mit "LoadModule" und "AddModule".



Aber wenn ich apache2ctl start oder restart mache kommt keine Fehlermeldung !

Interessant, oder? Ohne sslstart geht ssl nicht und mit sslstart kommt eine Fehlermeldung, dass die Konfigurationsoptionen fuer SSL nicht verfuegbar seinen und wohl zu einem nicht konfigurierten Modul gehoeren. Und dafuer 14 Artikel im Thread? ;)

-khs

damager
31.08.2005, 10:16
Interessant, oder? Ohne sslstart geht ssl nicht und mit sslstart kommt eine Fehlermeldung, dass die Konfigurationsoptionen fuer SSL nicht verfuegbar seinen und wohl zu einem nicht konfigurierten Modul gehoeren. Und dafuer 14 Artikel im Thread? ;)

-khs

dafür ist es auch extrem wichtig die grundlangen linux zu kennen und zu verstehen. dann ist auch eine hilfe auch einfacher wenn man nicht bei adam & eva anfangen muss.
aber zumindest ist ja jetzt der fehler bekannt :]

PhoenixDH
31.08.2005, 11:01
Ihr müsst halt verstehen, ich bin absoluter Noob was Linux angeht ! Ich wurde hier im Betrieb an eine Mühle gesetzt und es hieß konfiguriere mal nen kompletten Webserver !!!

Wieder zum Thema:
Das der Fehler bei apache2ctl startssl nicht mehr kommt, hab ich in /etc/sysconfig/apache2 an 2 Stellen SSL eingefügt !
Aber der Server läuft immer noch nicht ! Keine Verbindung zu 127.0.0.1 !

Hier mal meine komplette httpd.conf:


#
# /etc/apache2/httpd.conf
#
# This is the main Apache server configuration file. It contains the
# configuration directives that give the server its instructions.
# See <URL:http://httpd.apache.org/docs-2.0/> for detailed information about
# the directives.

# Based upon the default apache configuration file that ships with apache,
# which is based upon the NCSA server configuration files originally by Rob
# McCool. This file was knocked together by Peter Poeml <poeml+apache@suse.de>.

# If possible, avoid changes to this file. It does mainly contain Include
# statements and global settings that can/should be overridden in the
# configuration of your virtual hosts.


# Overview of include files, chronologically:
#
# httpd.conf
# |
# |-- uid.conf . . . . . . . . . . . . . . UserID/GroupID to run under
# |-- server-tuning.conf . . . . . . . . . sizing of the server (how many processes to start, ...)
# |-- sysconfig.d/loadmodule.conf . . . . . load these modules
# |-- listen.conf . . . . . . . . . . . . . IP adresses / ports to listen on
# |-- mod_log_config.conf . . . . . . . . . define logging formats
# |-- sysconfig.d/global.conf . . . . . . . server-wide general settings
# |-- mod_status.conf . . . . . . . . . . . restrict access to mod_status (server monitoring)
# |-- mod_info.conf . . . . . . . . . . . . restrict access to mod_info
# |-- mod_usertrack.conf . . . . . . . . . defaults for cookie-based user tracking
# |-- mod_autoindex-defaults.conf . . . . . defaults for displaying of server-generated directory listings
# |-- mod_mime-defaults.conf . . . . . . . defaults for mod_mime configuration
# |-- errors.conf . . . . . . . . . . . . . customize error responses
# |-- ssl-global.conf . . . . . . . . . . . SSL conf that applies to default server _and all_ virtual hosts
# |
# |-- default-server.conf . . . . . . . . . set up the default server that replies to non-virtual-host requests
# | |--mod_userdir.conf . . . . . . . . enable UserDir (if mod_userdir is loaded)
# | `--conf.d/apache2-manual?conf . . . add the docs ('?' = if installed)
# |
# |-- sysconfig.d/include.conf . . . . . . your include files
# | (for each file to be included here, put its name
# | into APACHE_INCLUDE_* in /etc/sysconfig/apache2)
# |
# `-- vhosts.d/ . . . . . . . . . . . . . . for each virtual host, place one file here
# `-- *.conf . . . . . . . . . . . . . (*.conf is automatically included)
#
#
# Files marked are created from sysconfig upon server restart: instead of
# these files, you edit /etc/sysconfig/apache2



# Filesystem layout:
#
# /etc/apache2/
# |-- conf.d/
# | |-- apache2-manual.conf . . . . . . . conf that comes with apache2-doc
# | |-- mod_php4.conf . . . . . . . . . . (example) conf that comes with apache2-mod_php4
# | `-- ... . . . . . . . . . . . . . . . other configuration added by packages
# |-- default-server.conf
# |-- errors.conf
# |-- httpd.conf . . . . . . . . . . . . . top level configuration file
# |-- listen.conf
# |-- magic
# |-- mime.types -> ../mime.types
# |-- mod_autoindex-defaults.conf
# |-- mod_info.conf
# |-- mod_log_config.conf
# |-- mod_mime-defaults.conf
# |-- mod_perl-startup.pl
# |-- mod_status.conf
# |-- mod_userdir.conf
# |-- mod_usertrack.conf
# |-- server-tuning.conf
# |-- ssl-global.conf
# |-- ssl.crl/ . . . . . . . . . . . . . . PEM-encoded X.509 Certificate Revocation Lists (CRL)
# |-- ssl.crt/ . . . . . . . . . . . . . . PEM-encoded X.509 Certificates
# |-- ssl.csr/ . . . . . . . . . . . . . . PEM-encoded X.509 Certificate Signing Requests
# |-- ssl.key/ . . . . . . . . . . . . . . PEM-encoded RSA Private Keys
# |-- ssl.prm/ . . . . . . . . . . . . . . public DSA Parameter Files
# |-- sysconfig.d/ . . . . . . . . . . . . files that are created from /etc/sysconfig/apache2
# | |-- global.conf
# | |-- include.conf
# | `-- loadmodule.conf
# |-- uid.conf
# `-- vhosts.d/ . . . . . . . . . . . . . . put your virtual host configuration (*.conf) here
# |-- vhost-ssl.template
# `-- vhost.template



### Global Environment ################################################## ####
#
# The directives in this section affect the overall operation of Apache,
# such as the number of concurrent requests.

# run under this user/group id
Include /etc/apache2/uid.conf

# - how many server processes to start (server pool regulation)
# - usage of KeepAlive
Include /etc/apache2/server-tuning.conf

# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here. If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
ErrorLog /var/log/apache2/error_log

# generated from APACHE_MODULES in /etc/sysconfig/apache2
Include /etc/apache2/sysconfig.d/loadmodule.conf

# IP addresses / ports to listen on
Include /etc/apache2/listen.conf

# predefined logging formats
Include /etc/apache2/mod_log_config.conf

# generated from global settings in /etc/sysconfig/apache2
Include /etc/apache2/sysconfig.d/global.conf

# optional mod_status, mod_info
Include /etc/apache2/mod_status.conf
Include /etc/apache2/mod_info.conf

# optional cookie-based user tracking
# read the documentation before using it!!
Include /etc/apache2/mod_usertrack.conf

# configuration of server-generated directory listings
Include /etc/apache2/mod_autoindex-defaults.conf

# associate MIME types with filename extensions
TypesConfig /etc/apache2/mime.types
DefaultType text/plain
Include /etc/apache2/mod_mime-defaults.conf

# set up (customizable) error responses
Include /etc/apache2/errors.conf

# global (server-wide) SSL configuration, that is not specific to
# any virtual host
Include /etc/apache2/ssl-global.conf

# forbid access to the entire filesystem by default
<Directory />
Options None
AllowOverride ALL
Order deny,allow
Deny from all
</Directory>

AccessFileName .htaccess
# and never show them
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>

# List of resources to look for when the client requests a directory
DirectoryIndex index.html index.html.var

### 'Main' server configuration #############################################
#
# The directives in this section set up the values used by the 'main'
# server, which responds to any requests that aren't handled by a
# <VirtualHost> definition. These values also provide defaults for
# any <VirtualHost> containers you may define later in the file.
#
# All of these directives may appear inside <VirtualHost> containers,
# in which case these default settings will be overridden for the
# virtual host being defined.
#
Include /etc/apache2/default-server.conf


# Another way to include your own files
#
# The file below is generated from /etc/sysconfig/apache2,
# include arbitrary files as named in APACHE_CONF_INCLUDE_FILES and
# APACHE_CONF_INCLUDE_DIRS
Include /etc/apache2/sysconfig.d/include.conf


### Virtual server configuration ############################################
#
# VirtualHost: If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at
# <URL:http://httpd.apache.org/docs-2.0/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.
#
Include /etc/apache2/vhosts.d/*.conf

# Note: instead of adding your own configuration here, consider
# adding it in your own file (/etc/apache2/httpd.conf.local)
# putting its name into APACHE_CONF_INCLUDE_FILES in
# /etc/sysconfig/apache2 -- this will make system updates
# easier :)

khs
31.08.2005, 11:20
Ihr müsst halt verstehen, ich bin absoluter Noob was Linux angeht ! Ich wurde hier im Betrieb an eine Mühle gesetzt und es hieß konfiguriere mal nen kompletten Webserver !!!

Das sollte nicht so harsch rueberkommen, wie es klang. Sowas sagt sich halt aus ner Perspektive, wo einem manches eher auffaellt, immer so leicht...





# generated from APACHE_MODULES in /etc/sysconfig/apache2
Include /etc/apache2/sysconfig.d/loadmodule.conf



In der Datei erwarte ich die Eintraege, um das ssl-Modul zu laden. Findest du da was passendes? Wenn nicht, siehst du dort die Syntax und den Pfad, in dem du das Modul suchen musst. Such also den genauen Dateinamen raus und trag sowohl eine Zeile LoadModule als auch eine Zeile AddModule ein. Da hilft dir google weiter. Im Zweifelsfalle bestimmt auch hier jemand mit einer apache2-config.





# optional mod_status, mod_info
Include /etc/apache2/mod_status.conf


mod_status bietet zumindest im 1er Apachen die Option "ExtendedStatus On|Off". Vielleicht bekommst du damit ja eine Anzeige der verwendeten Module? Am ehesten wuerde ich es in mod_status.conf eintragen, kenne aber die genaue Aufteilung bei deinem Apachen nicht. Im Zweifelsfall schreib es in die Config, die du gepostet hast. Wenn es dem Apachen da nicht gefaellt, meckert der schon... ;)

-khs

damager
31.08.2005, 11:27
Ihr müsst halt verstehen, ich bin absoluter Noob was Linux angeht ! Ich wurde hier im Betrieb an eine Mühle gesetzt und es hieß konfiguriere mal nen kompletten Webserver !!!


offtopic:
du hast mich leider falsch verstanden ... das war _kein_ vorwurf an dich :oldman
eher eine allgemeine aussage. da es doch relativ oft vorkommt das hier
leute fragen zu problemen posten und eine sofortige lösung erwarten ohne das sie gewillt sind sich grundlagen anzueigenen.
der dem einsatz den du hier zeigt kann nicht davon die rede sein ... also cary on :search:

PhoenixDH
31.08.2005, 11:40
Also in /etc/apache2/sysconfig.d/loadmodule.conf ist der SSL drin:


LoadModule ssl_module /usr/lib/apache2-prefork/mod_ssl.so


ABer den Rest kapiere ich ehrlich gesagt nicht was du damit meinst !

Fakt ist, ssl läuft !


fire:~ # lsof -i -P | grep 443
httpd2 9785 root 4u IPv6 58074 TCP *:443 (LISTEN)
httpd2 9943 wwwrun 4u IPv6 58074 TCP *:443 (LISTEN)
httpd2 9944 wwwrun 4u IPv6 58074 TCP *:443 (LISTEN)
httpd2 9945 wwwrun 4u IPv6 58074 TCP *:443 (LISTEN)
httpd2 9946 wwwrun 4u IPv6 58074 TCP *:443 (LISTEN)
httpd2 9947 wwwrun 4u IPv6 58074 TCP *:443 (LISTEN)


Mir schinets als komme ich mit dem Browser irgendwie net ran !

damager
31.08.2005, 12:19
hast du lynx bei dir installiert?
dann einfach mal lynx https://localhost versuchen....

du hast recht ... ssl läuft.
echt komisch :think:

PhoenixDH
31.08.2005, 13:23
Was ist lynx ?

Wenn ich en Befehl ausführe kommt folgendes:


fire:~ # lynx https://127.0.0.1

Looking up 127.0.0.1
Making HTTPS connection to 127.0.0.1
Retrying connection without TLS.
Looking up 127.0.0.1
Making HTTPS connection to 127.0.0.1
Alert!: Unable to make secure connection to remote host.

lynx: Can't access startfile https://127.0.0.1/

damager
31.08.2005, 14:49
lynx ist ein auf text-basierter browser.
mehr info: http://de.wikipedia.org/wiki/Lynx_(Browser)

irgenwie verstehe ich das ganz nicht. sind im DocumentRoot vom webserver irgenwelche dokumente (index.html) die der server anzeigen könnte?
ohne ssl funktioniert der zugriff aber auf localhost?

PhoenixDH
31.08.2005, 14:56
Über http einwandfrei !
Ja, da ist ne index.php drin, also müsste er das anzeigen, hab auch schon ne index.shtml reingemacht, geht auch net per https !

damager
31.08.2005, 15:23
bin verwirrt!

fassen wir mal zusammen:
1. der start von apache ohne ssl liefert keine fehlermeldungen (konsole und log)
2. der apache ohne ssl liefert alle dokumente aus wie erwartet
3. bei aktivierten ssl liefert der apache keine fehlermeldungen (konsole und log)
4. telnet und netstat bestätigen das auf port 443 httpd läuft
5. kein browser ist in der lage eine https seite von diesem server aufzurufen

hab ich was übersehen?

khs
31.08.2005, 17:58
Also in /etc/apache2/sysconfig.d/loadmodule.conf ist der SSL drin:


LoadModule ssl_module /usr/lib/apache2-prefork/mod_ssl.so



Und die AddModule-Direktive?
Oder steht die wieder in einem anderen Config-File? Existiert /usr/lib/apache2-prefork/mod_ssl.so?



Fakt ist, ssl läuft !

Nein. Wirklich nicht. Der apache lauscht nur auf Port 443, liefert aber nichts verschluesseltes darueber aus. Dein Lynx-Log zeigt das auch (retrying without TLS).

-khs

damager
31.08.2005, 22:35
Nein. Wirklich nicht. Der apache lauscht nur auf Port 443, liefert aber nichts verschluesseltes darueber aus. Dein Lynx-Log zeigt das auch (retrying without TLS).

-khs

du könntest natürlich recht haben ... das apache auf 443 hört kann (und wird wohl auch) an der Listen 443option liegen.
gab es da nicht ne möglichekeit ein liste dyn. geladener module anzuzeigen?

die ausgabe von:
openssl s_client -connect localhost:443 -state -debug
und dann
GET / HTTP/1.0
sollte 100%ige gewissheit bringen ob dort jemand ssl spricht.


LoadModule ssl_module modules/mod_ssl.so
ist ja eingefügt oder?

und httpd -DSSL liefert keine fehler?

was steht in deiner /etc/sysconfig/apache2?
müsste doch sowas APACHE_SERVER_FLAGS="-D SSL" stehen oder?
und APACHE_MODULES="...." sollte zumindest auch "ssl" enthalten oder?

hab schon mal gesehen das yast2 änderungen die nicht über eben yast gemacht worden sind wieder rückgängig macht :]

PhoenixDH
01.09.2005, 07:26
Also /usr/lib/apache2/mod_ssl.so existiert !
Die Sache mit AddModule hab ich net gemacht, denn ich finde keine Datei wo irgendwas mit AddModule schon drin steht ! Hab auch bei Google geschaut !

Außer das ich mal das in die httpd.conf eingefügt habe:


<IfDefine SSL>
AddModule mod_ssl.c
</IfDefine>


das hab ich ebenso eingefügt:


APACHE_SERVER_FLAGS="-D SSL"
APACHE_MODULES=".... SSL"
LoadModule ssl_module /usr/lib/apache2-prefork/mod_ssl.so


Allerdings bekomme ich hier ne Fehlermeldung mit dem Befehl:


openssl s_client -connect localhost:443 -state -debug
CONNECTED(00000003)
SSL_connect:before/connect initialization
write to 080AC5E0 [080ACE40] (142 bytes => 142 (0x8E))
0000 - 80 8c 01 03 01 00 63 00-00 00 20 00 00 39 00 00 ......c... ..9..
0010 - 38 00 00 35 00 00 16 00-00 13 00 00 0a 07 00 c0 8..5............
0020 - 00 00 33 00 00 32 00 00-2f 03 00 80 00 00 66 00 ..3..2../.....f.
0030 - 00 05 00 00 04 01 00 80-08 00 80 00 00 63 00 00 .............c..
0040 - 62 00 00 61 00 00 15 00-00 12 00 00 09 06 00 40 b..a...........@
0050 - 00 00 65 00 00 64 00 00-60 00 00 14 00 00 11 00 ..e..d..`.......
0060 - 00 08 00 00 06 04 00 80-00 00 03 02 00 80 6e 95 ..............n.
0070 - 10 de e4 46 31 17 5c 68-13 68 7c d5 e7 1e 36 d8 ...F1.\h.h|...6.
0080 - e2 a7 b6 21 05 c1 35 b4-df d4 9b f5 ef d1 ...!..5.......
SSL_connect:SSLv2/v3 write client hello A
read from 080AC5E0 [080B23A0] (7 bytes => 7 (0x7))
0000 - 3c 3f 78 6d 6c 20 76 <?xml v
SSL_connect:error in SSLv2/v3 read server hello A
12615:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:478:


Mit dem AddModule hat er seine Probleme, da bekomme ich immer:


Invalid command 'AddModule', perhaps mis-spelled or defined by a module not included in the server configuration


Aber irgendwie muss er Probleme mit dem mod_ssl.c haben !!!
Das ist meinen listen.conf


# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports. See also the <VirtualHost> directive.
#
# http://httpd.apache.org/docs-2.0/mod/mpm_common.html#listen
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
#
# When we also provide SSL we have to listen to the
# standard HTTP port (see above) and to the HTTPS port
#
# Note: Configurations that use IPv6 but not IPv4-mapped addresses need two
# Listen directives: "Listen [::]:443" and "Listen 0.0.0.0:443"
#
#Listen 12.34.56.78:80
#Listen 80
#Listen 443



<IfDefine SSL>
<IfDefine !NOSSL>
<IfModule mod_ssl.c>

Listen 443

</IfModule>
</IfDefine>
</IfDefine>


# Use name-based virtual hosting
#
# - on a specified address / port:
#
#NameVirtualHost 12.34.56.78:80
#
# - name-based virtual hosting:
#
#NameVirtualHost *:80
#
# - on all addresses and ports. This is your best bet when you are on
# dynamically assigned IP addresses:
#
#NameVirtualHost *

Listen 80
Listen 443


Ich hab am Schluss per Hand den Port 443 eingefügt, obwohl er oben schon in der IF Bedingung drin ist. Lösche ich aber die letzte Zeile, so hört er nimmer auf Port 443, also denke ich das das Problem mit der mod_ssl.c zusammenhängt !

Was denke ich mal damit zusammenhängt, das ich das hier nicht einfügen kann weil der Fehler kommt !


<IfDefine SSL>
AddModule mod_ssl.c
</IfDefine>

damager
01.09.2005, 09:13
welche modul ladest du nun?

du schreibst das /usr/lib/apache2/mod_ssl.so existiert
aber laden tust du /usr/lib/apache2-prefork/mod_ssl.so <--- gibts das auch?
was für einen apache hast laufen ... worker oder prefork?

also bei einem meiner server (allerdings aktuell fedora core 3) sind folgende optionen für apache gesetzt:



LoadModule ssl_module modules/mod_ssl.so
Listen 443

SSLPassPhraseDialog builtin
SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout 300
SSLMutex default
SSLRandomSeed startup file:/dev/urandom 256
SSLRandomSeed connect builtin
SSLCryptoDevice builtin

<VirtualHost _default_:443>
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on

SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSL v2:+EXP
SSLCertificateFile /etc/httpd/conf/ssl.crt/server_crt.pem

<Files ~ "\.(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>


ein: openssl s_client -connect localhost:443 -state -debug sollte das ungefähr liefern:


CONNECTED(00000003)
SSL_connect:before/connect initialization
write to 083FBF80 [083FCF70] (142 bytes => 142 (0x8E))
0000 - 80 8c 01 03 01 00 63 00-00 00 20 00 00 39 00 00 ......c... ..9..
0010 - 38 00 00 35 00 00 16 00-00 13 00 00 0a 07 00 c0 8..5............
0020 - 00 00 33 00 00 32 00 00-2f 03 00 80 00 00 66 00 ..3..2../.....f.
0030 - 00 05 00 00 04 01 00 80-08 00 80 00 00 63 00 00 .............c..
0040 - 62 00 00 61 00 00 15 00-00 12 00 00 09 06 00 40 b..a...........@
0050 - 00 00 65 00 00 64 00 00-60 00 00 14 00 00 11 00 ..e..d..`.......
0060 - 00 08 00 00 06 04 00 80-00 00 03 02 00 80 1f 1c ................
0070 - 8d 70 72 80 1b 48 51 7a-da 24 97 b8 8e 67 1a c3 .pr..HQz.$...g..
0080 - 7f 17 76 ec 6a b6 ed 6a-27 30 59 3e 1e 61 ..v.j..j'0Y>.a
SSL_connect:SSLv2/v3 write client hello A
read from 083FBF80 [084024D0] (7 bytes => 7 (0x7))
0000 - 16 03 01 00 4a 02 ....J.
0007 - <SPACES/NULS>
read from 083FBF80 [084024D7] (72 bytes => 72 (0x48))
0000 - 00 46 03 01 43 16 a9 88-3c 12 0b 7d 27 2b e9 e6 .F..C...<..}'+..
0010 - 65 62 70 f6 9f 67 9d e7-1d 30 1e ba ac 31 32 5b ebp..g...0...12[
0020 - 63 0b 9c ff 20 7e 95 34-01 18 4b 90 2d 0c 1d a3 c... ~.4..K.-...
0030 - 5c 82 c2 d4 5a ce 1c fa-cc d5 b5 0f 8f 1f 1a 84 \...Z...........
0040 - 19 55 c7 a9 cc 00 39 .U....9
0048 - <SPACES/NULS>
SSL_connect:SSLv3 read server hello A
....
SSL handshake has read 1452 bytes and written 340 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 1024 bit
SSL-Session:
Protocol : TLSv1
Cipher : DHE-RSA-AES256-SHA
Session-ID: 7E953401184B902D0C1DA35C82C2D45ACE1CFACCD5B50F8F1F 1A841955C7A9CC
Session-ID-ctx:
Master-Key: E0B106CBEA294EF0E196CF2672B069C2D9F9AA87A768E3FFDF F5741C9DF2DEA1907BA79EF5CB2A551B6E8FCC3E781671
Key-Arg : None
Krb5 Principal: None
Start Time: 1125558664
Timeout : 300 (sec)
Verify return code: 18 (self signed certificate)


hoffe das bringt dich irgendwie weiter :oldman

viel glück....

PhoenixDH
01.09.2005, 09:23
Also es gibt beide mod_ssl Dateien, in beiden Verzeichnissen ! Aber in dem prefork Ordner liegen nur Verknüpfungen !

Wie sehe ich welcher der beiden läuft ?

khs
01.09.2005, 12:31
Also es gibt beide mod_ssl Dateien, in beiden Verzeichnissen ! Aber in dem prefork Ordner liegen nur Verknüpfungen !

Wie sehe ich welcher der beiden läuft ?

Ist eigentlich egal, wenn die Links gueltig sind.
Leider faellt mir an der Stelle nichts mehr ein, da ich, wie gesagt, keinen apache2 habe, allerdings habe ich nen Link (http://buecher.lingoworld.de/apache2/mod_ssl.html) gefunden, der dir vielleicht helfen koennte.
Ueberlies den openssl- und Windows-Kram, weiter unten wird die Konfiguration von ssl zwar kurz, aber schrittweise beschrieben. Wenn sich mit dieser Minimalkonfiguration eine SSL-Verbindung herstellen laesst, ist das schonmal die halbe Miete... ;)

-khs

b1u3p001
22.10.2005, 11:44
gibt es dazu mittlerweile schon eine lösung?