unripapaya
Goto Top

Apache mit OpenSSL einrichten unter Windows

Hallo!

Möchte bei meinen Windows 2003 Webserver Apache 2.2 so einrichten, dass Port 443 auf https-Aufrufe lauscht.
Habe bisher Folgendes in der httpd.conf stehen:

Listen 443

LoadModule ssl_module modules/mod_ssl.so

<VirtualHost *:443>
SSLEngine On
SSLCertificateFile conf/server.crt
SSLCertificateKeyFile conf/server.key
</VirtualHost>

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
SSLMutex default
SSLSessionCache dbm:c:/WWW/Aapache2.2/logs
</IfModule>

Aber Apache startet nun gar nicht mehr.

Könnte mir da bitte jemand weiterhelfen?

Gruß,
Unripapaya^^

Content-ID: 130952

Url: https://administrator.de/contentid/130952

Ausgedruckt am: 22.11.2024 um 18:11 Uhr

Dani
Dani 04.12.2009 um 11:29:02 Uhr
Goto Top
Hi Unripapaya,
schau dir mal folgende Anleitungen auf Englisch und / oder Deutsch an.


Grüße,
Dani
Unripapaya
Unripapaya 04.12.2009 um 11:31:44 Uhr
Goto Top
Danke für's Erste!

Ich schau es mir sogleich an.
Unripapaya
Unripapaya 04.12.2009 um 11:50:15 Uhr
Goto Top
Hm....schade, aber leider hat mir das nicht weitergeholfen.

Ich habe von Anfang an einen Apache installiert, der mit OpenSSL kommt.
Die Zertifikate habe ich auch schon.

Habe mittlerweile davon abgesehn in der httpd.conf zu konfigurieren und mache das in der httpd-ssl.conf, die unter config/extra zufinden ist und in der httpd.conf includiert wird.

So muss man nur einige Pfade anpassen und dann sollte das Ganze auch schon passen...

Mein Apache tut dann aber immer noch nicht starten. Genauer gesagt startet Apache nicht mehr wenn SSLEngine auf On gesetzt wird.

Muss ich ausser httpd.conf bearbeiten und Zertifikate bereitstellen noch etwas beachten. Muss man vielleicht noch php.ini ändern?

Bin über jede Hilfe dankbar!

Gruß,
Unripapaya
Dani
Dani 04.12.2009 um 23:55:16 Uhr
Goto Top
Moin,
also PHP hat damit gar nichts am Hut. Das sind 2 trennete Welten!

Fangen wir Schritt für Schritt an:
Ich habe im Verzeichni e:\apache\conf\ssl.crt\ ein gültiges Zertifikat liegen. Mit einme Doppelklick kannst du die Eigenschaften aufrufen. Gleich auf der Anfangsseite steht Gültig von-bis. Im Verzeichnis ..\ssl.key liegt das Gegenstück.

Nun öffenst dudie Datei "e:\apache\conf\httpd.conf" und suchst nach "LoadModule ssl_module modules/mod_ssl.so". Dieser Zeile darf keine Raute (#) voranstellt sein. Falls doch, die "#" löschen. Danach vergewissere dich, dass unter e:\apache\modules\ die Datei "mod_ssl.so" liegt. Ohne die geht nichts....Danach suchst du folgende Zeilen:
# Secure (SSL/TLS) connections
Include "conf/extra/httpd-ssl.conf"  
#
# Note: The following must must be present to support
#       starting without SSL on platforms with no /dev/random equivalent
#       but a statically compiled-in mod_ssl.
#
<IfModule ssl_module>
    SSLRandomSeed startup builtin
    SSLRandomSeed connect builtin
    SSLSessionCache "shmcb:logs/ssl.scache(512000)"  
    SSLSessionCacheTimeout 300
</IfModule>
So muss das bei dir auch aussehen....

Dann hast du unter e:\apache\conf\extra\ die Datei "httpd-ssl.conf" liegen. Diese sieht bei mir so aus:
<IfModule ssl_module>
Listen 443

<IfModule mime_module>
    #
    #   Some MIME-types for downloading Certificates and CRLs
    #
    AddType application/x-x509-ca-cert .crt
    AddType application/x-pkcs7-crl    .crl
</IfModule>

SSLPassPhraseDialog  builtin

SSLMutex default

<VirtualHost _default_:443>
    #   General setup for the virtual host
    DocumentRoot "E:/htdocs"  
    ServerName localhost:443
    ServerAdmin webmaster@localhost
    ErrorLog "logs/error.log"  
    <IfModule log_config_module>
        CustomLog "logs/access.log" combined  
    </IfModule>

    SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCertificateFile "conf/ssl.crt/server.crt"  
    SSLCertificateKeyFile "conf/ssl.key/server.key"  
</VirtualHost>                                  
</IfModule>
Bitte vorher die Orginalkonfigurationsdatei wegkopieren. Wenn du den Code übernimmst, nicht vergessen die Pfade anzupassen und immer "/" verwenden statt "\". So funktioniert es bei mir einwandfrei.

Falls du Probleme hast, die 3 benötigen SSL-Dateien zu erstellen hilft dir dieses Script von Apachefriend evtl. weiter:
:: Make a selfsigend certificate with OpenSSL
::
:: author     Carsten Wiedmann <carsten_sttgt@gmx.de>
:: copyright  2009 Carsten Wiedmann
:: license    http://www.freebsd.org/copyright/freebsd-license.html FreeBSD License
:: version    1.0
@ECHO OFF & SETLOCAL
PUSHD %~dp0
CD ..

SET "OPENSSL_CONF=%CD%\apache\bin\openssl.cnf"  
SET "OPENSSL_CONF=%OPENSSL_CONF:\=/%"  

IF NOT EXIST apache\conf\ssl.crt (
    MKDIR apache\conf\ssl.crt
)
IF NOT EXIST apache\conf\ssl.csr (
    MKDIR apache\conf\ssl.csr
)
IF NOT EXIST apache\conf\ssl.key (
    MKDIR apache\conf\ssl.key
)

apache\bin\openssl req -new -out server.csr
apache\bin\openssl rsa -in privkey.pem -out server.key
apache\bin\openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650

DEL .rnd >nul 2>&1
DEL tmp\.rnd >nul 2>&1
DEL .oid >nul 2>&1
DEL tmp\.oid >nul 2>&1
DEL privkey.pem >nul 2>&1

MOVE /Y server.crt apache\conf\ssl.crt\
MOVE /Y server.csr apache\conf\ssl.csr\
MOVE /y server.key apache\conf\ssl.key\

ECHO.
ECHO -----
ECHO Das Zertifikat wurde erstellt.
ECHO The certificate was provided.
ECHO.

POPD
PAUSE
Wenn du per HTTP eine Testseite aufrufen kannst, sollte HTTPS nun auch gehen. Wichtig: Unbedingt nach den Änderungen den Server neustarten.


Grüße,
Dani
Unripapaya
Unripapaya 07.12.2009 um 08:15:48 Uhr
Goto Top
Vielen Dank.

Leider funktioniert es bislang immer noch nicht.
Habe im error.log nachgesehn und dort erscheint folgende Fehlermeldung:
Init: SSLPassPhraseDialog builtin is not supported on Win32

Mittlerweile habe ich herausgefunden, dass ich die Datei server.key des Sicherheitszertifikats unverschlüsselt verwenden muss, anders wird es von Windows scheinbar nicht unterstützt.
Leider ist die Person, die mir das Zertifikat zur Verfügung gestellt hat und über die Passphrase zum Enschlüsseln verfügt bis Ende dieser Woche krank.
Bin aber guter Hoffnung, dass ich in den nächsten Tagen mit OpenSSL und folgendem Befehl den Schlüssel entschlüsseln kann:
openssl rsa -in server.key.org -out server.key

Gruß,
Unripapaya
Unripapaya
Unripapaya 07.12.2009 um 09:13:51 Uhr
Goto Top
Ach...noch eine Kleinigkeit:
Kann man irgendwie testen ob wirklich verschlüsselt wird?

Gruß,
Unripapaya