Cacert.org

De Astillas.net

Enlaces y referencias

Conceptos

Cacert.org es una autoridad certificadora gestionada por una comunidad de usuarios cuyo propósito es emplear la criptografía para promover la educación sobre seguridad en computación.

Como resultas de ello también proporcionan -sin coste- certificados digitales que pueden emplearse en servidores web o de correo, con la única condición de que se instale el certificado raíz en el sistema cliente, concretamente dentro de la lista de autoridades certificadoras.

Crear un certificado de servidor

Los pasos son bastante similares a los de cualquier CA:

  1. Definir el servidor en el panel de control
  2. Preparar un Certificate Signing Request (petición de firma de certificado)
  3. Enviarlo a la autoridad certificadora para que lo firme
  4. Descargar el certificado e instalarlo
  5. Configurar los servidores que vayan a utilizarlo

Preparar un CSR

Existe un pequeño programa que ayuda en la preparación del certificado. Una vez descarga se ejecuta y se responde a las preguntas cuidadosamente el programa creará un archivo de nombre $HOME/example_csr.pem que tendremos que enviar al servidor para que lo firme.

   Private Key and Certificate Signing Request Generator
   This script was designed to suit the request format needed by
   the CAcert Certificate Authority. www.CAcert.org
   .
   Short Hostname (ie. imap big_srv www2): example
   FQDN/CommonName (ie. www.example.com) : example.net
   Type SubjectAltNames for the certificate, one per line. Enter a blank line to finish
   SubjectAltName: DNS:www.example.net
   SubjectAltName: DNS:admin.example.net
   SubjectAltName: DNS:mail.example.net
   SubjectAltName: DNS:sync.example.net
   SubjectAltName: DNS:static.example.net
   SubjectAltName: DNS:
   Running OpenSSL...
   Generating a 2048 bit RSA private key
   ...........+++
   .........................+++
   writing new private key to '/root/example_privatekey.pem'
   -----
   Copy the following Certificate Request and paste into CAcert website to obtain a Certificate.
   When you receive your certificate, you 'should' name it something like example_server.pem
   .
   -----BEGIN CERTIFICATE REQUEST-----
   MIIC0zCCAbsCAQAwFjEUMBIGA1UEAxMLdmVuZXhtYS5uZXQwggEiMA0GCSqGSIb3
   DQEBAQUAA4IBDwAwggEKAoIBAQDTD1hErWAj4IPvBBN9KFFF/aXuE/tyNem47FEK
   tQFG8r1jUtHwXUh6+Hhb8W+weXnQN+lk63xSmlULN2KzI/mpV652fM30uO4JZDOa

Es necesario indicar todos aquellos nombres alternativos para los que el certificado debe servir. Antes no era posible tener en una misma dirección IP a varios dominios con un mismo certificado, pero como con las versiones modernas de Apache sí es posible, tenemos que examinar los distintos host virtuales que vamos a poner en línea para que cada uno pueda compartir el mismo certificado final. Si nos dejamos uno fuera tendremos que repetir el proceso.

Si existen servidores no web como los de correo respondiendo a las mismas direcciones también podemos emplear el certificado para abrir conexiones seguras con ellos.

En total existen varios archivos importantes:

$HOME/example_csr.pem
Petición de firma de certificado
$HOME/example_privatekey.pem
Clave privada con la que se ha firmado la petición y que acompaña luego al certificado
Archivo con el certificado descargado
que tendremos que situar en un directorio concreto con suficientes permisos para que accedan a él los distintos servidores.

Usar el certificado en servidores propios

En muchos casos el certificado del servidor debe ir acompañado de la clave privada (sin contraseña, a menos que queramos estar presentes en la consola en todo momento para introducirla) por lo que ésta debe tener los permisos más restrictivos posibles. Si el servidor arranca como superusuario como es el caso de Apache y CUPS lo mejor es que el archivo sólo tenga lectura por root.

El resto es sencillo. Basta con copiar o crear un enlace a los archivos (que podemos haber guardado perfectamente en /etc/cacert) del certificado y la clave en el directorio donde habitualmente el servidor espera encontrarlos

  • Apache: /etc/apache2/ssl
  • CUPS: /etc/cups/ssl

y recargar los servicios.

También existe la posibilidad de que el programa quiera tener acceso al certificado raíz que firmó el nuestro. En ese caso tendremos que descargarlo de la página de la organización teniendo en cuenta que Cacert emplea una cadena de firmas y que el que necesitemos posiblemente sea el de clase 3.