El día de hoy me vi en la necesidad de montar un entorno de pruebas para una aplicación de Facebook que me encuentro desarrollando. Debido que a partir del año pasado es necesario poseer un SSL para trabajar sobre Facebook me vi en la necesidad de configurar mi servidor de aplicaciones PHP (WAMP) con un certificado SSL. A continuación documentare el proceso que encontré googleando un poco pero que no esta disponible en español.
Descripción del servidor:
SO: Windows Server 2003
Servidor de aplicaciones: WAMP 2.2
PHP
MySQL
PASO 1: Crear el certificado SSL
Según la documentación de WAMP debemos entrar por
linea de comando a la ruta wamp\bin\apache\apache2.2.8\bin (
donde 2.2.8 corresponderá a la versión del apache que venia con tu WAMP, en mi caso 2.2.22) y ejecutar las siguientes lineas de comando:
openssl genrsa -des3 -out server.key 1024
Al ejecutarse esta linea de comando te solicitara una contraseña la cual podrás elegir a tu preferencia.
Antes de continuar, quiero hacer un paréntesis ya que al intentar ejecutar el comando openssl obtenia un error en la dll ssleay32.dll
"The ordinal 968 could not be located in dynamic link library LIBEAY32.dll" para solucionarlo instale el
OpenSSL win32 light , y reemplace los archivos que menciono a continuación en el directorio bin del apache del WAMP
ssleay32.dll
libeay32.dll
openssl.exe
Bueno continuando con la creación del certificado ejecuto las siguientes lineas de comando desde el cmd de windows
copy server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl req -new -x509 -nodes -sha1 -days 365 -key server.key -out server.crt -config C:\wamp\bin\apache\apache2.2.8\conf\openssl.cnf
Recuerda que para la tercera linea de comando el directorio apache2.2.8 corresponderá a tu versión de apache instalada, una vez se haya ejecutado la 3ra linea de comando se te solicitaran alguna información tuya y de tu servidor.
PASO 2: Montaje en WAMP
Finalizada la creación del certificado aparecerán en el directorio bin (
wamp\bin\apache\apache2.2.8\bin) de tu apache los archivos: server.key y server.crt los cuales deberás copiar en el directorio de configuracion del mismo (wamp\bin\apache\apache2.2.8\conf) en los directorios que deberás crear
ssl.key (para server.key)
ssl.crt (para server.crt)
PASO 3: Configuración
Edición del httpd.conf file y php.ini
Para el caso del
httpd.conf deberemos descomentar las lineas
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd_ssl.conf
y agregar bajo la linea del Include
<IfModule ssl_module></IfModule>
Para el caso del php.ini (el cual hace referencia al que esta en la carpeta bin del apache
wamp\bin\apache\apache2.2.8\bin) deberemos descomentar la linea:
extension=php_openssl.dll
Como pudiste ver incluimos el directorio conf/extra/httpd_ssl.conf dentro de la configuración de nuestro apache a continuación definiremos algunos parámetros para el certificado creado.
Quitar las comillas a "SSLMutex default"
Buscar la linea de <VirtualHost _default_:443> y cambiar la linea que dice DocumentRoot por:
"C:/wamp/www/" con comillas y cambiar el Error log de igual manera
Cambiar el SSLCertificateFile a "conf/ssl.crt/server.crt"
Cambiar el SSLCertificateKeyFile a "conf/ssl.key/server.key"
Cambiar <Directory "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin"> a <Directory "C:/wamp/www/"> y agregar las siguientes lineas de codigo dentro del tag Directory
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
Verifica que la linea CustomLog "logs/ssl_request_log" este des comentada
PASO 4: Prueba
Para verificar nuestra configuración introducimos la siguiente linea de comando donde intrudujimos los comando del openssl:
httpd -t
Si hemos realizado todo correctamente nos aparecerá OK reiniciamos servicios del WAMP
y tenemos montado el SSL localmente para publicarlo en una dirección publica o dominio de servidor
modificamos la linea dentro del
httpd_ssl.conf y reiniciamos servicios del servidor
ServerName localhost:443' a 'ServerName www.tudominio.com:443'
Espero les sirva de tanta ayuda como para mi!
Saludos