Jika Anda mencoba mengikuti artikel cara menginstal Apache dengan SSL yang kami bahas beberapa waktu lalu, Anda akan menghadapi masalah saat "membuat" karena kompatibilitas versi antara Apache 2.4.4 dan utilitas APR (Apache Portable Runtime Library) yang datang dengan CentOS 6.
Kami telah menjelaskan dalam artikel ini cara mengatasi masalah tersebut agar Apache terbaru bekerja di CentOS atau RedHat.
Pastikan Anda telah menginstal gcc dan openssl-devel.
# yum install gcc # yum install openssl-devel
Anda juga memerlukan April “Apache Portable Runtime Library” untuk menginstal Apache dari sumber.
Anda sudah menginstal paket "apr" dan "apr-util". Instal paket apr-devel dan apr-util-devel.
# yum install apr-devel # yum install apr-util-devel
Catatan:Dalam kasus kami (karena masalah kompatibilitas versi), kami akan mengunduh ini dan menginstalnya secara manual nanti. Namun, mari kita ikuti arus untuk saat ini dan lihat apa yang terjadi jika Anda mencoba melakukannya dengan cara ini.
Unduh Apache
Unduh Apache dari httpd.apache.org. Rilis stabil saat ini adalah 2.4.2.
Setelah Anda mendapatkan URL langsung untuk mengunduh Apache versi stabil terbaru, gunakan wget seperti yang ditunjukkan di bawah ini untuk mengunduhnya langsung ke server Anda.
cd /usr/src wget http://mirror.nyi.net/apache//httpd/httpd-2.4.2.tar.gz tar xvfz httpd-2.4.2.tar.gz
Instal Apache dengan SSL/TLS
Lihat semua opsi instalasi dan konfigurasi Apache yang tersedia seperti yang ditunjukkan di bawah ini.
cd httpd-2.4.2 ./configure --help
Untuk menginstal modul Apache, Anda biasanya akan mengatakan –enable-{module-name}. Misalnya, untuk menginstal SSL dengan Apache, itu adalah –enable-ssl. Untuk menginstal modul ldap adalah –enable-ldap.
Untuk menghapus modul default apa pun yang disertakan dengan Apache, Anda biasanya akan mengatakan –disable-{module-name}. Misalnya, untuk menonaktifkan otentikasi dasar di Apache, itu adalah –disable-auth-basic
Dalam contoh ini, kita akan menginstal Apache dengan semua modul default, dengan tambahan –enable-ssl (untuk menginstal mod_ssl untuk dukungan SSL), dan –enable-so, yang membantu memuat modul di Apache selama run-time melalui Dynamic Shared Mekanisme objek (DSO), daripada membutuhkan kompilasi ulang.
./configure --enable-ssl --enable-so make make install
Catatan:Secara default di atas menginstal Apache di bawah /usr/local/Apache2. Jika Anda ingin mengubah lokasi ini, gunakan opsi –prefix di ./configure.
Memperbaiki Pesan Kesalahan Utilitas APR
Anda mungkin tidak menghadapi masalah ini saat menginstal Apache versi lama seperti yang telah kita bahas beberapa waktu lalu.
Saat Anda menjalankan "make", Anda mungkin mendapatkan "rotatelogs.c:(.text+0x5ed):referensi undefined ke `apr_file_link' ” pesan kesalahan jika Anda melakukan ini pada CentOS 6.2 seperti yang ditunjukkan di bawah ini.
# 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
Ini karena pada CentOS 6, versi APR terbaru yang tersedia melalui instalasi yum adalah 1.3.9 seperti gambar di bawah ini.
# rpm -qa apr* apr-1.3.9-3.el6_1.2.x86_64 apr-util-1.3.9-3.el6_0.1.x86_64
Namun, Apache 2.4.2 membutuhkan versi terbaru APR (yang saat ini 1.4.6).
Jadi, buka halaman unduhan APR dan unduh apr dan 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
Sekarang, Anda harus menempatkan versi baru direktori apr dan apr-util ini (tanpa nama versi di direktori) di bawah direktori “srclib” yang terletak di bawah direktori httpd-2.4.2 yang dibuat saat Anda membuka kompresi perangkat lunak apache yang diunduh.
Dalam contoh saya, saya mengunduh httpd-2.4.2.tar.gz dan membuka kompresinya di bawah /usr/src. Jadi, saya perlu menempatkan apr dan apr-util terbaru di bawah direktori ini.
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
Setelah ini selesai, kita perlu mengkonfigurasi dan membuatnya lagi. Jika Anda menjalankan ./configure –help, Anda akan melihat opsi berikut yang terkait dengan 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
Jika Anda memutuskan untuk menginstal apr-1.4.6 dan apr-util-1.4.1 pada sistem Anda, Anda perlu menggunakan “–with-apr” dan “–with-apr-util” dan menyediakan jalur di mana Anda menginstal ini utilitas.
Dalam contoh ini, kami tidak melakukannya. yaitu Kami tidak menginstal apr dan apr-util yang kami unduh. Sebagai gantinya kami menempatkannya di bawah httpd-2.4.2/srclib/apr-util. Jadi, kita harus menggunakan “–with-included-apr” di ./configure yang akan menggunakan apr dan apr-util ini hanya untuk kompilasi dan instalasi Apache.
Jadi, mari kita ulangi ./configure (menggunakan –with-included-apr), make dan make install seperti gambar di bawah ini.
./configure --enable-ssl --enable-so --with-included-apr make make install
Sekarang, make tidak akan memberikan pesan kesalahan “rotatelogs.c:(.text+0x5ed):undefined reference to `apr_file_link” lagi.
Aktifkan SSL di httpd.conf
File konfigurasi Apache httpd.conf terletak di bawah /usr/local/apache2/conf.
Batalkan komentar pada baris Sertakan httpd-ssl.conf dan baris LoadModule ssl_module di file /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
Lihat httpd-ssl.conf untuk meninjau semua konfigurasi SSL default. Untuk sebagian besar kasus, Anda tidak perlu mengubah apa pun dalam file ini.
# vi /usr/local/apache2/conf/extra/httpd-ssl.conf
Sertifikat dan kunci SSL diperlukan sebelum kita memulai Apache. File server.crt dan server.key yang disebutkan dalam httpd-ssl.conf perlu dibuat sebelum kita melanjutkan.
# 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"
Buat file server.crt dan server.key
Pertama, Buat server.key menggunakan openssl.
# cd /usr/src # openssl genrsa -des3 -out server.key 1024
Perintah di atas akan meminta kata sandi. Pastikan untuk mengingat kata sandi ini. Anda memerlukan ini saat memulai Apache nanti.
Selanjutnya, buat file permintaan sertifikat (server.csr) menggunakan file server.key di atas.
# openssl req -new -key server.key -out server.csr
Terakhir, buat sertifikat ssl yang ditandatangani sendiri (server.crt) menggunakan file server.key dan server.csr di atas.
# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Setelah Anda selesai dengan langkah-langkah di atas, Anda akan melihat tiga file berikut di bawah /usr/src
# ls server* server.crt server.csr server.key
Salin file server.key dan server.crt ke lokasi direktori konfigurasi Apache yang sesuai.
cp server.key /usr/local/apache2/conf/ cp server.crt /usr/local/apache2/conf/
Mulai Apache
Jika Anda mendapatkan pesan kesalahan di bawah ini, pastikan untuk menghapus komentar pada baris yang ditunjukkan di bawah ini di 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
Jika Anda mendapatkan pesan kesalahan di bawah ini, pastikan untuk menghapus komentar pada baris yang ditunjukkan di bawah ini di 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
Terakhir, ini akan meminta Anda untuk memasukkan kata sandi untuk kunci pribadi Anda sebelum memulai 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.
Verifikasi bahwa proses Apache httpd berjalan di latar belakang
# 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
Untuk menghentikan apache gunakan apachectl stop.
# /usr/local/apache2/bin/apachectl stop
Gunakan httpd -l untuk melihat semua modul yang dikompilasi di dalam daemon httpd Apache.
# /usr/local/apache2/bin/httpd -l Compiled in modules: core.c mod_so.c http_core.c event.c
Secara default Apache SSL berjalan pada port 443. Buka browser web dan verifikasi bahwa Anda dapat mengakses Apache Anda menggunakan https://{your-ip-address}