Pokud se pokusíte postupovat podle článku o tom, jak nainstalovat Apache s SSL, o kterém jsme diskutovali před chvílí, budete čelit problému při „vytvoření“ kvůli kompatibilitě verzí mezi Apache 2.4.4 a nástroji APR (Apache Portable Runtime Library), které přicházejí s CentOS 6.
V tomto článku jsme vysvětlili, jak tento problém vyřešit, aby nejnovější Apache fungoval na CentOS nebo RedHat.
Ujistěte se, že máte nainstalované gcc a openssl-devel.
# yum install gcc # yum install openssl-devel
K instalaci Apache ze zdroje také potřebujete „Apache Portable Runtime Library“ APR.
Již máte nainstalovaný balíček „apr“ a „apr-util“. Nainstalujte balíčky apr-devel a apr-util-devel.
# yum install apr-devel # yum install apr-util-devel
Poznámka:V našem případě (kvůli problémům s kompatibilitou verzí) je stáhneme a nainstalujeme ručně později. Ale teď pojďme s proudem a uvidíme, co se stane, když to zkusíte udělat tímto způsobem.
Stáhnout Apache
Stáhněte si Apache z httpd.apache.org. Aktuální stabilní verze je 2.4.2.
Jakmile získáte přímou adresu URL pro stažení nejnovější stabilní verze Apache, použijte wget, jak je uvedeno níže, ke stažení přímo na váš server.
cd /usr/src wget http://mirror.nyi.net/apache//httpd/httpd-2.4.2.tar.gz tar xvfz httpd-2.4.2.tar.gz
Nainstalujte Apache s SSL/TLS
Prohlédněte si všechny dostupné možnosti instalace a konfigurace Apache, jak je uvedeno níže.
cd httpd-2.4.2 ./configure --help
Chcete-li nainstalovat modul Apache, obvykle byste řekli –enable-{název-modulu}. Například pro instalaci SSL s Apache je to –enable-ssl. Chcete-li nainstalovat modul ldap, je to –enable-ldap.
Chcete-li odinstalovat jakýkoli výchozí modul dodávaný s Apache, obvykle byste řekli –disable-{název-modulu}. Chcete-li například zakázat základní ověřování v Apache, je to –disable-auth-basic
V tomto příkladu nainstalujeme Apache se všemi výchozími moduly, s přidáním –enable-ssl (pro instalaci mod_ssl pro podporu SSL) a –enable-so, který pomáhá načítat moduly v Apache za běhu prostřednictvím Dynamic Shared Objektový (DSO) mechanismus namísto nutnosti rekompilace.
./configure --enable-ssl --enable-so make make install
Poznámka:Ve výchozím nastavení výše uvedené instaluje Apache pod /usr/local/apache2. Pokud chcete toto umístění změnit, použijte volbu –prefix v souboru ./configure.
Oprava chybových zpráv nástroje APR
Možná jste se s tímto problémem nesetkali při instalaci starší verze Apache, jak jsme před časem diskutovali.
Když spustíte „make“, můžete získat „rotatelogs.c:(.text+0x5ed):nedefinovaný odkaz na „apr_file_link“ “, pokud to děláte na CentOS 6.2, jak je uvedeno níže.
# 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
Je to proto, že na CentOS 6 je nejnovější verze APR dostupná prostřednictvím instalace yum 1.3.9, jak je uvedeno níže.
# 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 však potřebuje nejnovější verzi APR (která je aktuálně 1.4.6).
Přejděte na stránku stahování APR a stáhněte si apr i apr-util.
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
Nyní byste měli umístit tuto novou verzi adresářů apr a apr-util (bez názvu verze v adresáři) do adresáře „srclib“ umístěného v adresáři httpd-2.4.2, který byl vytvořen, když jste rozbalili stažený software apache.
V mém příkladu jsem si stáhl httpd-2.4.2.tar.gz a rozbalil jej pod /usr/src. Takže musím do tohoto adresáře umístit nejnovější apr a apr-util.
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
Poté, co to uděláme, musíme to znovu nakonfigurovat a udělat. Pokud spustíte ./configure –help, uvidíte následující možnosti související s APR
# 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
Pokud se rozhodnete nainstalovat apr-1.4.6 a apr-util-1.4.1 na váš systém, musíte použít „–with-apr“ a „–with-apr-util“ a uvést cestu, kam jste je nainstalovali. utility.
V tomto příkladu jsme to neudělali. tj. Nenainstalovali jsme apr a apr-util, které jsme si stáhli. Místo toho jsme je umístili pod httpd-2.4.2/srclib/apr-util. Měli bychom tedy použít „–with-included-apr“ v souboru ./configure, který použije tyto apr a apr-util pouze pro kompilaci a instalaci apache.
Pojďme tedy znovu provést ./configure (pomocí –with-included-apr), provést instalaci a provést instalaci, jak je uvedeno níže.
./configure --enable-ssl --enable-so --with-included-apr make make install
Nyní již make nebude dávat chybovou zprávu „rotatelogs.c:(.text+0x5ed):undefined reference to `apr_file_link“.
Povolte SSL v httpd.conf
Konfigurační soubor Apache httpd.conf se nachází v /usr/local/apache2/conf.
Odkomentujte řádek httpd-ssl.conf Include a řádek LoadModule ssl_module v souboru /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
Prohlédněte si httpd-ssl.conf a prohlédněte si všechny výchozí konfigurace SSL. Ve většině případů nemusíte v tomto souboru nic upravovat.
# vi /usr/local/apache2/conf/extra/httpd-ssl.conf
Před spuštěním Apache je vyžadován SSL certifikát a klíč. Soubor server.crt a server.key zmíněný v httpd-ssl.conf musí být vytvořen, než budeme pokračovat.
# 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"
Vytvořte soubor server.crt a server.key
Nejprve vygenerujte server.key pomocí openssl.
# cd /usr/src # openssl genrsa -des3 -out server.key 1024
Výše uvedený příkaz bude vyžadovat heslo. Toto heslo si nezapomeňte zapamatovat. Budete to potřebovat při pozdějším spuštění Apache.
Dále vygenerujte soubor žádosti o certifikát (server.csr) pomocí výše uvedeného souboru server.key.
# openssl req -new -key server.key -out server.csr
Nakonec vygenerujte certifikát ssl s vlastním podpisem (server.crt) pomocí výše uvedených souborů server.key a server.csr.
# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Po provedení výše uvedených kroků uvidíte následující tři soubory pod /usr/src
# ls server* server.crt server.csr server.key
Zkopírujte soubory server.key a server.crt do příslušného umístění konfiguračního adresáře Apache.
cp server.key /usr/local/apache2/conf/ cp server.crt /usr/local/apache2/conf/
Spusťte Apache
Pokud se vám zobrazuje níže uvedená chybová zpráva, nezapomeňte odkomentovat řádek zobrazený níže v httpd.conf
# /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
Pokud se vám zobrazuje níže uvedená chybová zpráva, nezapomeňte odkomentovat řádek zobrazený níže v httpd.conf
# /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
Nakonec vás to před spuštěním apache vyzve k zadání hesla pro váš soukromý klíč.
# /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.
Ověřte, že proces Apache httpd běží na pozadí
# 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
K zastavení Apache použijte apachectl stop.
# /usr/local/apache2/bin/apachectl stop
Použijte httpd -l k zobrazení všech modulů, které jsou zkompilovány uvnitř démona Apache httpd.
# /usr/local/apache2/bin/httpd -l Compiled in modules: core.c mod_so.c http_core.c event.c
Ve výchozím nastavení Apache SSL běží na portu 443. Otevřete webový prohlížeč a ověřte, že máte přístup k Apache pomocí https://{vaše-ip-adresa}