
Wenn Sie versuchen, dem Artikel zur Installation von Apache mit SSL zu folgen, den wir vor einiger Zeit besprochen haben, werden Sie beim „Make“ auf ein Problem stoßen, da die Versionen zwischen Apache 2.4.4 und den APR-Dienstprogrammen (Apache Portable Runtime Library) kompatibel sind mit CentOS 6.
Wir haben in diesem Artikel erklärt, wie Sie dieses Problem lösen können, damit der neueste Apache auf CentOS oder RedHat funktioniert.
Stellen Sie sicher, dass Sie gcc und openssl-devel installiert haben.
# yum install gcc # yum install openssl-devel
Sie benötigen außerdem „Apache Portable Runtime Library“ APR, um Apache von der Quelle zu installieren.
Sie haben bereits die Pakete „apr“ und „apr-util“ installiert. Installieren Sie die Pakete apr-devel und apr-util-devel.
# yum install apr-devel # yum install apr-util-devel
Hinweis:In unserem Fall (aufgrund der Versionskompatibilitätsprobleme) werden wir diese herunterladen und später manuell installieren. Aber lassen Sie uns erst einmal mit dem Strom schwimmen und sehen, was passiert, wenn Sie versuchen, es auf diese Weise zu tun.
Apache herunterladen
Laden Sie Apache von httpd.apache.org herunter. Die aktuelle stabile Version ist 2.4.2.
Sobald Sie die direkte URL zum Herunterladen der neuesten stabilen Version von Apache erhalten haben, verwenden Sie wget wie unten gezeigt, um sie direkt auf Ihren Server herunterzuladen.
cd /usr/src wget http://mirror.nyi.net/apache//httpd/httpd-2.4.2.tar.gz tar xvfz httpd-2.4.2.tar.gz
Installieren Sie Apache mit SSL/TLS
Zeigen Sie alle verfügbaren Apache-Installations- und Konfigurationsoptionen wie unten gezeigt an.
cd httpd-2.4.2 ./configure --help
Um ein Apache-Modul zu installieren, würden Sie normalerweise sagen –enable-{module-name}. Um beispielsweise SSL mit Apache zu installieren, ist es –enable-ssl. Um das LDAP-Modul zu installieren, ist es –enable-ldap.
Um ein Standardmodul zu deinstallieren, das mit Apache geliefert wird, würden Sie normalerweise sagen –disable-{module-name}. Um beispielsweise die grundlegende Authentifizierung in Apache zu deaktivieren, ist es –disable-auth-basic
In diesem Beispiel installieren wir Apache mit allen Standardmodulen, mit Hinzufügen von –enable-ssl (um mod_ssl für die SSL-Unterstützung zu installieren) und –enable-so, was hilft, Module in Apache während der Laufzeit über Dynamic Shared zu laden Object (DSO)-Mechanismus, anstatt eine Neukompilierung zu erfordern.
./configure --enable-ssl --enable-so make make install
Hinweis:Standardmäßig installiert das obige Apache unter /usr/local/apache2. Wenn Sie diesen Speicherort ändern möchten, verwenden Sie die Option –prefix in ./configure.
Fehlermeldungen des APR-Dienstprogramms beheben
Sie sind möglicherweise nicht auf dieses Problem gestoßen, als Sie eine ältere Version von Apache installiert haben, wie wir vor einiger Zeit besprochen haben.
Wenn Sie „make“ ausführen, erhalten Sie möglicherweise „rotatelogs.c:(.text+0x5ed):undefined reference to `apr_file_link‘ ” Fehlermeldung, wenn Sie dies unter CentOS 6.2 wie unten gezeigt tun.
# make rotatelogs.c:298: warning: implicit declaration of function âapr_file_linkâ /usr/lib64/apr-1/build/libtool --silent --mode=link gcc -std=gnu99 -pthread -o rotatelogs rotatelogs.lo /usr/lib64/libaprutil-1.la -ldb-4.7 -lexpat -ldb-4.7 /usr/lib64/libapr-1.la -lpthread rotatelogs.o: In function `post_rotate': rotatelogs.c:(.text+0x5ed): undefined reference to `apr_file_link' collect2: ld returned 1 exit status make[2]: *** [rotatelogs] Error 1 make[2]: Leaving directory `/usr/src/httpd-2.4.2/support' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/usr/src/httpd-2.4.2/support' make: *** [all-recursive] Error 1
Dies liegt daran, dass unter CentOS 6 die neueste APR-Version, die über die Yum-Installation verfügbar ist, 1.3.9 ist, wie unten gezeigt.
# rpm -qa apr* apr-1.3.9-3.el6_1.2.x86_64 apr-util-1.3.9-3.el6_0.1.x86_64
Apache 2.4.2 benötigt jedoch die neueste Version von APR (derzeit 1.4.6).
Gehen Sie also zur APR-Downloadseite und laden Sie sowohl apr als auch apr-util herunter.
cd /usr/src wget http://mirror.atlanticmetro.net/apache//apr/apr-1.4.6.tar.gz wget http://mirror.atlanticmetro.net/apache//apr/apr-util-1.4.1.tar.gz tar xvfz apr-1.4.6.tar.gz tar xvfz apr-util-1.4.1.tar.gz
Jetzt sollten Sie diese neue Version der Verzeichnisse apr und apr-util (ohne den Versionsnamen im Verzeichnis) im Verzeichnis „srclib“ ablegen, das sich unter dem Verzeichnis httpd-2.4.2 befindet, das erstellt wurde, als Sie die heruntergeladene Apache-Software dekomprimiert haben.
In meinem Beispiel habe ich httpd-2.4.2.tar.gz heruntergeladen und unter /usr/src entpackt. Also muss ich das neueste apr und apr-util in diesem Verzeichnis ablegen.
mv apr-1.4.6 /usr/src/httpd-2.4.2/srclib/apr mv apr-util-1.4.1 /usr/src/httpd-2.4.2/srclib/apr-util
Nachdem dies erledigt ist, müssen wir es erneut konfigurieren und erstellen. Wenn Sie ./configure –help ausführen, sehen Sie die folgenden Optionen, die sich auf APR beziehen
# cd /usr/src/httpd-2.4.2 # ./configure --help --with-included-apr Use bundled copies of APR/APR-Util --with-apr=PATH prefix for installed APR or the full path to apr-config --with-apr-util=PATH prefix for installed APU or the full path to apu-config
Wenn Sie sich entscheiden, apr-1.4.6 und apr-util-1.4.1 auf Ihrem System zu installieren, müssen Sie „–with-apr“ und „–with-apr-util“ verwenden und den Pfad angeben, wo Sie diese installiert haben Dienstprogramm.
In diesem Beispiel haben wir das nicht gemacht. d.h. Wir haben das heruntergeladene apr und apr-util nicht installiert. Stattdessen haben wir sie unter httpd-2.4.2/srclib/apr-util abgelegt. Also sollten wir „–with-included-apr“ in der ./configure verwenden, die diese apr und apr-util nur für die Apache-Kompilierung und -Installation verwendet.
Lassen Sie uns also ./configure (unter Verwendung von –with-included-apr) wiederholen, make und make install wie unten gezeigt.
./configure --enable-ssl --enable-so --with-included-apr make make install
Jetzt gibt make keine „rotatelogs.c:(.text+0x5ed):undefined reference to `apr_file_link“-Fehlermeldung mehr aus.
SSL in httpd.conf aktivieren
Die Apache-Konfigurationsdatei httpd.conf befindet sich unter /usr/local/apache2/conf.
Entkommentieren Sie die Include-Zeile httpd-ssl.conf und die Zeile LoadModule ssl_module in der Datei /usr/local/apache2/conf/httpd.conf.
# vi /usr/local/apache2/conf/httpd.conf LoadModule ssl_module modules/mod_ssl.so Include conf/extra/httpd-ssl.conf
Sehen Sie sich httpd-ssl.conf an, um alle Standard-SSL-Konfigurationen zu überprüfen. In den meisten Fällen müssen Sie in dieser Datei nichts ändern.
# vi /usr/local/apache2/conf/extra/httpd-ssl.conf
Das SSL-Zertifikat und der Schlüssel sind erforderlich, bevor wir den Apache starten. Die in httpd-ssl.conf erwähnten Dateien server.crt und server.key müssen erstellt werden, bevor wir fortfahren.
# cd /usr/local/apache2/conf/extra # egrep 'server.crt|server.key' httpd-ssl.conf SSLCertificateFile "/usr/local/apache2/conf/server.crt" SSLCertificateKeyFile "/usr/local/apache2/conf/server.key"
Server.crt- und server.key-Datei erstellen
Generieren Sie zuerst den server.key mit openssl.
# cd /usr/src # openssl genrsa -des3 -out server.key 1024
Der obige Befehl fragt nach dem Passwort. Merken Sie sich dieses Passwort unbedingt. Sie benötigen dies, wenn Sie später Ihren Apache starten.
Generieren Sie als Nächstes eine Zertifikatsanforderungsdatei (server.csr) mithilfe der obigen server.key-Datei.
# openssl req -new -key server.key -out server.csr
Erstellen Sie abschließend ein selbstsigniertes SSL-Zertifikat (server.crt) mithilfe der obigen server.key- und server.csr-Datei.
# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Nachdem Sie die obigen Schritte ausgeführt haben, sehen Sie die folgenden drei Dateien unter /usr/src
# ls server* server.crt server.csr server.key
Kopieren Sie die Dateien server.key und server.crt in das entsprechende Apache-Konfigurationsverzeichnis.
cp server.key /usr/local/apache2/conf/ cp server.crt /usr/local/apache2/conf/
Apache starten
Wenn Sie die folgende Fehlermeldung erhalten, stellen Sie sicher, dass Sie die unten gezeigte Zeile in httpd.conf
auskommentieren# /usr/local/apache2/bin/apachectl start AH00526: Syntax error on line 51 of /usr/local/apache2/conf/extra/httpd-ssl.conf: Invalid command 'SSLCipherSuite', perhaps misspelled or defined by a module not included in the server configuration # vi /usr/local/apache2/conf/httpd.conf LoadModule ssl_module modules/mod_ssl.so
Wenn Sie die folgende Fehlermeldung erhalten, stellen Sie sicher, dass Sie die unten gezeigte Zeile in httpd.conf
auskommentieren# /usr/local/apache2/bin/apachectl start AH00526: Syntax error on line 76 of /usr/local/apache2/conf/extra/httpd-ssl.conf: SSLSessionCache: 'shmcb' session cache not supported (known names: ). Maybe you need to load the appropriate socache module (mod_socache_shmcb?). # vi /usr/local/apache2/conf/httpd.conf LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
Schließlich werden Sie aufgefordert, das Passwort für Ihren privaten Schlüssel einzugeben, bevor Sie den Apache starten.
# /usr/local/apache2/bin/apachectl start Apache/2.4.2 mod_ssl (Pass Phrase Dialog) Some of your private key files are encrypted for security reasons. In order to read them you have to provide the pass phrases. Server www.example.com:443 (RSA) Enter pass phrase: OK: Pass Phrase Dialog successful.
Stellen Sie sicher, dass der Apache httpd-Prozess im Hintergrund ausgeführt wird
# ps -ef | grep http root 29529 1 0 13:08 ? 00:00:00 /usr/local/apache2/bin/httpd -k start daemon 29530 29529 0 13:08 ? 00:00:00 /usr/local/apache2/bin/httpd -k start daemon 29531 29529 0 13:08 ? 00:00:00 /usr/local/apache2/bin/httpd -k start daemon 29532 29529 0 13:08 ? 00:00:00 /usr/local/apache2/bin/httpd -k start root 29616 18260 0 13:09 pts/0 00:00:00 grep http
Um den Apache zu stoppen, verwenden Sie apachectl stop.
# /usr/local/apache2/bin/apachectl stop
Verwenden Sie httpd -l, um alle Module anzuzeigen, die im Apache httpd-Daemon kompiliert sind.
# /usr/local/apache2/bin/httpd -l Compiled in modules: core.c mod_so.c http_core.c event.c
Standardmäßig läuft Apache SSL auf Port 443. Öffnen Sie einen Webbrowser und vergewissern Sie sich, dass Sie über https://{Ihre-IP-Adresse}
auf Ihren Apache zugreifen können