Campos básicos

Un certificado X.509 versión 1 contiene los campos siguientes. Los campos de la versión 2 se describen en campos de la versión 2. Los campos de la versión 3 se describen en extensiones de la versión 3.

Versión

Especifica el número de versión del certificado codificado. Actualmente, los valores posibles de este campo son 0, 1 o 2, pero esto puede expandirse en el futuro.

---------------------------------------------------------------------
-- Version number. Currently, this can be 0, 1, or 2.
---------------------------------------------------------------------
CertificateVersion ::= INTEGER {v1(0), v2(1), v3(2)}

Número de serie

Contiene un entero positivo y único asignado por la entidad de certificación (CA) al certificado.

---------------------------------------------------------------------
-- Certificate serial number
---------------------------------------------------------------------
CertificateSerialNumber ::= INTEGER

Algoritmo de firma

Contiene un identificador de objeto (OID) que especifica el algoritmo utilizado por la ENTIDAD de certificación para firmar el certificado. Por ejemplo, 1.2.840.113549.1.1.5 especifica un algoritmo hash SHA-1 combinado con el algoritmo de cifrado RSA de los laboratorios RSA.

---------------------------------------------------------------------
-- Signature OID
---------------------------------------------------------------------
signature ::= AlgorithmIdentifier

AlgorithmIdentifier ::= SEQUENCE 
{
  algorithm           OBJECT IDENTIFIER,
  parameters          ANY OPTIONAL    
}

Emisor

Contiene el X.500 nombre distintivo (DN) de la ENTIDAD de certificación que creó y firmó el certificado.

---------------------------------------------------------------------
-- Issuer name 
---------------------------------------------------------------------
Name ::= SEQUENCE OF RelativeDistinguishedName

RelativeDistinguishedName ::= SET OF AttributeTypeValue

AttributeTypeValue ::= SEQUENCE 
{
  type       OBJECT IDENTIFIER,
  value      ANY 
}

Validez

Especifica el intervalo de tiempo durante el que el certificado es válido. Las fechas hasta finales de 2049 usan el formato hora universal coordinada (hora media de Greenwich) (yymmddhhmmssz). Las fechas a partir del 1 de enero de 2050 usan el formato de hora generalizado (aaaammddhhmmssz).

---------------------------------------------------------------------
-- Validity period 
---------------------------------------------------------------------
Validity ::= SEQUENCE 
{
  notBefore           ChoiceOfTime,
  notAfter            ChoiceOfTime
}

ChoiceOfTime ::= CHOICE 
{
  utcTime                 UTCTime,
  generalTime             GeneralizedTime
}

Asunto

Contiene un nombre distintivo X.500 de la entidad asociada a la clave pública contenida en el certificado.

---------------------------------------------------------------------
-- Subject name 
---------------------------------------------------------------------
Name ::= SEQUENCE OF RelativeDistinguishedName

RelativeDistinguishedName ::= SET OF AttributeTypeValue

AttributeTypeValue ::= SEQUENCE 
{
  type       OBJECT IDENTIFIER,
  value      ANY 
}

Clave pública

Contiene la clave pública y la información del algoritmo asociada.

---------------------------------------------------------------------
--  Subject public key information
---------------------------------------------------------------------
SubjectPublicKeyInfo ::= SEQUENCE 
{
  algorithm           AlgorithmIdentifier,
  subjectPublicKey    BITSTRING
}

AlgorithmIdentifier ::= SEQUENCE 
{
  algorithm           OBJECT IDENTIFIER,
  parameters          ANY OPTIONAL    
}

de campos de versión 2

extensiones de la versión 3

certificados de clave pública X.509