Code

Added branches container for old stuff
[gosa.git] / gosa-core / doc / admin / es / manual_gosa_es_certificates.tex
1 \chapter{Seguridad y Certificados}
2 \section{Introduction SSL}
3 \section{Creación de certificados}
4 La seguridad es uno de los puntos mas importantes al configurar un servidor, necesitaremos un entorno seguro donde no permitir que los usuarios manipulen y accedan a codigo o programas.
6 Una formas de conseguir esto es usando encriptación, con lo que buscamos que los usuarios y el servidor se comuniquen de forma que nadie mas pueda acceder a los datos. Esto se consigue con encriptación.
8 La otra manera de asegurar el sistema es que si existe algún fallo en el sistema o en el código, y un intruso intenta ejecutar codigo, este se vea incapacitado, ya que existen poderosas limitaciones, como no permitir que ejecute comandos, lea el codigo de otros script, no pueda modificar nada y tenga un usuario con muy limitados recursos.
9 \subsection{ Certificados SSL}
10 \label{down_ssl}
11 \noindent Necesitaremos \textbf{openSSL}, existe en todas las distribuciones y tiene documentación en su pagina web\cite{ssldoc}.
13 \noindent Las fuentes se pueden descargar de \hlink{http://www.openssl.org/source/}
15 \noindent Existe amplia documentación sobre encriptación y concretamente sobre SSL, un sistema de encriptación con clave publica y privada.
17 \noindent Como el paquete openSSL ya lo tenemos instalado a partir de los pasos anteriores, debemos crear los certificados que usaremos en nuestro servidor web.
19 \noindent Supongamos que guardamos el certificado en /etc/apache2/ssl/gosa.pem
21 \jump
22 \begin{rbox}[label=Pem Certificate]
23 # FILE=/ect/apache2/ssl/gosa.pem
24 # export RANDFILE=/dev/random
25 # openssl req -new -x509 -nodes -out $FILE -keyout /etc/apache2/ssl/apache.pem
26 # chmod 600 $FILE
27 # ln -sf $FILE /etc/apache2/ssl/`/usr/bin/openssl x509 -noout -hash < $FILE`.0
28 \end{rbox}
29 \jump
32 \noindent Con esto hemos creado un certificado que nos permite el acceso SSL a nuestras páginas.
34 \noindent Si lo que queremos es una configuración que nos permita no solo que el tráfico esté encriptado, sino que además el cliente garantice que es un usuario válido, debemos provocar que el servidor pida una certificación de cliente. 
35 \newpage
36 \noindent En este caso seguiremos un procedimiento mas largo, primero la creación de una certificación de CA:
37 \jump
38 \begin{rbox}
39 # CAFILE=gosa.ca
40 # KEY=gosa.key
41 # REQFILE=gosa.req
42 # CERTFILE=gosa.cert
43 # DAYS=2048
44 # OUTDIR=.
45 # export RANDFILE=/dev/random
46 # openssl req -new -x509 -keyout $KEY -out $CAFILE -days $DAYS
47 \end{rbox}
48 \jump
50 Después de varias cuestiones tendremos una CA, ahora hacemos un requerimiento para un nuevo certificado:
51 \jump
52 \begin{rbox}
53 # >DAYS=365
54 # >openssl req -new -keyout $REQFILE -out $REQFILE -days$DAYS
55 \end{rbox}
56 \jump
58 Creamos una configuración para usar la CA con openssl y la guardamos en openssl.cnf:
59 \jump
60 \begin{rbox}
61 HOME = .
62 RANDFILE = $ENV::HOME/.rnd
63 [ ca ]
64 default_ca  = CA_default
65 [ CA_default ]
66 dir = .
67 database = index.txt
68 serial = serial
69 default_days = 365
70 default_crl_days= 30
71 default_md = md5
72 preserve = no
73 policy = policy_anything
74 [ policy_anything ]
75 countryName = optional
76 stateOrProvinceName  = optional
77 localityName = optional
78 organizationName = optional
79 organizationalUnitName  = optional
80 commonName = supplied
81 emailAddress = optional
82 \end{rbox}
83 \jump
85 Firmamos el nuevo certificado:
86 \jump
87 \begin{rbox}
88 # touch index.txt
89 # touch index.txt.attr
90 # echo "01" >serial
91 # openssl ca -config openssl.cnf -policy policy_anything \
92     -keyfile $KEY -cert $CAFILE -outdir . -out $CERFILE -infiles $REQFILE
93 \end{rbox}
94 \jump
96 Y creamos un pkcs12 para configurar la certificación en los clientes:
97 \jump
98 \begin{rbox}
99 # openssl pkcs12 -export -inkey $KEY -in $CERTFILE -out certificado_cliente.pkcs12
100 \end{rbox}
101 \jump
102 Este certificado se puede instalar en el cliente, y en el servidor mediante la configuración explicada en cada uno, esto nos dará la seguridad de que su comunicación será estrictamente confidencial.\\