Unidad 7 SSL.pdf

Embed Size (px)

Citation preview

  • SSL

    Generando cerficados SSL para apache:

    El primer paso es crear la clave RSA privada. Esta clave es del tipo RSA de 1024 bits y estar encriptada usando Triple DES y guardada en formato PEM de forma tal que sea visible como texto ASCII.

    Usaremos varios archivos como fuente de numeros aleatorios lo que ayudar a hacer la clave ms segura. Un buen formato son archivos texto comprimidos en formato gzip. La clave es generada usando el siguiente comando (file1 a file5 son los archivos a ser usados para mejorar los numeros aleatorios), en nuestro caso de ejemplo, yo usar dos archivos binarios. En la vida real les recomiendo poner algunos archivos ms

    openssl genrsa -rand /usr/bin/lsattr:/bin/cat -out server.key 1024

    26976 semi-random bytes loaded

    Generating RSA private key, 1024 bit long modulus

    .........++++++

    .......++++++

    e is 65537 (0x10001)

    Aqu est generada la server.key, la clave privada de nuestro servidor.

    Es muy importante mantener una copia de sta clave pues es la base para la encriptacinusando un certificado. De ser posible mantener un respaldo en un disquete o cinta. El costo de un certificado,aunque vara, est entre los 30 y los 600usd aproximadamente (al ao, ver www.nuestroserver.com) y es sumamente doloroso tener que regenerar un certificado nuevamente por no haber guardado los archivos utilizados para la generacin de ste.

    Ahora procedamos a generar una peticin de certificacin (Certificate Signed Request). Con esta podremos realizar la peticin de un certificado a la entidad certificadora de nuestra eleccin. Este es el archivo que se les enva cuando ellos solicitan el CSR. Sin embargo, tambin podemos hacer que nuestro sistema genere un Certificado AutoGenerado el cual nos permitir operar de forma segura, pero siempre le sacar a los clientes una advertencia de que el certificado no puede ser validado en una entidad certificadora.

    En negrita est lo que nosotros debemos ir escribiendo. El ejemplo es para Quito, Pichincha, Ecuador, pero debe ponerse los datos de su organizacin propiamente dichos.

    openssl req -new -key server.key -out server.csr

    What you are about to enter is what is called a Distinguished Name or a DN.

  • There are quite a few fields but you can leave some blank

    For some fields there will be a default value,

    If you enter '.', the field will be left blank.

    -----

    Country Name (2 letter code) [GB]:EC

    State or Province Name (full name) [Berkshire]:Pichincha

    Locality Name (eg, city) [Newbury]:Quito

    Organization Name (eg, company) [My Company Ltd]:EcuaLinux

    Organizational Unit Name (eg, section) []:IT

    Common Name (eg, your name or your server's hostname) []:www.ecualinux.com

    Email Address []:[email protected]

    Please enter the following 'extra' attributes to be sent with your certificate request

    A challenge password []:

    An optional company name []:

    Cuando vayamos a comprar un certificado, enviaremos ste archivo a la entidad certificadora. Ahora, como esto toma un tiempo y cuesta dinero, procedamos nosotros a generarnos un certificado autogenerado a partir de estos datos y seguir operando hasta que idealmente nos llegue el certificado vlido. Este certificado de ejemplo ser vlido por 60 das, podemos poner ms (1400 o algo as) si es que nunca vamos a pedir un certificado vlido a una entidad certificadora.

    openssl x509 -req -days 60 -in server.csr -signkey server.key -out server.crt

    Signature ok

    subject=/C=EC/ST=Pichincha/L=Quito/O=Ecualinux/OU=IT/CN=Ernesto

    Perez/[email protected]

    Getting Private key

    Listo.. ya tendremos nuestro certificado autogenerado.

    En el caso de que hayamos solicitado un certificado de autenticidad a una entidad certificadora:Es ste certificado el que nos enviara una entidad certificadora para que usemos. Cuado lo envan, normalmente lo hacen en el cuerpo del mensaje, lo que tenemos que hacer

  • realmente es crear un nuevo archivo llamado server.crt y pegarle todos los datos que nos indiquen.

    Instalando el certificado en apacheprimero verificar que apache y mod_ssl estn instalado, estos dos paquetes son necesarios para trabajar con ssl en apache:rpm -q httpd mod_ssl

    Si no estn instalados, instalarlo conjuntamente con el php y el mdulo para el manejo de ssl:yum install php php-imap php-mysql httpd mod_ssl

    probemos que el apache arranqueservice httpd restart

    Una vez instalado el apache, los certificados SSL estarn activos. Puesto que por defecto mod_ssl busca en /etc/httpd/conf.d/ssl.conf e intenta usar los certificados nombrados server.crt y server.key[root@laptop ~]# cp server.crt /etc/httpd/conf/ssl.crt/

    [root@laptop ~]# cp server.key /etc/httpd/conf/ssl.key/

    [root@laptop ~]# service httpd restart

    Stopping httpd: [FAILED]

    Starting httpd: [ OK ]

    Nota:Si quisiramos agregar un servidor virtual con ssl, sugiero editar el archivo /etc/httpd/conf.d/ssl.conf ahi se definen los servidores virtuales en ssl. Tener en consideracin que el archivo .crt y el .key deben ser diferentes para cada sitio virtual. Tambin debemos tener en cuenta que apache permite slo un certificado SSL por cada IP. Esto es, si quisiramos ms de un certificado SSL en el servidor, debemos obtener ms de una direccin IP para el servidor.

    y listo.. ya tenemos nuestro certificado instalado para esa IP del servidor.

    SSLGenerando cerficados SSL para apache:En el caso de que hayamos solicitado un certificado de autenticidad a una entidad certificadora:Instalando el certificado en apacheNota: