LAMP - Web segura

Montando un Servidor Seguro

Ahora queremos aumentar la seguridad en nuestras conexiones, especialmente para cuando debamos introducir nombres de usuario y claves de acceso, consiguiendo que las comunicaciones entre el Servidor web y los clientes se realicen cifradas.

A instalar...

# urpmi apache-mod_ssl
instalando apache-mod_ssl-2.0.54-6.1.20060mdk.i586.rpm
Preparando... #############################################
1/1: apache-mod_ssl #############################################
................
Getting CA Private Key
writing RSA key
Shutting down httpd: [OK]
Starting httpd: [OK]

Bien, ya está todo instalado y en funcionamiento (a modo de pruebas) como podemos comprobar apuntando a https://localhost.

Personalización

En /etc/ssl/apache/ se han creado dos archivos: server.crt y server.key.

server.crt contiene el certificado (clave pública más los datos que identifican a nuestro servidor, firmados por una Agencia Certificadora -CA- ).
server.key contiene las claves pública y privada para nuestro servidor.

Usando el script /usr/lib/ssl/apache-mod_ssl/gentestcrt.sh generaremos nuestros propios certificados auto-firmados y personalizados para nuestro servidor. Pero primero vamos al directorio (esto es importante) y hacemos copia de seguridad de lo que hay por si falla algo:

# cd /etc/ssl/apache/
# mv server.crt server.crt.bak
# mv server.key server.key.bak

Ahora el script. Iré señalando algunos pasos e indicando qué está ocurriendo:

# /usr/lib/ssl/apache-mod_ssl/gentestcrt.sh
Crearemos server.crt y server.key en /etc/ssl/apache/
INICIANDO
..................................
Creando una CA personalizada
PASO 1: Generando clave privada RSA para CA (1024 bit)
..................................
STEP 2: Generando certificado X.509 de petición de firma para CA
..................................
1. Country Name (2 letter code) []:ES
2. State or Province Name (full name) []:Andalucia
3. Locality Name (eg, city) []:Bollullos
4. Organization Name (eg, company) [WWW.ADVX.ORG TEMPORARY CERTIFICATE localhost.PN7389]:IES Delgado Hernández
5. Organizational Unit Name (eg, section) [For Testing Purposes Only]:"No es parte de un certificado"
6. Common Name (eg, CA name) [localhost.PN7389]:www.iesdelgadohernandez.es
7. Email Address (eg, name@FQDN) []:webmaster@iesdelgadohernandez.es
..................................
PASO 3: Generando certificado X.509 para CA autofirmado.
..................................
RESULTADO:
OK
..................................
GENERACIÓN DEL CERTIFICADO
Generando para USUARIO [servidor]
PASO 5: Generando clave privada RSA para USUARIO (1024 bit)
............................
PASO 6: Generando certificado X.509 de petición de firma para USUARIO
..................................
1. Country Name (2 letter code) []:ES
2. State or Province Name (full name) []:Andalucia
3. Locality Name (eg, city) []:Bollullos del Condado
4. Organization Name (eg, company) [localhost.PN7389]:IES Delgado Hernández
5. Organizational Unit Name (eg, section) [localhost.PN7389]:"No es parte de un certificado"
6. Common Name (eg, DOMAIN NAME) [localhost.PN7389]:www.iesdelgadohernandes.es
7. Email Address (eg, name@fqdn) []:webmaster@iesdelgadohernandez.es
..................................
STEP 7: Generando certificado X.509 firmado por la propia CA
RESULTADO:
server.crt: OK
..................................
Creación del Certificado concluidad

Ahora reiniciamos el servidor

[root@3000xp apache]# /etc/init.d/httpd restart
Shutting down httpd: [OK]
Starting httpd: [OK]

Apuntemos de nuevo hacia https://localhost y comprobemos que todo va bien.

Puertos

La conexión a un servidor seguro se realiza a través del puerto 443 mediante SSL. Asegurémosnos de que éste está abierto en nuestro cortafuegos si querermos acceder a nuestro Servidor desde el exterior.

Si lo hacemos con los asistentes de mandriva, ejecutaremos drakfirewall y haremos clic en la opción avanzadas. Ya debemos tener deshabilitada la elección Todo (sin cortafuegos) y marcada la opción Servidor web que abre el puerto 80. Ahora en Otros puertos colocaremos 443/tcp y aceptaremos.

. : .