Campi di base

Un certificato X.509 versione 1 contiene i campi seguenti. I campi della versione 2 sono descritti in Campi versione 2. I campi versione 3 sono descritti in estensioni versione 3.

Versione

Specifica il numero di versione del certificato codificato. Attualmente, i valori possibili di questo campo sono 0, 1 o 2, ma questo potrebbe essere espanso in futuro.

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

Numero di serie

Contiene un numero intero positivo e univoco assegnato dall'autorità di certificazione (CA) al certificato.

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

Algoritmo di firma

Contiene un identificatore di oggetto (OID) che specifica l'algoritmo usato dalla CA per firmare il certificato. Ad esempio, 1.2.840.113549.1.1.5 specifica un algoritmo hash SHA-1 combinato con l'algoritmo di crittografia RSA di RSA Laboratories.

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

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

Emittente

Contiene il X.500 nome distinto (DN) della CA che ha creato e firmato il certificato.

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

RelativeDistinguishedName ::= SET OF AttributeTypeValue

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

Validità

Specifica l'intervallo di tempo durante il quale il certificato è valido. Le date fino alla fine del 2049 usano il formato Coordinated Universal Time (Greenwich Mean Time) (yymmddhhmmssz). Le date che iniziano con il 1° gennaio 2050 usano il formato di tempo generalizzato (aammdhhmmssz).

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

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

Oggetto

Contiene un nome distinto X.500 dell'entità associata alla chiave pubblica contenuta nel certificato.

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

RelativeDistinguishedName ::= SET OF AttributeTypeValue

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

Chiave pubblica

Contiene la chiave pubblica e le informazioni sull'algoritmo associate.

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

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

campi versione 2

estensioni versione 3

certificati a chiave pubblica X.509