Si vous essayez de suivre l'article sur l'installation d'Apache avec SSL dont nous avons parlé il y a quelque temps, vous rencontrerez un problème lors de "make" en raison de la compatibilité de version entre Apache 2.4.4 et les utilitaires APR (Apache Portable Runtime Library) qui vient avec CentOS 6.
Nous avons expliqué dans cet article comment résoudre ce problème pour que la dernière version d'Apache fonctionne sur CentOS ou RedHat.
Assurez-vous que gcc et openssl-devel sont installés.
# yum install gcc # yum install openssl-devel
Vous avez également besoin de l'APR "Apache Portable Runtime Library" pour installer Apache à partir de la source.
Vous aurez déjà installé les packages "apr" et "apr-util". Installez les packages apr-devel et apr-util-devel.
# yum install apr-devel # yum install apr-util-devel
Remarque :Dans notre cas (en raison des problèmes de compatibilité des versions), nous les téléchargerons et les installerons manuellement plus tard. Mais, suivons le courant pour l'instant et voyons ce qui se passe lorsque vous essayez de le faire de cette façon.
Télécharger Apache
Téléchargez Apache depuis httpd.apache.org. La version stable actuelle est la 2.4.2.
Une fois que vous avez obtenu l'URL directe pour télécharger la dernière version stable d'Apache, utilisez wget comme indiqué ci-dessous pour la télécharger directement sur votre serveur.
cd /usr/src wget http://mirror.nyi.net/apache//httpd/httpd-2.4.2.tar.gz tar xvfz httpd-2.4.2.tar.gz
Installer Apache avec SSL/TLS
Affichez toutes les options d'installation et de configuration Apache disponibles, comme indiqué ci-dessous.
cd httpd-2.4.2 ./configure --help
Pour installer un module Apache, vous diriez généralement –enable-{module-name}. Par exemple, pour installer SSL avec Apache, c'est –enable-ssl. Pour installer le module ldap, c'est –enable-ldap.
Pour désinstaller tout module par défaut fourni avec Apache, vous diriez généralement –disable-{module-name}. Par exemple, pour désactiver l'authentification de base dans Apache, c'est –disable-auth-basic
Dans cet exemple, nous allons installer Apache avec tous les modules par défaut, avec l'ajout de –enable-ssl (pour installer mod_ssl pour le support SSL), et –enable-so, qui aide à charger les modules dans Apache pendant l'exécution via le Dynamic Shared Mécanisme d'objet (DSO), plutôt que de nécessiter une recompilation.
./configure --enable-ssl --enable-so make make install
Remarque :Par défaut, ce qui précède installe Apache sous /usr/local/apache2. Si vous souhaitez modifier cet emplacement, utilisez l'option –prefix dans le ./configure.
Correction des messages d'erreur de l'utilitaire APR
Vous n'avez peut-être pas rencontré ce problème lors de l'installation d'une ancienne version d'Apache, comme nous en avons discuté il y a quelque temps.
Lorsque vous exécutez le "make", vous pouvez obtenir "rotatelogs.c:(.text+0x5ed):référence non définie à `apr_file_link' ” message d'erreur si vous faites cela sur CentOS 6.2 comme indiqué ci-dessous.
# 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
En effet, sur CentOS 6, la dernière version APR disponible via l'installation de yum est la 1.3.9, comme indiqué ci-dessous.
# rpm -qa apr* apr-1.3.9-3.el6_1.2.x86_64 apr-util-1.3.9-3.el6_0.1.x86_64
Cependant, Apache 2.4.2 a besoin de la dernière version d'APR (actuellement 1.4.6).
Allez donc sur la page de téléchargement APR et téléchargez apr et 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
Maintenant, vous devez placer cette nouvelle version des répertoires apr et apr-util (sans le nom de la version dans le répertoire) sous le répertoire "srclib" situé sous le répertoire httpd-2.4.2 qui a été créé lorsque vous avez décompressé le logiciel apache téléchargé.
Dans mon exemple, j'ai téléchargé le httpd-2.4.2.tar.gz et l'ai décompressé sous /usr/src. Donc, je dois placer les derniers apr et apr-util dans ce répertoire.
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
Une fois cela fait, nous devons le configurer et le refaire. Si vous exécutez le ./configure -help, vous verrez les options suivantes liées à 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
Si vous décidez d'installer apr-1.4.6 et apr-util-1.4.1 sur votre système, vous devez utiliser "-with-apr" et "-with-apr-util" et fournir le chemin où vous les avez installés utilitaire.
Dans cet exemple, nous n'avons pas fait cela. c'est-à-dire que nous n'avons pas installé l'apr et l'apr-util que nous avons téléchargés. Au lieu de cela, nous les avons placés sous httpd-2.4.2/srclib/apr-util. Donc, nous devrions utiliser "-with-included-apr" dans le ./configure qui utilisera ces apr et apr-util uniquement pour la compilation et l'installation d'Apache.
Alors, reprenons le ./configure (en utilisant -with-included-apr), make et make install comme indiqué ci-dessous.
./configure --enable-ssl --enable-so --with-included-apr make make install
Maintenant, make ne donnera plus le message d'erreur "rotatelogs.c:(.text+0x5ed):référence non définie au `apr_file_link".
Activer SSL dans httpd.conf
Le fichier de configuration Apache httpd.conf se trouve sous /usr/local/apache2/conf.
Décommentez la ligne httpd-ssl.conf Include et la ligne LoadModule ssl_module dans le fichier /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
Consultez le fichier httpd-ssl.conf pour passer en revue toutes les configurations SSL par défaut. Dans la plupart des cas, vous n'avez rien à modifier dans ce fichier.
# vi /usr/local/apache2/conf/extra/httpd-ssl.conf
Le certificat SSL et la clé sont requis avant de démarrer Apache. Les fichiers server.crt et server.key mentionnés dans httpd-ssl.conf doivent être créés avant de continuer.
# 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"
Créer les fichiers server.crt et server.key
Tout d'abord, générez le server.key en utilisant openssl.
# cd /usr/src # openssl genrsa -des3 -out server.key 1024
La commande ci-dessus demandera le mot de passe. Assurez-vous de vous souvenir de ce mot de passe. Vous en aurez besoin pour démarrer votre Apache plus tard.
Ensuite, générez un fichier de demande de certificat (server.csr) à l'aide du fichier server.key ci-dessus.
# openssl req -new -key server.key -out server.csr
Enfin, générez un certificat SSL auto-signé (server.crt) à l'aide des fichiers server.key et server.csr ci-dessus.
# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Une fois que vous avez terminé les étapes ci-dessus, vous verrez les trois fichiers suivants sous /usr/src
# ls server* server.crt server.csr server.key
Copiez les fichiers server.key et server.crt à l'emplacement approprié du répertoire de configuration Apache.
cp server.key /usr/local/apache2/conf/ cp server.crt /usr/local/apache2/conf/
Démarrer Apache
Si vous obtenez le message d'erreur ci-dessous, assurez-vous de décommenter la ligne indiquée ci-dessous dans 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
Si vous obtenez le message d'erreur ci-dessous, assurez-vous de décommenter la ligne indiquée ci-dessous dans 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
Enfin, cela vous demandera d'entrer le mot de passe de votre clé privée avant de démarrer apache.
# /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.
Vérifiez que le processus Apache httpd s'exécute en arrière-plan
# 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
Pour arrêter apache, utilisez apachectl stop.
# /usr/local/apache2/bin/apachectl stop
Utilisez httpd -l pour afficher tous les modules qui sont compilés dans le démon Apache httpd.
# /usr/local/apache2/bin/httpd -l Compiled in modules: core.c mod_so.c http_core.c event.c
Par défaut, Apache SSL s'exécute sur le port 443. Ouvrez un navigateur Web et vérifiez que vous pouvez accéder à votre Apache en utilisant https://{your-ip-address}