This translation is older than the original page and might be outdated. See what has changed.
Traducciones de esta página:

Cómo crear tu propio certificado de seguridad SSL CA y dar mayor seguridad a múltiples servicios

Este manual explica cómo crear tus propios Certificados de Seguridad SSL y proporcionar acceso seguro a los siguientes servicios: Apache, Courier, Postfix y ProFTPD.

[Los agradecimientos para la parte de los Certificados de Seguridad han de enviarse a http://fra.nksteidl.de/Erinnerungen/OpenSSL.php]

1. Crea tu SSL CA

1.1 Instala el paquete openssl

Lo primero que tienes que hacer es instalar el paquete openssl:

<cli> apt-get install openssl </cli>

1.2 Edita el archivo de configuración openssl

Después tienes que editar el archivo /etc/ssl/openssl.cnf para que quede como éste (Entenderemos que el nombre de tu CA es “RootCA”… aunque puedes cambiar este nombre si quieres):

<cli> Linea 32: default_ca = RootCA Linea 35: [ RootCA ] Linea 37: dir = /root/RootCA Linea 41: unique_subject = no # solo si dispones de esta linea Linea 70: default_md = md5 </cli>

Si lo deseas puedes cambiar los valores en la sección [req_destinquished_name] a tu idioma (en nuestro caso utilizaremos España): <cli> [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = ES countryName_min = 2 countryName_max = 2

stateOrProvinceName = Mi Provincia stateOrProvinceName_default = Mi Provincia

localityName = Mi Localidad localityName_default = Mi Localidad

0.organizationName = Mi organización 0.organizationName_default = Mi organización

# podemos cambiar esto, pero no es obligatorio :-) #1.organizationName = Segunda organización (p.ej., empresa) #1.organizationName_default = WWW123, S.L.

organizationalUnitName = El departamento de mi empresa #organizationalUnitName_default =

commonName = miNombreDeDominio.com (el dominio al que se quiere dar seguridad) commonName_max = 64

emailAddress = micorreo@miNombreDeDominio.com emailAddress_max = 64 </cli>

1.3 Crea los directorios y ficheros necesarios

Ahora tienes que crear los directorios y los ficheros que has especificado en openssl.cnf:

<cli> mkdir /root/RootCA # o el directorio en donde vayas a guardar tu CA cd /root/RootCA mkdir newcerts certs crl private touch index.txt # el número de serie empieza en 01 echo “01” > serial </cli>

1.4 Generamos los datos aleatorios para el Certificado CA

Necesitas instalar el paquete sharutils para poder usar el programa de generación de datos uuencode.

<cli> cat /dev/urandom | uuencode -m bla | head -19 | sed “s/begin.*g”\ | tail -18 | xargs | sed “s/ g” > /root/RootCA/private/.rand chmod 770 /root/RootCA/private/.rand ls -alh /root/RootCA/private/.rand </cli>

1.5 Crea el Certificado CA

Ahora vas a generar el Certificado CA…

Genera la clave. ¡¡Tienes que utilizar una clave de acceso eficaz ya que deberá permanecer segura durante los próximos años!! <cli>

openssl genrsa -aes256 -out private/RootCA.key.pem -rand private/.rand 2048

</cli>

Genera el certificado: <cli> openssl req -new -x509 -days 1827 -key private/RootCA.key.pem -out RootCA.cert.pem </cli>

(-days 1827 va a crear un certificado válido durante 5 años)

Verifica que todo ha ido bien y que tu certificado es válido: <cli> openssl x509 -in RootCA.cert.pem -text | less </cli>

Copia el certificado y la clave privada en el directorio especificado en openssl.cnf : <cli> cp /root/RootCA/RootCA.cert.pem /root/RootCA/cacert.pem cp /root/RootCA/private/RootCA.key.pem /root/RootCA/private/cakey.pem </cli>

Pon el certificado bajo el control del CA. Debe ser copiado con el número de serie como nombre de fichero en el directorio /certs y enlazado a éste último por su hash-value: <cli> cd /root/RootCA cp RootCA.cert.pem /root/RootCA/certs/00.pem cd /root/RootCA/certs/ ln -s 00.pem `openssl x509 -hash -noout -in 00.pem`.0 </cli>

1.6 Publica el certificado CA

Tu CA está iniciado y puedes distribuir tu certificado. Para hacerlo, renombra el fichero ”.cert.pem” como ”.crt” y copia el nuevo fichero en algún lugar accesible por Internet, de donde sus usuarios se lo podrán descargar:

<cli> cp /root/RootCA/RootCA.cert.pem /var/www/virtual/miNombreDeDominio.com/htdocs/RootCA.crt chmod 444 /var/www/virtual/miNombreDeDominio.com/htdocs/RootCA.crt </cli>

Ahora ya puedes importar tu certificado en tu navegador. Accede a la siguiente dirección: http://miNombreDeDominio.com/RootCA.crt

2. Crea los certificados del servidor

2.1 Genera un certificado de servidor

Todos los certificados de servidor son creados de la misma manera. No debes crear una clave de acceso para estos certificados ya que si lo haces deberás proporcionar la clave de accso cada vez que reinicies el servidor Apache o algún otro servidor relacionado (¡lo que desde luego no es una idea muy brillante!). La desactivación de la clave de acceso será automática si omites la “encryption-algorith” en el momento de la creación de la clave privada.

<cli> cd /root/RootCA touch /root/RootCA/index.txt openssl genrsa -out server.key.pem -rand private/.rand 2048 # Genera la clave openssl req -new -key server.key.pem -out server.req.pem # Genera el certificado openssl ca -name RootCA -in server.req.pem -out server.cert.pem # Firma el certificado con tu CA (deberás introducir la clave de acceso de tu CA) </cli>

Mueve el certificado al directorio “certs” y enlazalo con su hash-value: <cli> mv newcerts/01.pem certs/ # el certificado es nombrado con su número de serie - y cuyo nombre es 01.pem solamente la primera vez-) cd certs ln -s 01.pem `openssl x509 -hash -noout -in 01.pem`.0 </cli>

Supondremos que vas a guardar el fichero del certificado original en un subdirectorio llamado “server”:

<cli> mkdir /root/RootCA/server mv server.*.pem server/ </cli>

2.2 Crea el certificado para el servidor Apache

Genera un certificado tal y como se ha descrito en la sección 2.1 (ATENCIÓN: cambia los nombres de los ficheros por apache.key.pem, apache.req.pem y apache.cert.pem). Cuando se vaya a generar apache.req.pem, introduce esto:

<cli> Organizational Unit Name []:Servidor Web Apache Common Name (eg, YOUR name) []:miNombreDeDominio.com </cli>

Debes poner el nombre de dominio bajo el cual quieres acceder a ispCP, sino tendrás un error en el momento de la autentificación de tu certificado SSL.

Después de la generación del certificado cambia la configuración del archivo /etc/apache2/mods-available/ssl.conf (sustituye 512 por 2048) : <cli> SSLRandomSeed startup /dev/urandom 2048 SSLRandomSeed connect /dev/urandom 2048 </cli>

Luego copia los ficheros de los certificados (con los permisos de acceso correctos): <cli> cp apache.cert.pem apache.key.pem /etc/apache2/ssl chmod 400 /etc/apache2/ssl/apache.cert.pem /etc/apache2/ssl/apache.key.pem </cli>

Informa a Apache para que escuche el puerto ssl (443) - añade esto al fichero /etc/apache2/ports.conf: <cli> Listen 443 </cli> Arranca el mod_ssl: <cli> a2enmod ssl </cli>

Finalmente, añade un nuevo VirtualHost que escuche el puerto 443 preparado para el SSL:

<cli> cp /etc/apache2/sites-available/00_master.conf /etc/apache2/sites-available/01_ssl_master.conf </cli>

Cambiar el fichero 01_ssl_master.conf de esta manera:

<cli> # # SSL Master Begin #

<VirtualHost xxx.xxx.xxx.xxx:443>

  #
  # SSL Start
  #
  SSLEngine On
  SSLCertificateFile /etc/apache2/ssl/apache.cert.pem
  SSLCertificateKeyFile /etc/apache2/ssl/apache.key.pem
  #
  # SSL End
  #
  ServerAdmin     admin@miNombreDeDominio.com
  DocumentRoot    /var/www/ispcp/gui
  ServerName      miNombreDeDominio.com
  ErrorLog        /var/log/apache2/users/ssl.miNombreDeDominio.com-error.log
  TransferLog     /var/log/apache2/users/ssl.miNombreDeDominio.com-access.log
  CustomLog       /var/log/apache2/ssl.miNombreDeDominio.com-traf.log traff
  CustomLog       /var/log/apache2/ssl.miNombreDeDominio.com-combined.log combined

# # … ningún cambio a partir de aquí #

</VirtualHost>

# # SSL Master End # </cli>

Activa el sitio SSL: <cli> a2ensite 01_ssl_master.conf </cli> Recarga el servidor Apache: <cli> /etc/init.d/apache2 reload </cli> ¡Y ya está!

Abre tu navegador, teclea https://miNombreDeDominio.com y verás el login ispCP -encriptado SSL-. (¡Los accesos de phpMyAdmin y de Webmail están tambien encriptados!)

2.3 Crea el certificado para el servidor Courier

Primero debes instalar los paquetes ssl del servidor Courier: <cli> apt-get install courier-imap-ssl courier-pop-ssl </cli>

Genera un certificado tal como se describe en la sección 2.1 (ATENCIÓN: cambia los nombres de los ficheros por los de courier.key.pem, courier.req.pem y courier.cert.pem). Cuando se vaya a generar courier.req.pem, introduce esto:

<cli> Organizational Unit Name []:Servidor Courier Common Name (eg, YOUR name) []:mail.miNombreDeDominio.com </cli>

El servidor Courier necesita tener los ficheros cert y key unidos en uno solo: <cli> cd /root/RootCA/server cat courier.cert.pem courier.key.pem > courier.pem </cli>

Copia los certificados en /etc/courier:

<cli> cd /etc/courier cp /root/RootCA/server/courier.pem . chmod 400 courier.pem ln -s courier.pem imapd.pem ln -s courier.pem pop3d.pem </cli>

Ahora puedes reiniciar los servidores courier-ssl: <cli> /etc/init.d/courier-imap-ssl restart /etc/init.d/courier-pop-ssl restart </cli> ¡Ahora SSL está activado para tus servidores IMAP y POP3!

2.4 Crea el certificado para el servidor ProFTPD

Genera un certificado tal como se describe en la sección 2.1 (ATENCIÓN: cambia los nombres de los ficheros por los de proftpd.key.pem, proftpd.req.pem y proftpd.cert.pem). Cuando se vaya a generar proftpd.req.pem, introduce esto:

<cli> Organizational Unit Name []:Servidor ProFTPD Common Name (eg, YOUR name) []:ftp.miNombreDeDominio.com </cli>

Copia los ficheros en /etc/proftpd: <cli> cd /etc/proftpd cp /root/RootCA/server/proftpd.cert.pem /root/RootCA/server/proftpd.key.pem . chmod 400 proftpd.cert.pem proftpd.key.pem </cli>

Activa TLS en /etc/proftpd.conf (descomenta estas lineas): <cli> # # SSL via TLS # <IfModule mod_tls.c>

TLSEngine                   on                                      # on = utilizar TLS
TLSLog                      /var/log/proftpd/ftp_ssl.log            # la ubicación del log
TLSProtocol                 SSLv23                                  # SSLv23 o TLSv1
TLSOptions                  NoCertRequest                           # solicitar o no un certificado
TLSRSACertificateFile       /etc/proftpd/proftpd.cert.pem           # el fichero SSL cert
TLSRSACertificateKeyFile    /etc/proftpd/proftpd.key.pem            # la clave SSL
TLSVerifyClient             off                                     # comprobación del cliente

</IfModule> </cli>

Reiniciar ProFTPD: <cli> /etc/init.d/proftpd restart </cli> ¡Y ya está! Conectate a ftp.miNombreDeDominio.com via FTP con TLS/SSL.

2.5 Crea el certificado para el servidor postfix

Genera un certificado tal como se describe en la sección 2.1 (ATENCIÓN: cambia los nombres de los ficheros por los de postfix.key.pem, postfix.req.pem y postfix.cert.pem). Cuando se vaya a generar postfix.req.pem, introduce esto:

<cli> Organizational Unit Name []:Servidor Postfix Common Name (eg, YOUR name) []:mail.miNombreDeDominio.com </cli>

Copia los ficheros en /etc/postfix: <cli> cd /etc/postfix cp /root/RootCA/server/postfix.cert.pem /root/RootCA/server/postfix.key.pem . chmod 400 postfix.cert.pem postfix.key.pem </cli>

Activa TLS/SSL en /etc/postfix/main.cf (descomenta estas lineas): <cli> smtpd_tls_loglevel = 2 smtpd_tls_cert_file = /etc/postfix/postfix.cert.pem smtpd_tls_key_file = /etc/postfix/postfix.key.pem smtpd_use_tls = yes smtpd_tls_auth_only = no smtpd_tls_received_header = yes </cli>

Reinicia postfix: <cli> /etc/init.d/postfix restart </cli> Una pequeña novedad… Ahora puedes enviar correos electrónicos a través de una conexión encriptada SSL..

3. ¡ TERMINADO !

¡Acabas de configurar tu servidor web para ispCP, tu servidor de correo y tu servidor FTP con una conexión encriptada SSL!

No olvides distribuir tu certificado CA (http://miNombreDeDominio.com/RootCA.crt, ¿verdad?) a todas aquellas personas que tengan acceso al servidor. Así no tendrán que aceptar cada certificado por separado.

 
es/howto/security/create_your_own_ssl_ca_and_secure_multiple_services.txt · Última modificación: 2010/11/19 13:28 (editor externo)
 
Recent changes RSS feed Creative Commons License Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki