jueves, 3 de diciembre de 2009

Configurar Apache2 con SSL

Pasos para configurar el Servidor Web Apache2 de forma segura o con SSL.

Fase de configuración e instalación de paquetes:

1.-Descargar de la página (httpd:www.openssl.org/source/)de hay descargar el paquete comprimido "openssl-0.9.81", tambien directamente desde la terminal ingresando este comando:

apt-get openssl-0.9.81

2.-Descomprimir este paquete ya sea con click derecho en la opción (extraer aquí) ó desde la terminal con el comando:

tar xvzf openssl-0.9.81.tar.gz

3.-Una ves descomprimido este paquete lo copiaran en /usr, manualmente o desde la terminal con cp sintaxis: cp origen destino

4.-Nos cambiamos a esa carpeta ingresando en la terminal este comando:

cd /usr/openssl-0.9.81

6.-Para la pre-instalación, ingrese en la terminal este comando:

./config –prefix=/usr/local/apache2/ssl/install –openssldir=/usr/local/ssl/install/openssl

7.-Para compilar ingrese en la terminal este comando:

make

8.-Para compilar e instalar ingrese en la terminal este comando:

sudo make install

9.-Ahora para añadir a el Servidor Web Apache2 en openssl, ingrese en la terminal este comando:

./configure --prefix=/etc/apache2/ --enable-ssl –with-ssl=/usr/local/ssl/install/openssl

10.-Para compilar ingrese en la terminal este comando:

make

11.-Para compilar e instalar ingrese en la terminal este comando:

sudo make install

Paso de creación del Par de llaves(KEY):

1.-Para general el par de llaves ingrese en la terminal este comando:

sudo /usr/local/ssl/install/bin/openssl genrsa –des3 –rand file1:file2:file3 –out (nombre de mi llave).key 1024

Especificaciones:

-genrsa: Indica a openssl que queremos generar el par de llaves
-rand: Se utiliza para proveer a openssl con datos aleatorios y así generar llaves que son únicas e impredecibles
-file1:file:2file3: Son sustituidos por archivos relativamente al azar para este propósito.
-out: Indica donde se guardara el resultado.
-1024: Indica el número de bits para la generación de las llaves.

2.-Al hacer este comando recibiremos una petición como esta:

*Enter PEM pass phrase:
3.-Escribimos la frase secreta para nuestra llave y nos responderá
*Verifying password – Enter PEM pass phrase:

Ya tenemos nuestro par de llaves nos falta generar el Certificado, para generar un certificado publico de una Autoridad Certificadora debemos enviar algo que es llamado: certificate signing request.

Paso para los requisitos del certificado(CRT):

1.-Para hacer esto ingrese en la terminal este comando:

./usr/local/ssl/install/bin/openssl req –new –key (nombre de mi llave).key –out (nombre de mi petición).csr

2.-Al hacer este comando nos mostrara algo como esto:

-Enter PEM pass phrase:
-Country Name (2 letter code) [AU]:MX
-State or Province Name (full name) [Some-State]:DF
-Locality Name (eg, city) []: DF
-Organization Name (eg, company) [Internet Widgits Pty Ltd]:.
-Organizational Unit Name (eg, section) []:.
-Common Name (eg, YOUR name) []:www.mygnet.com
-Email Address []:administrator@mygnet.com
-Please enter the following 'extra' attributes to be sent with your certificate request
-A challenge password []: enter
-An optional company name []: enter

3.-Ahora el certificado esta guardado en (nombre de mi petición).csr

Prosiguiremos a crear un Certificado firmado por si mismo esto significa que podemos ser tanto el destinatario como el usuario del certificado.

Paso para crear un Certificado firmado:

1.-Para hacer esto ingrese en la terminal este comando:

./usr/local/ssl/install/bin/openssl x509 –req –days 365 –in (nombre de mi petición).csr –signkey (nombre de mi llave).key –out (nombre de mi certificado).crt

2.-Creen una carpeta dentro de esta dirección /usr/local/ssl/install/openssl/(nombre de mi carpeta), con mkdir (nombre de mi carpeta), dentro de esta carpeta copiaremos la llave y el certificado.

¡Recuerden si lo quieren hacer desde desde la terminal con cp sintaxis: cp origen destino!

3.-Si bien lo prefieren tambien puede ser así:

-Copiar (nombre de mi certificado).crt a:
-/usr/local/ssl/install/openssl/certs/
-y tambien debemos copiar (nombre de mi llave).key a:
-/usr/local/ssl/install/openssl/private/

Pasos para la configuracion de SSL y Apache2:

1.-Buscar en esta dirección /usr/local/apache2/conf/, el archivo httpd.conf.

2.-Situados en esta dirección, para modificar el httpd.conf desde la terminal ingresa este comando:

sudo nano httpd.conf

3.-Modifica el httpd.conf para generar esto:

Listen 80
Listen 443
ServerName (nombre de mi página)
SSLEngine on
SSLCertificateFile
/usr/local/ssl/install/openssl/certs/(nombre de mi certificado).crt
SSLCertificateKeyFile
/usr/local/ssl/install/openssl/private/(nombre de mi llave).key
-Guarda Ctrl+O
-Cierra Ctrl+X

Con la configuración anterior levantamos un virtualhost que estará escuchando por el puerto 443 (que es el default para el HTTPS) y habilitamos el SSL en el virtualhost con la directiva SSLEngine.

Paso para encender su Servidor Web Apache2 con SSL:

1.-Encienda su Servidor Web Apache2 con SSL ingresando en la terminal este comando:

sudo /usr/local/apache2/bin/apachectl start ó
sudo /usr/local/apache2/bin/apachectl startssl

2.-Nos pedira que escribamos nuestra : pass phrase, hecho esto ya tenemos nuestro servidor Apache2 con SSL.

3.-Para comprobar que este encendido vaya al explorador Mozila Firefox e ingrese en la barra de direcciones (https://localhost), si aparece la frase "Its Works"; esta correctamente instalado y encendido su Servidor Web Apache2 con SSL.

4.-Para apagar el Servidor Web Apache2 con SSL ingrese en la terminal este comando:

sudo /usr/local/apache2/bin/apachectl stop ó
sudo /usr/local/apache2/bin/apachectl stopssl

1 comentario: