El x509 bajo openSSL
Para comenzar a trabajar con OpenSSL es necesario disponer de las librerías adecuadas. Para ello, podemos obtener la última versión disponible de la página web de OpenSSL. Los archivos con el código fuente necesario para programar o mirar algún detalle estarán dentro del directorio donde descomprimimos el OpenSSL, por ejemplo:
~/openssl-0.9.6/crypto/x509
~/openssl-0.9.5/crypto/x509v3
A la hora de compilar los diferentes programas que podamos realizar es conveniente disponer de la libreria libcripto para no tener que compilar cada vez las librerías necesarias. Esta libreria se suele encontrar en los directorios:
/usr/lib/
/usr/lib/openssl/
/usr/local/openssl/lib
O en algún otro sitio en función de cómo se instala.
Las diferentes funciones utilizadas para interactuar con los objetos x509
están agrupadas por sus acciones en diferentes archivos, por lo
que cada archivo tiene una finalidad de trabajo.Más tarde veremos
ejemplos con los que trabajar, pero de momento veamos el uso al que se
destina cada fichero:
x509_cmp.c
-
Funciones para comparar, comprobar y obtener información de elementos
de objetos x509, tales como nombre del sujeto, de la empresa, número
de serie, clave pública, etc.
x509_d2.c
-
Carga o define el camino y los nombres de los ficheros a utilizar.
x509_def.c
-
Funciones para obtener los valores establecidos por defecto.
x509_err.c
-
Define los errores con sus textos de salida de error asociados.
x509_ext.c
-
Obtiene certificados o sus extensiones mediante diferentes métodods
de búsqueda (NID, OBJ, etc), creación o modificación.
Estas funciones sólo son válidas para las versiones 3.0 de
SSL pues es cuando se añaden campos de extensiones, y se aplica
a certificados x509, x509 rechazados o CRLs.
x509_lu.c
-
funciones de búsqueda de los certificados por diferentes parámetros
(Subject, issuer serial, fingerprint, alias...) Los certificados estan
almacenados en forma de pila, por lo que también se añaden
funciones de comparación y añadido a la pila.
X509_obj.c
-
Paso de objetos x509 a tiras de caracteres.
x509_r2x.c
-
Paso de elementos x509_REQ (certificados x509 para firmar) a elementos
x509 (previa comprobación de claves).
x509_req.c
-
Paso de elementos x509 a elementos x509_REQ.
x509_set.c
-
Funciones para la asignación de datos
-
versión
-
número de serie
-
nombre de la compañía
-
nombre personal
-
Periodos de validez
-
clave pública
x509_txt.c
-
Texto a mostrar para los direfentes códigos de error.
x509_v3.c
-
Añadidos de información para la versión 3 del SSL,
usados en las funciones del x509_ext.c
x509_vfy.c
-
Funciones para realizar diversas comparaciones sobre los objetos x509
-
comprobar nombres, tiempo...
-
ajustar tiempo
-
obtener parámetros de la clave pública
-
añadir certificados x509 o CRL
-
consulta y modificación en el acceso a los objetos x509
-
verificación de certificados
x509_name.c
-
Funciones para la obtención y modificación de nombres.
x509_rset.c
-
Modificación de valores en un CSR tales como versión, nombre
o clave pública.
x509_type.c
-
Obtención del tipo de certificado con sus características
(codificado como un entero).
by_file.c y by_dir.c
-
Operaciones para leer/escribir objetos x509 mediante entrada estándar
o mediante BIO. Para más información sobre el BIO se puede
consultar la información proporcionada por Vicente Roca en http://spisa.act.uji.es/~roca, o si prefieres la entrada estándar(junto con algo también de BIO) mira la página de Mario Prats en http://spisa.act.uji.es/~mario
x_all.c
-
Mención aparte merece el fichero x_all.c, puesto que es un conjunto
de funciones que actuan como "macro" para facilitar la tarea de los programadore
s
(Eh! Esos somos nosotros?!) pues simplifican mucho el paso de parámetros
concretos a las funciones pasando grandes estrucuras de datos generales
y ya cogiendo en su interior lo que es necesario.