User Tools

Site Tools


programacion:shellscripts:certificados

Creando y administrando certificados

Certificados RSA de servidor

Usados por Apache para establecer conexiones SSL. En OpenBSD los certificados se almacenan en:

  • /etc/ssl (las claves públicas, permiso de lectura a todos los usuarios)
  • /etc/ssl/private (las claves privadas, solo root puede entrar aqui)

paso 1: generamos la clave RSA del servidor

# openssl genrsa -out /etc/ssl/private/server.key 1024

paso 2: generamos un CSR para que una autoridad nos firme

Un CSR es un Certificate Signing Request. Es el fichero que damos a una CA (para que nos lo firme.

# openssl req -new -key /etc/ssl/private/server.key -out /etc/ssl/private/server.csr

paso 3: si no queremos que una CA lo firme, lo firmamos nosotros

# openssl x509 -req -days 365 -in /etc/ssl/private/server.csr \
          signkey /etc/ssl/private/server.key -out /etc/ssl/server.crt

resultado

/etc/ssl/server.crt

 Contiene la clave firmada

/etc/ssl/private/server.key

 COntiene la clave privada del servidor en un directorio de acceso restringido

Certificados RSA/DSA de autenticación de usuario

Estos certificados se usan para sustituir a la password en una conexión segura (por ejemplo SSH o SFTP). COnstan de una clave privada que el usuario debe custodiar, y una clave pública que el usuario debe instalar en los sistemas a los que quiera acceder usando certificado.

En los sistemas UNIX, la clave pública se añade al fichero ~/.ssh/authorized_keys correspondiente.

La orden para generar el certificado es una de las siguientes, en función de que queramos usar un certificado RSA o DSA.

# ssh-keygen -t rsa -C usuario@aplicacion
# ssh-keygen -t dsa -C usuario@aplicacion

EL proceso nos pide una passphrase opcional, que añade un nivel adicional de seguridad, pues cada vez que usemos el certificado debemos escribir dicha frase. A continuación se nos pide que especifiquemos el directorio donde se van a guardar las claves generadas. Los nombres que se nos proponen son id_dsa o id_rsa para la clave privada, y id_dsa.pub o id_rsa.pub para la clave pública.

Obteniendo las huellas de los certificados

La autenticidad de un determinado certificado se puede demostrar si el emisor del certificado hace saber a sus potenciales usuarios las huellas digitales de los certificados que usa. Dado que dichas huellas no son falseables, es una buena práctica publicar las dos posibles huellas de un determinado certificado, la MD5 y la SHA1.

Para obtener dichas huellas podemos teclear este comando, que obtiene las huellas del certificado de servidor situado en /etc/ssl/server.crt:

# openssl x509 -in /etc/ssl/server.crt -noout -fingerprint
MD5 Fingerprint=81:8F:04:B9:1F:48:33:98:5E:72:64:6F:8E:35:9F:7D
# openssl x509 -sha1 -in /etc/ssl/server.crt -noout -fingerprint
SHA1 Fingerprint=DD:FD:8C:BA:66:A5:9C:17:FA:81:E1:B3:65:24:E5:07:E0:9E:74:31
programacion/shellscripts/certificados.txt · Last modified: 2007/04/03 08:32 by jherrero