Apache Start scheitert bei Verwendung eigener Zertifikate

Alles, was den Apache betrifft, kann hier besprochen werden.

Apache Start scheitert bei Verwendung eigener Zertifikate

Postby DCK » 24. March 2013 17:39

Hallo Zusammen,

ich habe seit einer Weile Probleme bei der Konfiguration meines Apache Dienstes auf
meinem Virtual Server ( Host Europe ). Bei der Einbindung meines SSL Zertifikats in
PLESK ( einer Adminstrator - Konsole von HE ) ist alles in Ordnung.

BS : Ubuntu 10.0.04 LTS
Apache : 2.2.14
OpenSSL 0.9.8

Zuerst erstelle ich in PLESK den SSL - Schlüssel samt Zertifkat, CA -
Zertifikat & Private - Key. Dieses ist ein Host Europe zertifiziertes
Zertifikat , das ich vorher bereits bei HE bestellte. Gültig ist es
1 Jahr. Ich aktivierte es für meine dedizierte IP - Adresse. Auch
editierte ich noch die DNS Einträge & fügte das SSL Zertifikat
zur Website hinzu ( 1X IP - Adresse , 1X TLD ).

In der Datei "Default-SSL" im Verzeichnis gibt es diese 2 Einträge :

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

# A self-signed (snakeoil) certificate can be created by installing
# the ssl-cert package. See
# /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
# If both key and certificate are stored in the same file, only the
# SSLCertificateFile directive is needed.

SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem ----> Für Zertifikat & CA - Zertifikat ( Zw. Zertifikat )
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key ----> Für Private - Key des Zertifkats

Ich erstellte also im Verzeichnis "/etc/ssl/certs" das Zertifikat
"www.XXXXXXX.de.pem" ( Mit Inhalt Zertifikat & CA Zertifikat )
als auch im Verzeichnis /Private das entsprechende Zertifikat
"www.XXXXXXX.de.key" ( Mit Inhalt Private Key" ). Danach
ersetzte ich die Einträge im o.g. Abschnitt.

Nach Abspeichern der Datei "Default-SSL" scheitere ich leider bei der
Durchführung des Neustarts :
"/etc/init.d/apache2 force-reload"
"/etc/init.d/apache2 restart"


Die Ausgabe sagt nich viel, außer 'FAILED' :( !

Wieso akzeptiert Apache nicht das eigene Zertifikat, sondern
nur die Standards *ssl-cert-snakeoil*.

Ich hoffe, ihr habt ihr eine Idee ! Diese verdammte SSL Geschichte
verhindert die Weiterführung meines Projektes.

Vielen Dank im Voraus.

Viele Grüße
DCK
Last edited by DCK on 25. March 2013 02:42, edited 8 times in total.
DCK
 
Posts: 4
Joined: 24. March 2013 17:07
Operating System: Ubuntu 10.04 LTS

Re: Apache Start scheitert bei Verwendung eigener Zertifikat

Postby DCK » 24. March 2013 20:57

Hallo Zusammen,

schade, dass bisher scheinbar keiner eine Antwort auf meine Frage hatte. :(

Nun bin ich allerdings schon wieder ein Stück weiter. Nachdem ich an Stelle
einer .pem Datei für das Zertifikat eine .crt Datei verwendete, startete der
Apache Server. Standardmäßig steht in der Datei aber eine .pem ??? :shock:

Scheinbar akzeptiert er schon meine SSL Zertifikate auf Port 443. In FireFox
bei "Einstellungen ---> Verschlüsselung ---> Zertifikate" sind diese gespeicherte
& dauerhafte Zertifikate.

---------------------------------------------------------------------------------------------------------------

Nun kommt der schwierige Teil :

Ich habe eine soziales Netzwerk, in Art von Facebook, dieses läuft auf Port 3000.
Wenn ich allerdings darauf zugreife ( https://www.XXXXXXX.de:3000 ) erhalte ich
diese SSL Fehler - Meldung :

SSL_Error_RX_Record_Too_Long :( :shock:

Nun weis ich nicht genau, was hier der Fehler ist. Hierzu las ich bereits viel
Artikel. Diese Aussage derer ist im Kern :

---------------------------------------------------------------------------------------------------------------

o Ensure that port 443 is open and enabled on your server. This is the standard port
for https communications.
----> SSL läuft auf dem Server auf dem Port 443 - Standard

o If SSL is using a non-standard port then FireFox 3 can sometimes give this error.
Ensure SSL is running on port 443.
----> siehe Oben

o Make sure you do not have more than one SSL certificate sharing the same IP.
Please ensure that all SSL certificates utilise their own dedicated IP.
----> Ich habe nur 1 Zertifikat, von daher keine Relevanz

o If using Apache2 check your vhost config. Some users have reported changing
<VirtualHost> to _default_ resolved the error.
----> Der Eintrag ist bereits to _default_

o Make sure that your SSL certificate is not expired
----> Zertifikat läuft noch 1 Jahr bis 2014


---------------------------------------------------------------------------------------------------------------

Das Einzige, was anders ist an meiner Config ist, dass ich den u.g. Eintrag
nicht in der Ports.conf habe :

o If using Apache2 check that you are using port 443 for SSL. This can be done by
setting the ports.conf file as follows

Listen 80
Listen 443 https


Füge ich hier "Listen 443 https" hinzu, bekomme ich die Fehler - Meldung :

(98)Address already in use: make_sock: could not bind to address 0.0.0.0:443 :( :x


Habt ihr vielleicht eine Idee, was hier die Ursache ist ?

Vielen Dank im Voraus.

Viele Grüße
DCK
DCK
 
Posts: 4
Joined: 24. March 2013 17:07
Operating System: Ubuntu 10.04 LTS

INF : Aktueller Status

Postby DCK » 25. March 2013 01:48

Hallo Zusammen,

Nun ein letzter Status des Abends. Nach dem Hinzufügen 3
verschiedener Zertifikate, jeweils für Private Key, Zertifikat
& CA -Zertifikat ist Apache nach aktuellem Stand OK.

Ich erstellte den Ordner "ssl.crt" im Ordner "/etc/apache2".
Dann erstellte ich jeweils die 3 Zertifikate :

"/etc/ssl/certs/www.XXXXXXX.de.crt" ----> Das eigentliche Zertifikat
"/etc/ssl/private/www.XXXXXXX.key" ----> Der entsprechende Private Key
"/etc/apache2/ssl.crt/www.XXXXXXX.ca" ----> Der CA Teil des Zertifikats

Im Anschluss verifizierte ich die Zertifikate über den Befehl :

"openssl verify -CAfile /etc/apache2/ssl.crt/www.XXXXXXX.de.ca -purpose sslserver www.XXXXXXX.de.crt"

War die vorherige Einbindung des Zertifikats ( über PLESK Etc. ) in Ordnung,
erhält man nach der Ausführung des o.g. Befehls die Rückmeldung :

"www.XXXXXXX.de.crt: OK"

Das war bei mir der Fall. Weiter war eine Überprüfung meines SSL Zertifikats über die
Website SSLShopper ( "http://www.sslshopper.com" ) ein Erfolg. Hier ein Auszug :

------------------------------------------------------------------------------------------------------

XXXXXXX.de resolves to XXX.XXX.XXX.XXX
Server Type: Apache
The certificate should be trusted by all major web browsers (all the correct intermediate certificates are installed).
The certificate will expire in 357 days
The hostname ( XXXXXXX.de ) is correctly listed in the certificate.


------------------------------------------------------------------------------------------------------

Dann editiere ich noch die Datei "ports.conf" im Ordner "/etc/apache2/" &
ergänzte die Einträge um Folgendes :

NameVirtualHost *:80
Listen XXX.XXX.XXX.XXX:80
----> IP Adresse des Servers

UND

NameVirtualHost *:443
Listen XXX.XXX.XXX.XXX:443 https
----> IP Adresse des Servers

Nach einem Neustart des Apache Server ( "/etc/init.d/apache2 restart" )
erfährt man bei einem Grep auf die Ports, dass HTTP & HTTPS läuft :

"netstat -nlp | grep apache2"

Ausgabe :
TCP 0 0 XXX.XXX.XXX.XXX:443 0.0.0.0:* LISTEN 12104/apache2
TCP 0 0 XXX.XXX.XXX.XXX:80 0.0.0.0:* LISTEN 12104/apache2


Leider erhalte ich noch immer die Fehler - Meldung
"SSL_Error_RX_Record_Too_Long" ! :( :twisted: :x

UPDATE : Eine seltsame Beobachtung ist, dass FireFox, obwohl vom Zertifikat her alles in
Ordnung ist ( Angeblich ? ), wenn ich links neben der URL die Kugel anklicke, sagt :

"Diese Website stellt keine Identitätsdaten zur Verfügung" :shock: :(

Öffne ich die Seite über Internet Explorer, identifiziert dieser die Website
zwar über GlobalSign :

"GlobalSign hat diese Seite identifiziert als : XXXXXXX.de"
"Die Verbindung mit dem Server ist verschlüsselt"


Allerdings erhalte ich dabei den Fehler :
"window.plesk_promo.virtuozzo ist Null oder kein Objekt"

Vielleicht hat ein Anderer noch eine Idee ? :roll: :roll: :D

Weiteres im Laufe des Tages.

VG
DCK
DCK
 
Posts: 4
Joined: 24. March 2013 17:07
Operating System: Ubuntu 10.04 LTS

INF : Aktueller Status SSL Zertifikate

Postby DCK » 27. March 2013 23:08

Hallo Zusammen,

nun hatte ich wieder Zeit für die Weiterführung meines
Projektes & daher nun wieder die gleiche SSL - Problematik.

Da die Einrichtung der SSL Zertifikate ( siehe vorherige
Beiträge ) in PLESK & Apache offebar in Ordnung war,
nach Tests auf der Konsole über bekannte Befehle & eine
Verifizierung bei SSLSHopper, beschäftigte mich nun,
dass stets, wenn ich die Seite aufrufe, nur die Standard -
Site des Parallels Servers kommt.

Ich habe ein Zertifikat von Host Europe für meine Website,
diese umfasst "XXXXXXX.de" & "www.XXXXXXX.de" ( meine
Websites ).

Nun habe ich enrsthafte Zweifel an den SSL - Zertifikats -
Einstellugen in Apache. Ich habe in Apache folgende Conf :

--------------------------------------------------------------------------------------

Ports.Conf :

NameVirtualHost *:80
Listen XXX.XXX.XXX.XXX:80 ----> eigene IP Adresse des Servers


<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.

NameVirtualHost *:443
Listen XXX.XXX.XXX.XXX:443 ----> eigene IP Adresse des Servers
</IfModule>

<IfModule mod_gnutls.c>
Listen 443
</IfModule>

--------------------------------------------------------------------------------------

Ich aktivierte über den Befehl "a2ensite" diese 2 Sites im
Ordner "Site - Available" :

"default"
"default-ssl"

Die Verlinkung des Inhaltes des Ordners "Sites - Enabled "
besagt :

000-default --> ../ sites-available / default
default - ssl --> ../ sites-available /default - ssl

Die Verlinkung der Sites ist im Grunde so in Ordnung, oder ?

Dann editierte ich die Datei "default -ssl" bezgl.
der SSL Einträge. Ich aktiverte :

-----------------------------------------------------------------------------

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

SSLEngine on

# A self-signed (snakeoil) certificate can be created by installing
# the ssl-cert package. See
# /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
# If both key and certificate are stored in the same file, only the
# SSLCertificateFile directive is needed.


SSLCertificateFile /etc/ssl/certs/www.XXXXXXX.de.pem ----> Gesamtes Zertifkat
SSLCertificateKeyFile /etc/ssl/private/www.XXXXXXX.de.key ----> Private Key des Zertifkats


----

# 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/www.XXXXXXX.pem ----> Gleiches Zertifikat wie SSLCertificateFile, laut Apache in Ordnung ??

----

# 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/ssl/certs/
SSLCACertificateFile /etc/apache2/ssl.crt/www.XXXXXXX.de.crt ----> Inhalt ist der CA Teil meines Zertifikats ( Zw. Zertifikat ) ?


Weiter aktivierte ich folgende Einträge :

# 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


als auch den Location - Eintrag :

<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>


Nachtrag :

Was ist das für eine Remote - Addr. in dem Location
Eintrag ? Ändere ich diese auf meine IP bzw. meine
IP und im 4. Block bliebt es bei [ 0 - 9 ] ??
Ich bitte um Rat. :)

--------------------------------------------------------------------------------------

Erwähnt sei noch, dass ich natürlich die eigehende
Verbindung für den Port 443 auf meiner Firewall
freigeschaltet habe. :?

Sind diese Einträge in meiner "default-ssl" so OK, oder sehr ihr
irgendwelche Mängel ?

Viele Grüße
DCK
DCK
 
Posts: 4
Joined: 24. March 2013 17:07
Operating System: Ubuntu 10.04 LTS


Return to Apache

Who is online

Users browsing this forum: No registered users and 5 guests