Ernandes

Transcrição

Ernandes
1
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
OBS: A presente tradução não oficial da (RFC5280) tem como finalidade
facilitar o estudo e o entendimento da Norma.
D. Cooper
NIST
S. Santesson
Microsoft
S. Farrell
Trinity College Dublin
S. Boeyen
Entrust
R. Housley
Vigil Security
W. Polk
NIST
May 2008
nd
es
Network Working Group
Request for Comments: 5280
Obsoletes: 3280, 4325, 4630
Category: Standards Track
Er
na
Tradução para o Português
Internet X.509 Public Key Infrastructure Certificate
and Certificate Revocation List (CRL) Profile
Cooper, et al.
Standards Track
Tradução para Estudo
2
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
Estado do Documento
Este documento especifica o protocolo padrão Internet a ser seguido para a Comunidade
Internet, e solicita discussão e sugestões para sua melhoria. Consulte a edição atual do
documento “Internet Official Protocol Standards” (STD 1) para obter a situação de padronização e o estado do presente protocolo. A distribuição deste documento é ilimitado.
Resumo
Er
na
nd
es
Este documento define os perfis para o certificado X.509 v3 e a lista de certificados revogados (LCR) X.509.v2 para uso na Internet. A introdução fornece uma visão geral dessa
abordagem e modelo. O formato do certificado X.509 v3 é descrito em detalhes, com informações adicionais sobre seu formato e a semântica dos formulários de nome Internet.
São descritas as extensões padrão do certificado e duas extensões especı́ficas da Internet.
É especificado o conjunto exigido de extensões. São descritos detalhes do formato da LCR
X.509 v2, juntamente com as extensões padrão e aquelas especı́ficas da Internet. É descrito
um algoritmo para validação do caminho de certificação X.509. Nos apêndices são fornecidos um módulo ASN.1 e exemplos.
Cooper, et al.
Standards Track
Tradução para Estudo
3
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
Sumário
1 Introdução
6
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
8
8
8
9
9
3 Visão Geral do Modelo
3.1 Versão 3 do Certificado X.509 . . . .
3.2 Caminhos de certificação e Confiança
3.3 Revogação . . . . . . . . . . . . . . .
3.4 Protocolos Operacionais . . . . . . .
3.5 Protocolos de Gerenciamento . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9
10
11
13
14
15
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
16
16
17
17
17
18
18
18
19
19
19
21
22
22
22
24
24
24
24
25
25
26
27
29
32
32
35
35
35
36
38
39
41
.
.
.
.
es
2 Requisitos e Pressupostos
2.1 Comunicação e Topologia . . . .
2.2 Critério de Acessibilidade . . . .
2.3 Expectativas dos Usuários . . . .
2.4 Expectativas dos Administradores
Er
na
nd
4 Perfil do Certificado e das Extensões do Certificado
4.1 Campos Básicos do Certificado . . . . . . . . . . . .
4.1.1 Campos do Certificado . . . . . . . . . . . . .
4.1.1.1 tbsCertificate . . . . . . . . . . . . .
4.1.1.2 signatureAlgorithm . . . . . . . . . .
4.1.1.3 signatureValue . . . . . . . . . . . .
4.1.2 TBSCertificate . . . . . . . . . . . . . . . . .
4.1.2.1 Version . . . . . . . . . . . . . . . .
4.1.2.2 Serial Number . . . . . . . . . . . .
4.1.2.3 Signature . . . . . . . . . . . . . . .
4.1.2.4 Issuer . . . . . . . . . . . . . . . . .
4.1.2.5 Validity . . . . . . . . . . . . . . . .
4.1.2.5.1 UTCTime . . . . . . . . . .
4.1.2.5.2 GeneralizedTime . . . . . .
4.1.2.6 Subject . . . . . . . . . . . . . . . .
4.1.2.7 Subject Public Key Info . . . . . . .
4.1.2.8 Unique Identifiers . . . . . . . . . . .
4.1.2.9 Extensions . . . . . . . . . . . . . .
4.2 Extensões do Certificado . . . . . . . . . . . . . . . .
4.2.1 Extensões Padrão . . . . . . . . . . . . . . . .
4.2.1.1 Authority Key Identifier . . . . . . .
4.2.1.2 Subject Key Identifier . . . . . . . .
4.2.1.3 Key Usage . . . . . . . . . . . . . .
4.2.1.4 Certificate Policies . . . . . . . . . .
4.2.1.5 Policy Mappings . . . . . . . . . . .
4.2.1.6 Subject Alternative Name . . . . . .
4.2.1.7 Issuer Alternative Name . . . . . . .
4.2.1.8 Subject Directory Attributes . . . .
4.2.1.9 Basic Constraints . . . . . . . . . . .
4.2.1.10 Name Constraints . . . . . . . . . .
4.2.1.11 Policy Constraints . . . . . . . . . .
4.2.1.12 Extended Key Usage . . . . . . . . .
4.2.1.13 CRL Distribution Points . . . . . . .
Cooper, et al.
Standards Track
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Tradução para Estudo
4
PKIX Certificate and CRL Profile
4.2.2
RFC 5280
Maio de 2008
4.2.1.14 Inhibit anyPolicy . . . . . . . . . . . .
4.2.1.15 Freshest CRL (Delta CRL Distribution
Extensões Privadas Internet . . . . . . . . . . .
4.2.2.1 Authority Information Access . . . . .
4.2.2.2 Subject Information Access . . . . . .
. . . .
Point)
. . . .
. . . .
. . . .
na
nd
es
5 Perfil da LCR e das Extensões da LCR
5.1 Campos da LCR . . . . . . . . . . . . . . . . . . . . . . . .
5.1.1 Campos do CertiticateList . . . . . . . . . . . . . . .
5.1.1.1 tbsCertList . . . . . . . . . . . . . . . . . .
5.1.1.2 signatureAlgorithm . . . . . . . . . . . . . .
5.1.1.3 signatureValue . . . . . . . . . . . . . . . .
5.1.2 Certificate List “A Ser Assinado” . . . . . . . . . . .
5.1.2.1 Version . . . . . . . . . . . . . . . . . . . .
5.1.2.2 Signature . . . . . . . . . . . . . . . . . . .
5.1.2.3 Issuer Name . . . . . . . . . . . . . . . . . .
5.1.2.4 This Update . . . . . . . . . . . . . . . . .
5.1.2.5 Next Update . . . . . . . . . . . . . . . . .
5.1.2.6 Revoked Certificates . . . . . . . . . . . . .
5.1.2.7 Extensões . . . . . . . . . . . . . . . . . . .
5.2 Extensões da LCR . . . . . . . . . . . . . . . . . . . . . . .
5.2.1 Authority Key Identifier . . . . . . . . . . . . . . . .
5.2.2 Issuer Alternative Name . . . . . . . . . . . . . . . .
5.2.3 CRL Number . . . . . . . . . . . . . . . . . . . . . .
5.2.4 Delta CRL Indicator . . . . . . . . . . . . . . . . . .
5.2.5 Issuing Distribution Points . . . . . . . . . . . . . . .
5.2.6 Freshest CRL (Ponto de Distribuição de LCR delta) .
5.2.7 Authority Informatioin Access . . . . . . . . . . . . .
5.3 Extensões da Entrada da LCR . . . . . . . . . . . . . . . . .
5.3.1 Reason Code . . . . . . . . . . . . . . . . . . . . . .
5.3.2 Invalidity Date . . . . . . . . . . . . . . . . . . . . .
5.3.3 Certificate Issuer . . . . . . . . . . . . . . . . . . . .
Er
6 Validação de Caminho de Certificação
6.1 Validação Básica de Caminho . . . . . . . .
6.1.1 Entradas . . . . . . . . . . . . . . . .
6.1.2 Inicialização . . . . . . . . . . . . . .
6.1.3 Processamento Básico de Certificado
6.1.4 Preparação para o Certificado i+1 . .
6.1.5 Procedimento de Encerramento . . .
6.1.6 Saı́das . . . . . . . . . . . . . . . . .
6.2 Uso do Algoritmo de Validação de Caminho
6.3 Validação de LCR . . . . . . . . . . . . . . .
6.3.1 Entradas de Revogação . . . . . . . .
6.3.2 Processamento de LCR . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
42
43
43
44
45
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
47
49
49
49
50
50
50
51
51
51
51
51
52
52
52
53
53
53
54
56
58
58
59
60
60
61
.
.
.
.
.
.
.
.
.
.
.
61
62
64
66
68
72
74
75
75
76
76
77
7 Regras de Processamento para Nomes Internacionalizados
79
7.1 Nomes Internacionalizados em Distinguished Names . . . . . . . . . . . . . . 80
7.2 Nome de Domı́nio Internacionalizados em GeneralName . . . . . . . . . . . . 81
Cooper, et al.
Standards Track
Tradução para Estudo
5
PKIX Certificate and CRL Profile
7.3
7.4
7.5
RFC 5280
Maio de 2008
Nomes de Domı́nio Internacionalizados em Distinguished Names . . . . . . . 82
Identificadores de Recurso Internacionalizados . . . . . . . . . . . . . . . . . 82
Endereços de Correio Eletrônico Internacionalizados . . . . . . . . . . . . . . 83
8 Considerações de Segurança
84
9 Considerações IANA
87
10 Agradecimento
87
es
11 Referências
88
11.1 Referências Normativas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
11.2 Referências Informativas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Apêndice B. Notas ASN.1
nd
Apêndice A. Estruturas e OIDs em Pseudo-ASN.1
91
A.1 Módulo Explicitamente Rotulado, sintaxe 1988 . . . . . . . . . . . . . . . . . 91
A.2 Módulo Implicitamente Rotulado, sintaxe 1988 . . . . . . . . . . . . . . . . . 105
Apêndice C. Exemplos
C.1 Certificado “auto-assinado” RSA . . .
C.2 Certificado de Entidade Final Usando
C.3 Certificado de Entidade Final Usando
C.4 Lista de Certificados Revogados . . .
.
.
.
.
na
Endereço dos Autores
. . .
RSA
DSA
. . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
112
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
114
. 115
. 118
. 121
. 125
127
128
Propriedade Intelectual
128
Er
Declaração Plena de Direitos Autorais
Cooper, et al.
Standards Track
Tradução para Estudo
6
PKIX Certificate and CRL Profile
1
RFC 5280
Maio de 2008
Introdução
A presente especificação é parte do conjunto de padrões para o X.509 - Infraestrutura de
Chaves Públicas (ICP) Internet.
A especificação define perfis do formato e da semântica de certificados, e listas de certificados revogados(LCRs) para a ICP Internet. São descritos procedimentos necessários para
o processamento dos caminhos de certificação no ambiente da Internet. Finalmente, nos
apêndices, são fornecidos módulos em ASN.1 para todas as estruturas de dados definidas
ou referenciadas.
es
A seção 2 descreve os requisitos de ICP na Internet e os pressupostos que se relacionam
ao escopo deste documento. A Seção 3 apresenta o modelo da arquitetura e descreve sua
relação com a norma IETF anterior, assim como com as normas ISO/IEC/ITU-T. Em
particular, é descrita a relação existente entre esta especificação e aquelas contidas nos
documentos PEM IETF e ISO/IEC/ITU-T X.509.
nd
Seção 4 define perfis para o certificado X.509 v3, e secção 5 define perfis para a LCR X.509
v2. Os perfis incluem a identificação de extensões ISO/IEC/ITU-T e extensões ANSI que
podem ser úteis na ICP Internet. Os perfis são apresentados em Syntax Notation One
(ASN.1) de 1988, em vez da sintaxe ASN.1 de 1997, utilizada nas normas mais recentes do
ISO/IEC/ITU-T.
na
Seção 6 inclui procedimentos para validação do caminho de certificação. Estes procedimentos baseiam-se nas definições do ISO/IEC/ITU-T. É NECESSÁRIO que as implementações
obtenham os mesmos resultados, embora não seja requerido que estas utilizem os procedimentos especificados.
Er
Os procedimentos para identificação e codificação de chave pública e assinaturas são definidos em [RFC3279], [RFC4055] e [RFC4491]. Não é obrigatório que as implementações
desta especificação usem quaisquer algoritmo criptográfico. Embora, as implementações em
conformidade com esta especificação, e que usam os algoritmos identificados em [RFC3279],
[RFC4055, e [RFC4491], DEVEM identificar e codificar os materiais de chave pública e assinaturas como descrito naquelas especificações.
Finalmente, são fornecidos três apêndices para ajudar nas implementações. O Apêndice
A contém todas as estruturas ASN.1 definidas ou referenciadas nesta especificação. Como
informado acima, o material é apresentado na versão ASN.1 de 1988. O apêndice B contém notas sobre caracterı́sticas menos conhecidas da notação ASN.1 utilizadas no presente
documento. O Apêndice C contém exemplos de certificados e LCR em conformidade com
esta especificação.
Esta especificação torna obsoleta a [RFC3280]. As diferenças entre a presente especificação
e aquela contida na [RFC3280] são listadas abaixo:
∗ Seção 7 especifica o suporte avançado a nomes internacionalizados, com regras para
codificação e satisfazem os Nomes de Domı́nios Internacionalizados, os Identificadores
de Recursos Internacionalizados (IRIs), e nomes distintos. Estas regras estão alinhadas com regras de comparação estabelecidas em RFC atualizadas, incluindo entre
estas, [RFC3490], [RFC3987], e [RFC4518].
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
∗ As seções 4.1.2.4 e 4.1.2.6 incorporam as condições para a continuação de uso do legado
dos esquemas de codificação especificados na [RFC4630]. Quando utilizado por ICP já
estabelecida, a transição para UTF8String poderia causar negação de serviço baseado
em falhas na cadeia de nomes ou processamento incorreto de restrições de nomes.
∗ A seção 4.2.1.4 da [RFC3280], que especifica a extensão de certificado privateKeyUsagePeriod, mas não incentiva o uso, foi removida. O uso dessa extensão padrão
ISO nem é incentivada, nem recomendada para ser utilizada em ambientes de ICP
Internet.
es
∗ A seção 4.2.15 recomenda que a extensão policy mappigns seja marcada como crı́tica.
A [RFC3280] recomendava que esta extensão fosse marcada como não crı́tica.
∗ A seção 4.2.1.11 recomenda a marcação da extensão policy constraints como crı́tica.
A [RFC3280] permitia que esta extensão fosse marcada como crı́tica ou não crı́tica.
nd
∗ A extensão Authority Information Access (AIA) da LCR, como especificada em
[RFC4325], foi adicionada na seção 5.2.7.
∗ A seção 5.2 e 5.3 esclarece as regra para o tratamento de extensões não reconhedidas
da LCR, assim como extensões de entrada da LCR, respectivamente.
∗ A seção 5.3.2 da [RFC3280], que especificava a extensão holdInstructionCode de entrada de LCR, foi removida.
na
∗ O algoritmo de validação de caminho especificado na seção 6, não controla mais a
criticidade das extensões de polı́ticas de certificado nas cadeias de certificados. Na
[RFC3280], esta informação era retornada para um terceiro confiável.
∗ A seção de Considerações de Segurança trata dos riscos relacionados a dependências
circulares causados pelo uso de esquemas https ou similares nos pontos de distribuição de LCR, acesso a informação de autoridade (AIA), ou extensões de acesso a
informações de sujeito (SIA).
Er
∗ A seção de Considerações de Segurança trata de riscos relacionados a ambiguidade
de nomes.
∗ A seção de Considerações de Segurança referencia a [RFC4210] quanto a procedimentos para tratar mudanças de operações de AC.
Os módulos ASN.1 contidos no apêndice A não foram modificados, exceto pelo conteúdo
de ub-emailaddress-length que foi mudado de 128 para 255, para se alinhar ao PKCS #9
[RFC2985].
As palavras-chave“DEVE”,“NÃO DEVE”,“NECESSÁRIO”,“DEVERÁ”,“NÃO DEVERÁ”,
“DEVERIA”, “NÃO DEVERIA”, “RECOMENDADO”, “PODE”, e “OPCIONAL” contantes no presente documento (em letras maiúsculas, como mostrado), devem ser interpretados
como descritas em [RFC2119].
Cooper, et al.
Standards Track
Tradução para Estudo
7
PKIX Certificate and CRL Profile
2
RFC 5280
Maio de 2008
Requisitos e Pressupostos
O objetivo desta especificação é desenvolver um perfil para facilitar o uso de certificados
X.509 dentro de aplicações de Internet para as comunidades que pretendem fazer uso da
tecnologia X.509. Tais aplicações podem incluir WWW, correio eletrônico, WWW eletrônica, autenticação de usuário, e IPsec. A fim de aliviar alguns dos obstáculos ao uso de
certificados X.509, este documento define um perfil para promover o desenvolvimento de
sistemas de gerenciamento de certificado, o desenvolvimento de ferramentas de aplicação e
a interoperabilidade determinada pela polı́tica.
es
Algumas comunidades terão de complementar ou substituir possivelmente, este perfil, a fim
de satisfazer as exigências de domı́nios de aplicações especializadas ou em ambientes com
autorização adicional, garantia, ou requisitos operacionais. No entanto, para aplicações
básicas, representações comuns de atributos usados frequentemente são definidos para que
os desenvolvedores de aplicativos possam obter as informações necessárias sem levar em
conta o emissor de um certificado especial ou a Lista de Certificados Revogados (LCR).
nd
O usuário de certificado deveria rever a polı́tica de certificado gerado pela Autoridade Certificadora (AC) antes de confiar nos serviços de autenticação ou não-repúdio associados com
a chave pública contida em determinado certificado. Por isso, esta norma não prescreve
regras juridicamente vinculativas ou deveres.
2.1
na
Com o surgimento de ferramentas adicionais para o tratamento de autorização suplementar e gestão de atributos, tais como os certificados de atributos, pode se tornar apropriado
limitar o conjunto de atributos de autenticação inclusos no certificado. Essas ferramentas
adicionais de gestão podem fornecer métodos mais adequados para transmissão de muitos
atributos autenticados.
Comunicação e Topologia
Er
Usuários de certificados irão operar em uma ampla gama de ambientes com relação a sua
topologia de comunicação, especialmente os usuários de correio eletrônico seguro. Este
perfil suporta usuários sem banda larga, em tempo real, conectividade IP, ou alta disponibilidade de conexão. Além disso, o perfil permite a presença de firewall ou qualquer outro
tipo de filtragem de comunicação.
Este perfil não considera a implantação de um sistema de diretório X.500 [X.500] ou de um
Lightweight Directory Access Protocol (LDAP) [RFC4510]. O perfil não proı́be a utilização
do serviço de diretório X.500 ou de um diretório LDAP; desta forma, qualquer meio de
distribuição de certificados e listas de certificados revogados (LCRs) pode ser usado.
2.2
Critério de Acessibilidade
O objetivo da Infraestrutura de Chaves Pública (PKI) é atender as necessidades de funções
determinı́sticas de identificação automatizada, autenticação e controle de acesso, e autorização. O suporte para esses serviços determina os atributos contidos no certificado, bem
como a informação de controle auxiliar contidas no certificado, tais como dados de polı́ticas
e restrições quanto ao caminho de certificação.
Cooper, et al.
Standards Track
Tradução para Estudo
8
PKIX Certificate and CRL Profile
2.3
RFC 5280
Maio de 2008
Expectativas dos Usuários
2.4
es
Os usuários da ICP Internet são pessoas e processos que usam o software cliente e são os
sujeitos nomeados nos certificados. Estes usos incluem destinatários e remetentes de correio
eletrônico, clientes de navegadores WWW, servidores WWW, e o gerenciador de chave para
IPsec dentro de um roteador. Este perfil reconhece as limitações das plataformas usadas por
esses usuários, assim como as limitações em termos de sofisticação e cuidados implementados
pelos próprios usuários. Isso se manifesta na responsabilidade mı́nima sobre a configuração
do usuário (por exemplo, chaves confiáveis de AC, regras), as limitações explı́citas de uso
da plataforma dentro do certificado, as restrições quanto ao caminho de certificação para
proteger o usuário de ações maliciosas, e aplicativos que automatizam funções de validação
de forma sensata.
Expectativas dos Administradores
3
nd
Tal como acontece com as expectativas dos usuários, o perfil para ICP Internet é estruturado de maneira a apoiar os indivı́duos que geralmente operam as ACs. Fornecer aos
administradores opções ilimitadas aumenta as chances de um erro sutil de um administrador resulte em comprometimento amplo. Além disso, as escolhas ilimitadas aumentam
muito a complexidade do software que processa e valida os certificados criados pela AC.
Visão Geral do Modelo
na
A seguir é uma visão simplificada do modelo de arquitetura assumido pela infra-estrutura
de chave pública usando X.509 (PKIX) especificações.
Os componentes deste modelo são:
usuário de certificados da ICP e/ou sistema usuário final, representado
no campo sujeito (subject) do certificado;
AC:
autoridade certificadora;
AR:
autoridade de registro, ou seja, é um sistema opcional para o qual a AC
delega determinadas funções de gestão;
Er
Entidade final:
Emissor de LCR: sistema que gera e assina LCRs, e
Repositório:
sistema ou conjunto de sistemas distribuı́dos que armazena certificados
e LCRs e que serve como meio de distribuição dos certificados e LCRs
para as entidades finais.
As ACs são responsáveis por indicar o status de revogação dos certificados que emitem. A
informação sobre o estado de revogação pode ser fornecida através do Online Certificate
Status Protocol (OCSP) [RFC2560], através de Listas de Certificados Revogados (LCR),
ou algum outro mecanismo. Em geral, quando as informações de status de revogação são
fornecida por CRLs, a AC também é o emissor da CRL. No entanto, uma AC pode delegar
a responsabilidade pela emissão das LCRs para uma entidade diferente.
Cooper, et al.
Standards Track
Tradução para Estudo
9
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
10
Note-se que uma Autoridade de Atributos (AA) também pode optar por delegar a publicação de suas LCRs para um emissor de LCR.
nd
es
+--------------------+
<-------------------> |
Entidade Final
|
Transaç~
oes
+--------------------+
operacionais
^
e transaç~
oes de
| Transaç~
oes de
gerenciamento
| Gerenciamento
Usuários
v
da ICP
=======================
+--+-------------+
======================
^
^
entidades de
|
|
gerenciamento da
v
|
ICP
+------+
|
<---------------------| AR |<----+
|
Publica certificado +------+
|
|
v
v
+------------+
<-------------------------------|
AC
|
Publica certificado
+------------+
Publica LCR
^
^
+--------------+
|
|
gerenciamento
<--------------|Emissor de LCR|<---+
|
de transaç~
oes
Publica LCR +--------------+
v
+------+
| AC |
+------+
na
+---+
| R |
| e |
| p |
| o |
| s |
| i |
| t |
| ó |
| r |
| i |
| o |
|
|
| d |
| e |
|
|
| C |
| e |
| r |
| t |
|
|
| & |
|
|
| L |
| C |
| R |
+---+
3.1
Er
Figura 1: Entidades da ICP
Versão 3 do Certificado X.509
Os usuários de uma chave pública necessitam ter confiança de que a chave privada associada é de propriedade do sujeito remoto correto (pessoa ou sistema), com a qual um
determinado mecanismo de criptografia ou assinatura digital será utilizado. Esta confiança
é obtido através da utilização de certificados de chave pública, que são estruturas de dados
que relacionam os valores de chave pública a indivı́duos. Esta relação de confiança ocorre
a partir da utilização de AC confiável que assina digitalmente cada certificado. O AC pode
basear esta afirmação em meios técnicos (por exemplo, a prova da posse através de um
protocolo de desafia e resposta), apresentação da chave privada, ou em um afirmação do
sujeito. Um certificado tem uma vida útil válida limitada, o que está indicado no seu conteúdo assinado. Pelo fato da assinatura do certificado e o seu perı́odo de validade poderem
ser verificados de maneira independente pelo sistema usuário, que faz uso da tecnologia, os
certificados podem ser distribuı́dos através de meios de comunicação e sistemas de servidores não confiáveis , e podem ser armazenados, de forma insegura, em cache nos sistemas
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
11
usuários.
O ITU-T X.509 (anteriormente CCITT X.509) ou ISO/IEC 9594-8, que foi publicado pela
primeira vez em 1988, como parte das recomendações X.500 para diretório, define o formato de certificado padrão [X.509]. O formato do certificado no padrão de 1988 é chamado
versão 1 (v1) do formato. O X.500 foi revisto em 1993, quando mais dois campos foram
adicionados, resultando na versão 2 (v2) do formato.
nd
es
A RFC do Internet Privacy Enhanced Mail (PEM), publicada em 1993, incluiu especificações para uma infraestrutura de chaves públicas baseada em certificados X.509 v1
[RFC1422]. A experiência adquirida na tentativa de implantar RFC 1422 deixou claro
que os formatos de certificado v1 e v2 eram deficientes em vários aspectos. O mais importante, mais campos foram necessários para transportar informações que o projeto do PEM
design e a experiência de implementação tinham considerado necessário. Em resposta a
estes novos requisitos, a ISO/IEC, ITU-T, e ANSI X9 desenvolveu o X.509 versão 3 (v3)
do formato do certificado. O formato v3 estende o formato v2 incluindo previsões para
campos de extensão adicionais. Tipos de extensões particulares podem vir especificados
em normas ou pode ser definido e registrado por qualquer organização ou comunidade. Em
junho de 1996, a padronização do formato v3 básica foi concluı́da [X.509].
A ISO/IEC, ITU-T, e ANSI X9 também desenvolveram extensões padrão para uso no
campo extensões v3 [X.509] [X9.55]. Estas extensões podem transmitir dados como informações adicionais para identificação do sujeito, informações de atributos-chave, informações
polı́ticas, e restrições para o caminho de certificação.
na
ISO / IEC, ITU-T, e ANSI X9 também desenvolveram extensões padrão para uso no campo
extensões v3 [X.509] [X9.55]. Estas extensões podem transmitir dados como informações
adicionais sujeito identificação, informações de atributo-chave, informações polı́ticas, e restrições de caminho de certificação.
3.2
Er
No entanto, as extensões padrãoISO/IEC, ITU-T, e ANSI X9 são muito amplas em sua
aplicabilidade. Para desenvolver implementações interoperáveis de sistemas X.509 v3 para
uso na Internet, é necessário especificar um perfil para uso das extensões X.509 v3 sob
medida para a Internet. É o objectivo deste documento, especificar um perfil para aplicações
WWW Internet, correio eletrônico, e IPsec. Ambientes com requisitos adicionais podem
implementar usando esse perfil ou pode substituı́-lo.
Caminhos de certificação e Confiança
Um usuário de serviço de segurança que exige conhecimento de uma chave pública geralmente precisa obter e validar o certificado contendo a chave pública utilizada. Se o usuário
da chave pública não é titular de uma cópia segura da chave pública da AC que assinou
o certificado, o nome da AC, e as informações relacionadas (como o perı́odo de validade
ou o nome de restrições), então ele pode precisar de um certificado adicional para obter
a chave pública. Em geral, uma cadeia de múltiplos certificados pode se tornar necessário, compreendendo o certificado do dono da chave pública (a entidade final) assinado por
uma autoridade de certificação, e zero ou mais certificados adicionais de ACs assinados por
outras ACs. Tais cadeias, chamadas de caminhos de certificação, são necessárias porque
um usuário de chave pública só é inicializado com um número limitado de chaves públicas
garantidas pela AC.
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
12
Existem diferentes formas de configuração de ACs que possibilitam aos usuários de chaves
públicas encontrarem os caminhos de certificação. Para o PEM, a RFC 1422 foi definido
uma estrutura hierárquica rı́gida para ACs. Existem três tipos de autoridade certificadora
PEM:
es
(a) Autoridade de Registro de Polı́tica de Internet(ARPI): Esta autoridade, operando
sob os auspı́cios da Internet Society, atua como a raiz da hierarquia de certificação
PEM no nı́vel 1. Emite certificados apenas para o próximo nı́vel de autoridades,
APC (Autoridade de Polı́tica de Certificação). Todos os caminhos de certificação
começam na ARPI.
nd
(b) Autoridades de polı́ticas de Certificação (APC): As APCs estão no nı́vel 2 da
hierarquia, cada APC a ser certificada pelo ARPI. A APC deve estabelecer e publicar uma declaração da sua polı́tica com relação aos usuários de certificação ou
autoridades de certificação subordinadas. APCs distintas visam satisfazer as necessidades de usuários diferentes. Por exemplo, uma APC (uma APC organizacional)
pode apoiar as necessidades gerais de correio eletrônico de organizações comerciais,
e outra APC (uma APC de alta confiança) pode ter uma polı́tica mais rigorosa,
projetada para satisfazer os requisitos legalmente vinculativos de assinatura digital.
na
(c) Autoridades Certificadoras (ACs): ACs estão no nı́vel 3 da hierarquia e podem
também estar em nı́veis mais baixos. As de nı́vel 3 são certificadas pela APC. As
ACs representam, por exemplo, organizações particulares, unidades organizacionais
particulares (por exemplo, departamentos, grupos, seções), ou áreas geográficas
especı́ficas.
Er
Além disso, a RFC 1422, tem uma regra para subordinação de nome, que exige que a AC
só possa emitir certificados para entidades cujos nomes são subordinados (na árvore de
nomeação X.500) para o nome da própria AC. A confiança associada a um caminho de certificação PEM está implı́cito no nome APC. A regra de subordinação de nome garante que
ACs abaixo da APC sejam sensivelmente restritas ao conjunto de entidades subordinadas
que podem certificar (por exemplo, uma AC para uma organização só pode certificar entidades na árvore com o nome da organização). Sistemas usuários de certificado são capazes
de verificar mecanicamente que a regra de subordinação de nome foi seguida.
A RFC 1422 utiliza o formato X.509 certificado v1. As limitações do X.509 v1 tornam
necessário a imposição de várias restrições estruturais que associam claramente as informações sobre a polı́tica ou restrições quanto a utilização dos certificados. Estas restrições
incluem:
(a) uma hierarquia top-down pura, na qual todos os caminhos de certificação começam
na ARPI;
(b) uma regra de subordinação de nomes que restringe os nomes de sujeito de AC; e
(c) uso do conceito APC, que requer o conhecimento de APCs individuais para serem
incluı́dos para verificação lógica da cadeia de certificação. O conhedimento de
APCs individuais é necessário para determinar se a cadeia pode ser aceita.
Com o X.509 v3, a maioria dos requisitos abordados na RFC 1422 podem ser resolvidos
através das extensões do certificado, sem a necessidade de restringir as estruturas das ACs
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
utilizadas. Em particular, as extensões do certificado relacionadas com as polı́ticas de
certificação evitam a necessidade de uso de APCs e as restrições contidas nas extensões
torna desnecessário o uso das regra subordinação de nome. Como resultado, esta norma
suporta uma arquitetura mais flexı́vel, incluindo:
(a) Os caminhos de certificação começam com a chave pública de uma Autoridade
Certificadora no próprio domı́nio do usuário, ou com a chave pública da árvore
superior de uma hierarquia. Começar com a chave pública de uma Autoridade de
Certificadora no domı́nio do usuário tem certas vantagens. Em certos ambientes,
o domı́nio local é o mais confiável.
es
(b) Restrições de nomes podem ser impostas através da inclusão de uma extensão para
restrição explı́cita de nomes no certificado, mas isso não é requisito.
nd
(c) Extensões de Polı́tica e mapeamentos de polı́tica substituem o conceito de APC,
permitindo um maior grau de automação. A aplicação pode determinar se o caminho de certificação é aceitável com base no conteúdo dos certificados, em vez de um
conhecimento a priori da APC. Isto permite a automatização do processamento do
caminho de certificação.
O X.509 v3 também inclui uma extensão que identifica o sujeito de um certificado como
sendo uma CA ou uma entidade final, reduzindo a dependência de informação externa exigida pelo PEM.
3.3
Er
na
Esta especificação abrange duas classes de certificados: certificados de AC e certificados de
entidade final. Os certificados de AC podem ser divididos em três classes: certificado cruzado, certificado auto-emitido e certificado auto-assinado. O certificado cruzado é aquele no
qual o emissor e o sujeito do certificado são entidades distintas. A certificação cruzada descreve uma relação de confiança entre duas ACs. O certificado auto-emitido é aquele no qual
o emissor e o sujeito do certificado são a mesma entidade. A auto-emissão de certificados
ocorre em suporte a mudanças na polı́tica ou nas operações. Certificados auto-assinados
são aqueles nos quais a assinatura de digital pode ser verificada com a chave pública relacionada contida no próprio certificado. Certificados auto-assinados são utilizados para
transmitir uma chave pública para uso como inı́cio de um caminho de certificação. Certificados de entidade final são emitidos para aquelas entidades que não estão autorizadas a
emitir certificados.
Revogação
Quando um certificado é emitido, é esperado que ele seja utilizado durante todo o seu
perı́odo de validade. No entanto, várias circunstâncias podem causar a invalidação do certificado antes da expiração do seu prazo de validade. Tais circunstâncias incluem a mudança
de nome, mudança de associação entre o sujeito e a AC (por exemplo, quando o empregado
termina deixa de prestar serviços a uma organização), comprometimento ou suspeita de
comprometimento da chave privada correspondente. Sob tais circunstâncias, o AC tem que
revogar o certificado.
O X.509 define um método para revogação de certificado. Este método envolve a emissão
periódica de uma estrutura de dados assinada, chamada de lista de certificados revogados
(LCR) por cada AC da infraestrutura. A LCR é uma lista datada com carimbo de tempo
que identifica os certificados revogados, assinada pela AC que o emitiu ou por um emissor
Cooper, et al.
Standards Track
Tradução para Estudo
13
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
es
de CRL, e disponibilizada gratuitamente em um repositório público. Cada certificado revogado é identificado na LCR pelo número de série do certificado. Quando um sistema que
faz uso de certificação, usa um certificado (por exemplo, para verificar a assinatura digital
de um usuário remoto), o sistema não verifica somente a assinatura do certificado e sua
validade, mas também adquire uma LCR adequadamente recente e verifica que o número
de série do certificado não na LCR. O significado de “adequadamente recente” pode variar
de acordo com a polı́tica local, mas isso normalmente remete a LCR emitida mais recentemente. A nova lista é emitida em base regular e periódica (por exemplo, a cada hora,
diariamente ou semanalmente). Uma entrada é adicionada a LCR como parte da próxima
atualização após a notificação de revogação. Uma entrada não deve ser removido da LCR,
até que apareça em LCRs regulares emitidas após o perı́odo de validade do certificado revogado.
Uma vantagem deste método é que as CRLs podem ser distribuı́das da mesma forma que
os certificados propriamente ditos, ou seja, através de servidores e meios de comunicações
não seguros.
nd
Uma limitação do método de revogação por LCR, usando comunicações e servidores não
confiáveis, é que a granularidade do tempo de revogação é limitada ao prazo de emissão
da LCR. Por exemplo, se a revogação for relatada agora, a revogação não será confiável
ao sistema que faz uso do certificado até que todas as LCRs sejam atualizadas conforme
o agendamento de emissão - o que pode ser de até uma hora, um dia ou uma semana,
dependendo da frequência de emissão das LCRs.
3.4
Er
na
Tal como acontece com o formato de certificado X.509 v3, a fim de facilitar a interoperabilidade nas implementações de vários fornecedores, o formato de LCR X.509 v2 tem que
ter um perfil adequado ao uso na Internet. Um dos objetivos do presente documento é
a especificação deste perfil. No entanto, o perfil não define os requisitos para emissão de
LCRs. Os formatos de mensagens e protocolos de suporte on-line para notificação de revogação são definidos em outras especificações do PKIX. Métodos de notificação on-line de
revogação podem ser aplicáveis, em alguns ambientes, como alternativa para a LCR X.509.
A verificação de revogação on-line pode reduzir significativamente a latência entre a geração
do relatório de revogação e a sua distribuição aos terceiros confiáveis. Uma vez que o AC
aceite um relatório da revogação, como autêntico e confiável, qualquer consulta ao serviço
on-line, refletirá corretamente os impactos da revogação na validação do certificado. No entanto, estes métodos impõem novos requisitos de segurança: o validador certificado precisa
confiar no serviço de validação on-line, enquanto o repositório não precisa ser confiável.
Protocolos Operacionais
É necessário um conjunto de protocolos operacionais para entregar os certificados e CRLs
(ou informações de status) aos sistemas clientes que fazem uso de certificado. Torna-se
necessário provisões para uma variedade de diferentes meios de certificado e entrega de
LCR, incluindo procedimentos de distribuição baseados em LDAP, HTTP, FTP e X.500.
Os protocolos operacionais que dão suporte a estas funções são definidas em outras especificações do PKIX. Estas especificações podem incluir definições de formatos de mensagem
e procedimentos para suportar todos os ambientes operacionais acima referidos, incluindo
definições ou referências para tipos apropriados de conteúdo MIME.
Cooper, et al.
Standards Track
Tradução para Estudo
14
PKIX Certificate and CRL Profile
3.5
RFC 5280
Maio de 2008
Protocolos de Gerenciamento
15
Os protocolos de gerenciamento são necessários para dar suporte às interações entre os
usuários da ICP e as entidades que realizam o seu gerenciamento. Como exemplo, um
protocolo de administração pode ser utilizado entre a AC e um sistema cliente com o qual
um par de chave está associada, ou entre duas ACs que implementem certificação cruzada
entre si. O conjunto de funções que, potencialmente, têm de ser suportados por protocolos
de gestão incluem:
es
(a) registro: É o processo no qual o usuário primeiro se faz conhecido pela AC (diretamente, ou através de uma AR), ocorre antes da AC emitir o certificado ou
certificados para o usuário.
nd
(b) inicialização: Antes do sistema cliente poder operar de forma segura, é necessária
a instalação de materiais essenciais que têm a relação adequada com as chaves
armazenadas em outras partes da infra-estrutura. Por exemplo, o cliente tem de ser
inicializado de maneira segura com a chave pública e outras informação garantidas
pela AC(s), que serão utilizadas na validação dos caminhos de certificação. Além
disso, um cliente normalmente tem de ser inicializado com seu próprio par(es) de
chave(s).
(c) certificação: Este é o processo no qual a AC emite o certificado de chave pública
para o usuário, e retorna esse certificado para o sistema cliente do usuário e/ou
publica o certificado em um repositório.
na
(d) recuperação de par de chaves: Como opção, os materiais de chave do usuário cliente
(por exemplo, a chave privada de um usuário utilizado para fins de criptografia)
pode ser suportado por uma CA ou um sistema de backup de chave. Se um usuário
precisa recuperar esses materiais de backup de chave (por exemplo, como resultado
de uma senha esquecida ou perda do arquivo da cadeia da chave), um protocolo de
troca de mensagem on-line protocolo pode ser necessários para das suporte a esta
ação.
Er
(e) atualização de par de chaves: Todos os pares de chaves precisam ser atualizados
regularmente, ou seja, substituı́do por um novo par de chaves, e emissão de novos
certificados
(f) solicitação de revogação: Uma pessoa autorizada avisa uma AC sobre uma uma
situação anormal e solicita a revogação do certificado.
(g) certificação cruzada: Duas ACs trocam informações utilizadas na criação de um
certificado cruzado. Um certificado cruzado é um certificado emitido por uma AC
para outra AC que contém uma chave de assinatura de AC usada na emissão de
certificados.
Note que os protocolos on-line não são a única maneira de implementar as funções acima.
Para todas as funções, existem métodos off-line utilizados para obtenção do mesmo resultado, esta especificação não exige o uso de protocolos on-line. Por exemplo, quando são
utilizados tokens, muitas das funções podem ser realizadas no próprio token. Além disso,
algumas das funções acima descritas podem ser combinados em um protocolo de troca de
mensagens. Em particular, dois ou mais registos, inicialização e funções de certificação
podem ser combinados em uma troca de mensagens de protocolo.
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
A série de especificações PKIX define um conjunto de formatos de mensagens padrão que
suportam as funções acima. Os protocolos para transmitir estas mensagens em diferentes
ambientes (por exemplo, a transferência de ficheiros de e-mail, e WWW) encontram-se
descritos nessas especificações.
4
Perfil do Certificado e das Extensões do Certificado
es
Esta seção apresenta o perfil para certificados de chaves públicas que promovem a interoperabilidade e a utilização continuada de uma ICP. Esta seção é baseada no formato de
certificado X.509 v3 e nas extensões de certificado padrão definidas no [X.509]. Os documentos ISO/IEC e ITU-T utiliza a versão de 1997 do ASN.1, enquanto este documento
usa versão de 1988 da sintaxe ASN.1, o certificado codificado e suas extensões padrão são
equivalentes. Esta seção também define as extensões privadas necessárias para suportar
uma ICP na comunidade da Internet.
Campos Básicos do Certificado
na
4.1
nd
Os certificados podem ser utilizados numa vasta gama de aplicações e ambientes que abrangem um largo espectro de objetivos de interoperabilidade e um espectro mais amplo ainda
de requisitos operacionais e de segurança. O objetivo deste documento é estabelecer uma
base comum para aplicações genéricas que exigem ampla interoperabilidade e requisitos de
propósitos especiais limitados. Em particular, a ênfase será em apoiar o uso de certificados
X.509 v3 para uso no correio eletrônico informal da Internet, no IPsec e nas aplicações
WWW.
A sintaxe básica do certificado X.509 v3 segue abaixo. Para o cálculo da assinatura, os dados
que serão assinados é codificado usando as regras de codificação (DER) do ASN.1 [X.690].
A codificação DER do ASN.1 DER é baseada em rótulo, e um sistema de codificação desse
valor para cada elemento.
::=
Er
Certificate
tbsCertificate
signatureAlgorithm
signatureValue
TBSCertificate
::=
version
serialNumber
signature
issuer
validity
subject
subjectPublicKeyInfo
issuerUniqueID
subjectUniqueID
extensions
Cooper, et al.
SEQUENCE {
TBSCertificate,
AlgorithmIdentifier,
BIT STRING }
SEQUENCE {
[0] EXPLICIT Version DEFAULT v1,
CertificateSerialNumber,
AlgorithmIdentifier,
Name,
Validity,
Name,
SubjectPublicKeyInfo,
[1] IMPLICIT UniqueIdentifier OPTIONAL,
-- If present, version MUST be v2 or v3
[2] IMPLICIT UniqueIdentifier OPTIONAL,
-- If present, version MUST be v2 or v3
[3] EXPLICIT Extensions OPTIONAL
-- If present, version MUST be v3
Standards Track
Tradução para Estudo
16
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
}
17
::=
INTEGER { v1(0), v2(1), v3(2) }
CertificateSerialNumber
::=
INTEGER
Validity
notBefore Time,
notAfter Time }
::=
SEQUENCE {
Time
::=
CHOICE {
UTCTime,
GeneralizedTime }
UniqueIdentifier
::=
BIT STRING
SubjectPublicKeyInfo
algorithm
subjectPublicKey
::=
Extensions
::=
SEQUENCE SIZE (1..MAX) OF Extension
Extension
extnID
critical
extnValue
::=
SEQUENCE {
OBJECT IDENTIFIER,
BOOLEAN DEFAULT FALSE,
OCTET STRING
-- contains the DER encoding of an ASN.1
-- value corresponding to the extension
-- type identified by extnID
na
}
SEQUENCE {
AlgorithmIdentifier,
BIT STRING }
nd
utcTime
generalTime
es
Version
Os itens a seguir descrevem os certificados X.509 v3 para uso na Internet.
Campos do Certificado
Er
4.1.1
O certificado é uma SEQUÊNCIA de três campos obrigatórios. Os campos são detalhadamente descritos nas subseções abaixo.
4.1.1.1
tbsCertificate
Esse campo contém os nomes do sujeito e do emissor, uma chave pública associada ao
sujeito, um perı́odo de validade, e outras informações relacionadas. Os campos são descritos
em detalhes na seção 4.1.2; o campo tbsCertificate normalmente inclui extensões, que são
descritas na seção 4.2.
4.1.1.2
signatureAlgorithm
O campo signatureAlgorithm contém o identificador do algoritmo criptográfico usado pela
AC para assinar o certificado. [RFC3279], [RFC4055], e [RFC4491] lista os algoritmos de
assinatura suportados, mas outros algoritmos também PODEM ser suportados.
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
Um identificador de algoritmo é definido pela estrutura ASN.1 a seguir:
18
AlgorithmIdentifier
algorithm
parameters
::=
SEQUENCE {
OBJECT IDENTIFIER,
ANY DEFINED BY algorithm OPTIONAL }
es
O identificador de algoritmo é utilizado para identificar o algoritmo criptográfico. O componente OBJECT IDENTIFIER identifica o algoritmo (como o DSA com SHA-1). O
conteúdo do do campo parameters variam de acordo com o algoritmo identificado.
Este campo DEVE conter os mesmos identificadores de algoritmo que o campo signature
na sequência de campos do tbsCertificate (seção 4.1.2.3).
4.1.1.3
signatureValue
nd
O campo signatureValue contém a assinatura digital calculada sobre o campo tbsCertificate codificado em DER do ASN.1. A codificação do tbsCertificate é usada como entrada
da função de assinatura. Este valor de assinatura é codificado como um BIT STRING e
incluı́do no campo de assinatura. Os detalhes deste processo são especificados para cada
algoritmo listado em [RFC3279], [RFC4055] e [RFC4491].
4.1.2
na
Para gerar a assinatura, a AC de certifica da validade da informação contida no campo
tbsCertificate. Em particular, a AC se certifica da relação existente entre o material da
chave pública e o sujeito do certificado.
TBSCertificate
4.1.2.1
Er
A sequência TBSCertificate contém informações associadas ao sujeito do certificado e a AC
que o emitiu. Todo TBSCertificate contém o nome do sujeito e o emissor, uma chave pública
associada ao sujeito, um perı́odo de validade, o número da versão e o número serial; alguns
PODEM conter campos opcionais de identificador único. O restante desta seção descreve a
sintaxe e a semântica dos três campos. O TBSCertificate geralmente inclui extensões. As
extensões para ICP na Internet são descritos na seção 4.2.
Version
Este campo descreve a versão do certificado codificado. Quando são utilizados extensões,
como esperado na definição do perfil, o valor deste campo deve ser 3 (valor igual a 2). Caso
não ocorra nenhuma extensão, mas o UniqueIdentifier esteja presente, a versão DEVERIA
ser 2 (valor igual a 1); entretanto, a versão PODE ser 3. Quando apenas os campos básicos
estiverem presentes, a versão DEVERIA ser 1 (o valor é omitido do certificado, é considerado o valor padrão); embora a versão possa ser 2 ou 3.
As implementações DEVERIAM estar preparadas para aceitar qualquer versão de certificado. No mı́nimo, as implementações que estão em conformidade DEVEM reconhecer os
certificados de versão 3.
A geração de certificados de versão 2 não é esperado pelas implementações baseadas no
presente perfil.
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
4.1.2.2
RFC 5280
Maio de 2008
Serial Number
O serial number DEVE ser um número inteiro positivo atribuı́do pela AC para cada certificado. Ele DEVE ser único para cada certificado emitido pela respectiva AC (por exemplo,
o nome do emissor e o número serial identificam um certificado único) As ACs DEVEM
garantir que o serialNumber seja um número inteiro não negativo.
es
Dada a unicidade requerida acima, é esperado que este campo contenha números inteiros
longos. Os sistemas usuários de certificado DEVEM ser capazes de processar números
inteiros de até 20 octetos. Quando em conformidade, as ACs NÃO DEVEM utilizar serialNumber com valores maiores que 20 octetos.
Nota: ACs que não se encontram em conformidade PODEM emitir certificados com números negativos ou iguais a zero. Os sistemas usuários de certificado DEVERIAM ser
preparados para tratar adequadamente tais certificados.
Signature
nd
4.1.2.3
Este campo contém o identificador de algoritmo para o algoritmo utilizado pela AC para
assinar o certificado.
4.1.2.4
Issuer
na
Este campo DEVE conter o mesmo identificador de algoritmo do campo signatureAlgorithm
na sequência de campos do certificado (seção 4.1.1.2). O conteúdo dos parâmetros opcionais
variam de acordo com o identificador do algoritmo. [RFC3279], [RFC4055] e [RFC4491]
listam os algoritmos de assinatura suportados, mas outros algoritmos PODEM também ser
suportados.
O campo issuer identifica a entidade que assinou e emitiu o certificado. O campo issuer
DEVE conter um valor não vazio de nome distinto (DN). O campo issuer é definido com o
tipo Name do ASN.1 [X.500]. Name é definido pela estrutura ASN.1 a seguir:
::=
CHOICE {
-- only one possibility for now -RDNSequence }
::=
SEQUENCE OF RelativeDistinguishedName
Er
Name
rdnSequence
RDNSequence
RelativeDistinguishedName ::=
SET SIZE (1..MAX) OF AttributeTypeAndValue
AttributeTypeAndValue
type
value
::=
SEQUENCE {
AttributeType,
AttributeValue }
AttributeType
::=
OBJECT IDENTIFIER
AttributeValue
::=
ANY -- DEFINED BY AttributeType
DirectoryString
::=
Cooper, et al.
CHOICE {
Standards Track
Tradução para Estudo
19
PKIX Certificate and CRL Profile
RFC 5280
teletexString
printableString
universalString
utf8String
bmpString
Maio de 2008
TeletexString (SIZE (1..MAX)),
PrintableString (SIZE (1..MAX)),
UniversalString (SIZE (1..MAX)),
UTF8String (SIZE (1..MAX)),
BMPString (SIZE (1..MAX)) }
O tipo Name descreve um nome hierárquico composto de atributos, tais como o nome do
paı́s, e os valores correspondentes, como US. O tipo de componente AttributeValue é determinado pelo AttributeType; geralmente será um DirectoryString.
nd
es
O tipo DirectoryString é definido como uma selecão entre PrintableString, TelexString,
BMPString e UniversalString. As ACs em conformidade com este perfil DEVEM usar codificação PrintableString ou UTF8String para codificar o DirectoryString, com duas exceções.
Quando ACs tiverem emitido anteriormente certificados com campos issuer com atributos
codificados usando TelexString, BMPString ou UniversalString, a AC PODE continuar a
usar essas codificações para o DirectoryString de maneira a preservar a compatibilidade do
legado. Também no caso de novas ACs serem adicionadas a um domı́nio onde existem ACs
que emitem certificados com campos issuer com atributos codificados usando TelexString,
BMPString ou UniversalString PODEM codificar os atributos que elas trocam com as ACs
existentes usando a mesma codificação que as ACs utilizam.
na
Como notado acima, os nomes distintos são compostos por atributos. A presente espcificação não restringe o conjunto de tipos de atributos que podem aparecer nos nomes. Entretanto, as implementações em conformidade DEVEM estar preparadas para receberem
certificados com nomes contendo o conjunto de atributos listados a seguir. Esta especificação RECOMENDA o suporte a tipos adicionais de atributos.
O conjunto padrão de atributos foi definido na série de especificações do X.500 [X.520]. As
implementações deta especificação DEVEM estar preparadas para receberem os seguintes
tipos de atributos de nomes padrão nos campos issuer e subject (seção 4.1.2.6):
* paı́s,
Er
* organização,
* unidade organizacional,
* qualificador do nome distinto,
* nome do estado ou provincia,
* nome comum (por exemplo, “Susan Housley”), e
* número serial.
Além disso, as implementações desta especificação DEVERIAM estar preparadas para receberem os seguintes tipo de atributos padrão tanto no nome do emissor quanto no nome
do sujeito:
* localidade
* tı́tulo,
Cooper, et al.
Standards Track
Tradução para Estudo
20
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
* sobrenome,
* nome,
* iniciais,
21
* pseudônimo, e
* qualificador de geração (por exemplo, “Jr”, “3º”, ou “IV”).
es
A sintaxe e identificadores de objeto (OIDs) para esses tipos de atributos são fornecidos
nos módulos ASN.1 do apêndice A.
nd
Adicionalmente, as implementações desta especificação DEVEM estar preparadas para receberem atributos domainComponent, como descrito em [RFC4519]. O Sistema de Nome
de Domı́nio (DNS) fornece um sistema de rótulos hierárquico. Este atributo fornece um
mecanismo adequado para organização que deseja usar DNs em paralelo aos nomes DNS.
Isso não é uma substituição para o componente dNSName das extensões alternative name.
Não é necessário que as implementações convertam estes nomes em nomes DNS. A sintaxe
associada e o OID para este tipo de atributo são fornecidos nos módulos ASN.1 do apêndice
A. Regras para a codificação de nomes de domı́nio internacionalizados para uso no atributo
domainComponent serão especificadas na seção 7.3.
4.1.2.5
Validity
na
Os sistemas usuários de certificados DEVEM ser preparados para processar campos contendo nomes distintos do emissor e do sujeito (seção 4.1.2.6) para validar a cadeia de nome
do caminho de certificação (seção 6). A cadeia de nomes é executada fazendo a correspondência entre o nome distinto do emissor no certificado com o nome do sujeito no certificado
da AC. As regras de comparação de nomes distintos estão especificadas na seção 7.1. Se
os nomes nos campos emissor e sujeito de um certificado correspondem de acordo com as
regras especificadas na seção 7.1 então o certificado é auto-emitido.
Er
O perı́odo de validade do certificado é o intervalo de tempo durante o qual a AC garante
que vai manter as informações sobre o status do certificado. O campo é representado como
uma sequência de duas datas: a data em que o perı́odo de validade do certificado começa
(notBefore) e a data na qual o perı́odo de validade do certificado termina (notAfter). Ambos notBefore e notAfter podem ser codificados como UTCTime ou GeneralizedTime.
As ACS em conformidade com esse perfil deve sempre codificar datas de validade de certificado até o ano de 2049 como UTCTime; data de validade de certificado em 2050 ou
posterior, deve ser codificada como GeneralizedTime. As aplicações em conformidade devem ser capazes de processar datas de validade que são codificados em tanto em UTCTime
quanto em GeneralizedTime.
O perı́odo de validade de um certificado é o perı́odo de tempo compreendido entre notBefore e notAfter, inclusive nestas datas.
Em algumas situações, são fornecidos aos dispositivos certificados para os quais nenhuma
data de expiração boa pode ser atribuı́da. Por exemplo, pode ser emitido um certificado
para um dispositivo que vincula o seu modelo e número de série com a sua chave pública,
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
é esperado que tal certificado seja utilizado durante toda a vida útil do dispositivo.
Para indicar que um certificado não tem data de validade bem definida, ao campo notAfter
deve ser atribuı́do o valor de GeneralizedTime igual a 99991231235959Z.
22
4.1.2.5.1
es
Quando o emissor não é capaz de manter informações de estado até a data notAfter (inclusive quando a data contida em notAfter for 99991231235959Z), o emissor DEVE assegurar
que não existirá nenhum caminho de certificação válido para o certificado após encerrada a
manutenção de informações sobre o estado do certificado. Isto pode ser conseguido através
de expiração ou revogação de todos os certificados de AC contendo a chave pública usada
para verificar a assinatura do certificado e com a interrupção do uso da chave pública
utilizada para verificar a assinatura do certificado como âncora de confiança.
UTCTime
nd
O tipo de tempo universal, UTCTime, é um tipo padrão ASN.1 usado para representação
de datas e tempo. O UTCTime especifica para ano os dois dı́gitos de mais baixa órdem e
o tempo é especificado com a precisão de um minuto ou um segundo. O UTCTime inclui
tanto Z (para Zulu, ou Greenwich Mean Time) ou um tempo diferencial de tempo.
na
Para os propósitos deste perfil, os valores UTCTime DEVEM ser expressos em Greenwich
Mean Time (Zulu) e DEVEM incluir os segundos (por exemplo, tempos são representados
por YYMMDDHHMMSSZ), mesmo onde o número relacionado aos segundos seja zero. Os
sistemas em conformidade DEVEM interpretar o campo ano (YY) como:
Quando YY for maior que ou igual a 50, o ano DEVERÁ ser interepretado como
19YY; e
Quando YY for menor que 50, o ano DEVERÁ ser interpretado como 20YY.
4.1.2.5.2
GeneralizedTime
Er
O tipo tempo generalizado, GeneralizedTime, é um tipo padrão ASN.1 para representação
precisa de tempo variável. Opcionalmente, o campo GeneralizedTime pode incluir a representação do diferencial do tempo entre o tempo local e o Greenwich Mean Time.
Para os propósitos deste perfil, os valores de GeneralizedTime DEVEM ser expressos em
Greenwich Mean Time (Zulu) e DEVEM incluir segundos (por exemplo, tempos são representados por YYYYMMDDHHMMMSSZ), mesmo quando o número de segundos for igual
a zero. Os valores de GeneralizedTime NÃO DEVEM incluir frações de segundos.
4.1.2.6
Subject
O campo subject identifica a entidade associada com a chave pública armazenada no campo
subject public key. O nome do sujeito PODE ocorrer no campo subject e/ou na extensão
subjectAltName. Se o sujeito é uma AC (por exemplo, a extensão basic constraints, a ser
discutida na seção 4.2.1.9, ocorre e o valor do campo cA será TRUE), então o campo subject DEVE ser preenchido com um nome distinto não vazio correspondente ao conteúdo do
campo issuer (seção 4.1.2.4) em todos os certificados emitidos com o sujeito AC. Quando
o sujeito for um emissor de LCR (por exemplo, na extensão key usage, discutida na seção
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
4.2.1.3, estará presente e o valor de cRLSign será TRUE), então o campo subject DEVE ser
preenchido com um nome distinto não vazio correspondente ao conteúdo do campo issuer
(seção 5.1.2.3) em todas as LCRs emitidas pelo emissor de LCR. Quando a informação de
nome do sujeito estiver presente apenas na extensão subjectAltName (por exemplo, uma
chave relacionada apenas a um endereço de email ou URI), então o nome do sujeito DEVE
ser uma sequência vazia e a extensão subjectAltName DEVE ser marcada como crı́tica.
es
Quando o campo subject não for vazio, DEVE conter um nome distinto (DN) X.500. O
DN DEVE ser único para cada entidade sujeito certificado por uma AC como definido no
campo issuer. Uma AC PODE emitir mais que um certificado com o mesmo DN para a
mesma entidade sujeito.
na
nd
O campo subject é definido como um nome tipo X.501. Os requisitos de implementação
para este campo são aqueles definidos para o campo issuer (seção 4.1.2.4). As implementações desta especificação DEVEM se preparadas para receberem nomes de sujeito contendo
os tipos de atributos necessários para o campo issuer. As implementações desta especificação DEVERIAM ser preparadas para receber nomes de sujeito contendo os tipos de
atributos recomendados para o campo issuer. A sintaxe e os identificadores de objetos
(OIDs) associados a estes tipos de atributos são fornecidos nos módulos ASN.1 do apêndice
A. As implementações desta especificação DEVEM usar as regras de comparação contidas
na seção 7.1 para processar os tipos de atributos não comuns (por exemplo, para come
de cadeia) cujos valores de atributos usam uma das opções de codificação definidas como
DirectoryString. Comparações binárias deveriam ser utilizadas quando tipos de atributos incomuns incluirem valores de atributos com opções de codificação diferentes daquelas
encontradas no DirectoryString. Isso permite às implementações processarem certificados
com atributos incomuns presentes no nome de sujeito.
Na codificação dos valores de atributos do tipo DirectoryString, as ACs em conformidade
DEVEM usar codificação PrintableString ou UTF8String, com as seguintes exceções:
Er
(a) Quando o sujeito de um certificado for uma AC, o campo subject DEVE ser codificado da mesma forma que ele foi codificado no campo issuer (seção 4.1.2.4) em
todos os certificados emitidos pelo sujeito AC. Assim, se o sujeito AC codificar
atributos nos campos issuer do certificado dos certificados que ela emite usando
codificação TeletexSting, BMPString, ou UniversalString, o campo subject dos
certificados emitidos para aquela AC DEVEM usar a mesma codificação.
(b) Quando o sujeito de um certificado é um emissor de LCR, o campo subject DEVE
ser codificado da mesma forma que foi codificado no campo issuer (seção 5.1.2.3)
em todas as LCRs emitidas pelo sujeito emissor da LCR.
(c) TeletexString, BMPString e UniversalString são incluı́dos para compatibilidade
com o legado, e NÃO DEVERIAM ser usados em certificados para novos sujeitos. Entretanto, estes tipos PODEM ser usados em certificados onde o nome foi
previamente estabelecido, incluindo os casos nos quais um novo certificado esta
sendo emitido para um novo sujeito onde os atributos sendo codificados foram
previamente estabelecidos no certificado emitido para outros sujeitos. Os usuários
do certificado DEVERIAM ser preparados para receberem certificados com esses
tipos.
Implementações do legado existem onde um endereço de email está incorporado no nome
distinto do sujeito como um atributo emailAddress [RFC2985]. O valor do atributo para
Cooper, et al.
Standards Track
Tradução para Estudo
23
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
emailAddress é do tipo IA5String para permitir inclusão do caractere “@”, que não é parte
do conjunto de caracteres PrintableString. Valores de atributo emailAddress não são sensı́veis quanto a maiúsculas e minúsculas (por exemplo, “[email protected]” é o mesmo
que “[email protected]”).
4.1.2.7
Subject Public Key Info
es
As implementações em conformidade quando da geração de novos certificados com endereços
de email PODEM usar o rfc822Name na extensão de nome de sujeito alternativo (seção
4.2.1.6) para descrever tal identidade. Inclusões simultâneas do atributo emailAddress
no nome distinto do sujeito para suportar implementações do legado não é uma prática
incentivada, embora seja permitida.
4.1.2.8
Unique Identifiers
nd
Este campo é utilizado para incluir a chave pública e o identificar o algoritmo com o qual
a chave é usada (por exemplo, RSA, DSA ou Diffie-Hellman). O algoritmo é identificado
usando a estrutura AlgorithmIdentifier especificada na seção 4.1.1.2. O identificador de
objeto para o algoritmo suportado e o método de codificação do material da chave pública (chave pública e os seus parâmetros) são especificados em [RFC3279], [RFC4055] e
[RFC4491].
Extensions
Er
4.1.2.9
na
Esses campos somente DEVEM estar presentes quando a versão for 2 ou 3 (seção 4.1.2.1).
Esses campos NÃO DEVEM aparecer quando a versão for 1. O subject e issuer unique
identifiers estão presentes no certificado para possibilitar a reutilização do nome do sujeito
e/ou emissor no decorrer do tempo. Este perfil RECOMENDA que os nomes não sejam
reutilizados para entidades diferentes. ACs em conformidade com este perfil NÃO DEVEM
gerar certificados com unique identifiers. As aplicações em conformidade com este perfil
DEVERIAM ser capazes de analisar certificados que incluem unique identifiers, mas não
há nenhum requisito de processamento associado ao unique identifiers.
Este campo DEVE aparecer apenas quando a versão for 3 (seção 4.1.2.1). Quando presente,
o campo é uma SEQUENCE de um ou mais extensões de certificado. O formato e o
conteúdo das extensões de certificado da ICP de Internet estão definidos na seção 4.2.
4.2
Extensões do Certificado
As extensões definidas para certificados X.509 v3 fornecem métodos para associar atributos adicionais aos usuários ou chaves públicas, e também para a gestão das relações entre
ACs. O formato do certificado X.509 v3 também permite que comunidades definam extensões privadas que levam informações exclusivas a essas comunidades. Cada uma das
extensões do certificado é designada como crı́tica ou não crı́tica. O sistema que utiliza certificado deve rejeitar o certificado quando encontrar uma extensão crı́tica não reconhecida
ou uma extensão crı́tica que contenha informações que não podem ser processadas. A extensão não-crı́tica PODE ser ignorada quando não reconhecida, mas DEVE ser processada
quando reconhecido. As seções seguintes apresentam extensões recomendadas usadas nos
certificados Internet Internet e os localização padrão para a informação. As comunidades
Cooper, et al.
Standards Track
Tradução para Estudo
24
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
podem optar por usar extensões adicionais, no entanto, todo cuidado deve ser tomado na
adoção de qualquer extensão crı́tica que possam inviabilizar o seu uso em um contexto geral.
nd
es
Cada extensão inclui um OID e uma estrutura ASN.1. Quando uma extensão aparece em
um certificado, o respectivo OID ocorre como um campo extnID e a estrutura codificada
em DER do ASN.1 é o valor do string de octetos contido no extnValue. O certificado
NÃO DEVE incluir mais que uma instância de uma determinada extensão. Por exemplo, o
certificado pode conter apenas uma extensão authority key identifier (seção 4.2.1.1). Uma
extensão inclui a opção de criticidade como um valor booleano, com valor padrão FALSE.
O texto relacionado a cada das extensões, especifica os valores aceitáveis para campo crı́tico
para ACs em conformidade com este perfil.
As ACs em conformidade DEVEM suportar as extensões key identifiers (seção 4.2.1.1 e
4.2.1.2), basic constraints (seção 4.2.1.9), key usage (seção 4.2.1.3), e certificate policies
(seção 4.2.1.4). Quando uma AC emite certificados com uma sequência vazia para o campo
subject, a AC DEVE suportar a extensão subject alternative name (seção 4.2.1.6). O
suporte às extensões restantes permanece opcional. As ACs em conformidade PODEM suportar extensões que não são identificadas nesta especificação; os emissores de certificados
com estas extensões que as marcarem como crı́ticas podem dificultar a interoperabilidade.
No mı́nimo, as aplicações em conformidade com este perfil DEVEM reconhecer as seguintes
extensões: key usage (seção 4.2.1.3), certificate policies (seção 4.2.1.4), subject alternative
name (seção 4.2.1.6), basic constraints (seção 4.2.1.9), name constraints (seção 4.2.1.10),
policy constraints (seção 4.2.1.11), extended key usage (seção 4.2.1.12), e inhibir anyPolicy
(seção 4.2.1.14).
4.2.1
na
Adicionalmente, as aplicações em conformidade com este perfil DEVERIAM reconhecer as
extensões authority and subject key identifier (seção 4.2.1.1 e 4.2.1.2) e policy mappings
(seção 4.2.1.5).
Extensões Padrão
id-ce
4.2.1.1
Er
Esta seção identifica as extensões padrão de certificado no [X.509] para uso na ICP Internet.
Cada extensão é associada a um OID definido em [X.509]. Esses OIDs são membros do
arco de OID id-ce-arc, que é definido da seguinte forma:
OBJECT IDENTIFIER
::=
{ joint-iso-ccitt(2) ds(5) 29 }
Authority Key Identifier
A extensão authority key identifier fornece um meio de identificação da chave pública correspondente a chave privada usada para assinar o certificado. Esta extensão é utilizada
quando um emissor tem múltiplas chaves de assinatura (também d devido a ocorrência de
vários pares de chaves simultâneos ou devido à mudança do par de chaves). A identificação
PODE ser baseada tanto no key identifier (identificador da chave do sujeito no certificado
do emissor) como no nome do emissor e número serial.
O campo keyIdentifier da extensão authorityKeyIdentifier DEVE ser incluı́do em todos os
certificados gerados por ACs em conformidade para facilitar a construção do caminho de
certificação. Existe uma exceção; quando uma AC distribui sua chave pública na forma
de certificado “auto-assinado”, o identificador de chave da autoridade PODE ser omitido.
Cooper, et al.
Standards Track
Tradução para Estudo
25
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
A assinatura em um certificado auto-assinado é gerada com a chave privada associada a
chave pública do sujeiro do certificado. (Isso prova que o emissor tem a posse tanto da
chave pública quanto da privada). Neste caso, o sujeito e o identificador de chave de autoridade devem ser idênticos, mas apenas o identificador de chave do sujeito é necessário
para a construção do caminho de certificação.
es
O valor do campo keyIdentifier DEVERIA ser derivado a partir da chave pública utilizada
para verificar a assinatura do certificado ou do método que gera valores únicos. Dois métodos comuns para geração de identificadores para chave pública são descritos na seção
4.2.1.2. Quando o identificador de chave não tiver sido previamente definido, esta especificação RECOMENDA o uso de um desses métodos para a geração do keyIdentifiers ou o uso
de um método similar que usa um algoritmo de hash diferente. Quando um identificador
de chave tiver sido previamente definido, a AC DEVERIA usar o identificador previamente
definido.
nd
Este perfil RECOMENDA suporte ao método de identificão de chave a todos os usuários
de certificado.
As ACs em conformidade DEVEM marcar esta extensão como não crı́tica.
id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 35 }
SEQUENCE {
[0] KeyIdentifier OPTIONAL,
[1] GeneralNames OPTIONAL,
[2] CertificateSerialNumber OPTIONAL }
na
AuthorityKeyIdentifier
::=
keyIdentifier
authorityCertIssuer
authorityCertSerialNumber
KeyIdentifier ::= OCTET STRING
4.2.1.2
Subject Key Identifier
Er
A extensão subject key identifier fornece meios para identificação de certificados que contém uma determinada chave pública.
Para facilitar a construção do caminho de certificação, esta extensão DEVE aparecer em
todos os certificados de AC, ou seja, todos os certificados que incluem a extensão basic
constraints (seção 4.2.1.9) nos quais o valor de cA é TRUE. Nos certificados de AC em
conformidade, o valor do subject key identifier DEVE ser o valor colocado no campo key
identifier da extensão authority key identifier (seção 4.2.1.1) dos certificados emitidos pelo
sujeito deste certificado. As aplicações não precisam verificar que os identificadores de
chave corresponde quando realizam a validação do caminho de certificação.
Para certificados de AC, os identificadores de chave de sujeito DEVERIAM ser derivados
da chave pública ou a partir de um método que gera valores únicos. Dois métodos comuns
para geração de identificadores de chave a partir da chave pública são:
(1) o keyIdentifier é composto por um hash de 160 bits SHA-1 do valor do BIT STRING
subjectPublicKey (excluı́dos o rótulo, o tamanho e o número de bits não utilizados).
Cooper, et al.
Standards Track
Tradução para Estudo
26
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
(2) o keyIdentifier é composto por um campo de quatro bit com o valor 0100 seguido
dos 60 bits menos significativos do hash SHA-1 calculado sobre o valor em BIT
STRING do subjectPublicKey (excluı́dos o rótulo, tamanho, e número de bits não
utilizados).
Também são aceitos outros métodos de geração de números únicos.
27
es
Para certificados de entidades finais, a extensão de identificação de chave de sujeito fornece
um meio de identificação de certificados contendo uma chave pública especı́fica utilizada
em uma aplicação. Quando uma entidade tiver obtido múltiplos certificados, especialmente
de múltiplas ACs, o identificador de chave de sujeito fornece meios de identificação rápida
do conjunto de certificados que contêm uma chave pública especı́fica. Para auxiliar as aplicações na identificação do certificado de entidade final apropriado, a extensão DEVERIA
ser incluı́da em todos os certificados de entidade final.
nd
Para certificados de entidade final, os identificadores de chave de sujeito DEVERIAM ser
derivados da chave pública. Abaixo são identificados dois métodos para geração de identificadores de chave a partir da chave pública.
Quando o identificador de chave não tiver sido previamente definido, esta especificação RECOMENDA o uso de um dos métodos para geração de keyIdentifiers ou usar um método
similar que utilize um algoritmo de hash diferente. Quando um identificador de chave tiver
sido previamente definido a AC DEVERIA usar o identificador já definido.
na
As ACs em conformidade DEVEM marcar esta extensão como não crı́tica.
id-ce-subjectKeyIdentifier
SubjectKeyIdentifier
4.2.1.3
OBJECT IDENTIFIER ::= { id-ce 14 }
::=
KeyIdentifier
Key Usage
Er
A extensão key usage define o propósito (por exemplo, codificação, assinatura, assinatura
de certificado) da chave contida no certificado. A restrição de uso pode ser empregada
quando uma chave que poderia ser usada para mais de uma operação deve ter seu escopo
de uso restrito. Por exemplo, quando uma chave RSA deve ser utilizada somente para a
verificação de assinatura em objetos diferentes de certificados de chave pública e LCRs, os
bits digitalSignature e/ou nonRepudiation estariam ativados. Da mesma forma, quando
uma chave RSA for utilizada somente para gerenciamento de chave, o bit keyEncipherment
estaria ativado.
As ACs em conformidade DEVEM incluir esta extensão nos certificados que contém chaves
públicas que são usados para validar assinaturas digitais em outros certificados de chave
pública ou LCRs. Quando presente, as ACs em conformidade DEVERIAM marcar esta
extensão como crı́tica.
id-ce-keyUsage
KeyUsage
digitalSignature
nonRepudiation
Cooper, et al.
OBJECT IDENTIFIER ::= { id-ce 15 }
::=
BIT STRING {
(0),
(1),
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
keyEncipherment
dataEncipherment
keyAgreement
keyCertSign
cRLSign
encipherOnly
decipherOnly
RFC 5280
Maio de 2008
-- recent editions of X.509 have
-- renamed this bit to contentCommitment
(2),
(3),
(4),
(5),
(6),
(7),
(8) }
es
Os bits para definição do tipo de uso, contidos na extensão KeyUsage, são utilizados da
seguinte forma:
O bit digitalSignature é ativado quando a chave pública do sujeito é utilizada para
verificar as assinaturas digitais, exceto assinaturas em certificados (bit 5) e LCR (bit
6), tais como os utilizados em um serviço de autenticação de uma entidade, um serviço
de dados de autenticação de origem, e/ou um serviço de integridade.
nd
O bit nonRepudiation é ativado quando a chave pública do sujeito é usada para
verificar as assinaturas digitais, diferentes das assinaturas de certificados (bit 5) e
de CRL (bit 6), usado para fornecer um serviço não-repúdio que protege contra uma
negação falsa por parte da entidade que assinou negando alguma ação realizada. Neste
caso de conflito, uma terceira parte confiável pode determinar a autenticidade do dado
assinado. (Note que as edições recentes do X.509 ter renomeado o bit nonRepudiation
para contentCommitment.)
na
O bit keyEncipherment é ativado quando a chave pública do sujeito é utilizada para
codificar chaves privadas ou secretas, ou seja, para o transporte de chaves. Por exemplo, este bit será ativado quando uma chave pública RSA é usada para criptografar
uma chave de decodificação de conteúdo simétrica ou uma chave assimétrica privada.
Er
O bit dataEncipherment é ativado quando a chave pública do sujeito é utilizada para
cifrar dados, sem a utilização de um algoritmo intermediário de cifra simétrica. Note
que a utilização deste bit é extremamente raro; quase todos os aplicativos usam o
transporte de chave ou acordo de chave para estabelecer uma chave simétrica.
O bit keyAgreement é ativado quando a chave pública do sujeito é usada para acordo
de chave. Por exemplo, quando uma chave Diffie-Hellman é para ser utilizado para o
gerenciamento de chaves, então esse bit é ativado.
O bit keyCertSign é ativado quando a chave pública do sujeito é usada para verificação
de assinaturas em certificados de chaves públicas. Se o bit keyCertSign é ativado,
então o bit de cA na extensão basic constraints (Seção 4.2.1.9) também DEVE ser
ativado.
O bit cRLSign é ativado quando a chave pública do sujeito é usada para verificação
de assinaturas na listas de certificados revogados (por exemplo, LCRs, delta LCRs
ou CRLs, CRLs delta, ou LARs).
A função do bit encipherOnly fica indefinida na ausência do bit keyAgreement.
Quando o bit encipherOnly é ativado e o bit keyAgreement também é ativado, nesse
caso, a chave pública do sujeito só pode ser utilizado para cifragem de dados durante
a execução de acordo de chave.
Cooper, et al.
Standards Track
Tradução para Estudo
28
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
A função do bit decipherOnly fica indefinida na ausência do bit keyAgreement.
Quando o bit decipherOnly é ativado e o bit keyAgreement também é ativado, a
chave pública do sujeito só pode ser utilizado para decifrar dados durante a execução
de acordo de chave.
es
Se a extensão keyUsage estiver presente, então a chave pública do sujeito NÃO DEVE ser
usada para verificação assinaturas em certificados ou LCRs a menos que o bit keyCertSign ou cRLSign correspondente esteja ativado. Se a chave pública do sujeito deve ser
utilizado somente para verificação de assinaturas em certificados e/ou LCRs, então os bits
DigitalSignature e nonRepudiation NÃO DEVERIAM ser ativados. No entanto, os bits digitalSignature e/ou nonRepudiation PODEM ser ativados além dos bits keyCertSign e/ou
cRLSign se a chave pública do sujeito é para ser utilizada na verificação de assinaturas em
certificados e/ou LCRs, bem como em outros objetos.
nd
A combinação do bit nonRepudiation na extensão keyUsage do certificado com outros bits
dessa extensão pode ter implicações na segurança, dependendo do contexto no qual o certificado seja utilizado. Outras distinções entre os bits digitalSignature e nonRepudiation
podem ser fornecidas em polı́ticas especı́ficas de certificados.
Este perfil não restringe as combinações de bits que podem ser ativados em uma instância da extensão keyUsage. No entanto, valores apropriados para as extensões KeyUsage,
para determinados algoritmos, são especificados em [RFC3279], [RFC4055] e [RFC4491].
Quando a extensão keyUsage aparece no certificado, pelo menos um dos bits DEVE ser
definido como 1 (ativado).
Certificate Policies
na
4.2.1.4
A extensão polı́ticas de certificado contém uma sequência de um ou mais termos de informação da polı́tica, cada um desses consistindo de um identificador de objeto (OID) e
qualificadores opcionais. Os qualificadores opcionais, que PODEM estar presentes, não são
previstos para alterar a definição da polı́tica. Um OID de polı́tica de certificado, NÃO
DEVE aparecer mais que uma vez como extensão polı́ticas de certificado.
Er
Em um certificado de entidade final, esses termos de informação sobre polı́tica indicam a
polı́tica sob a qual o certificado foi emitido e os fins para os quais o certificado pode ser
usado. Em um certificado de AC, esses termos de informação sobre polı́tica limitam o
conjunto de polı́ticas utilizadas para obtenção dos caminhos de certificação que incluem o
certificado. Quando uma AC não deseja limitar o conjunto de polı́ticas para caminhos de
certificação que incluem o seu certificado, PODE atribuir uma polı́tica especial, anyPolicy,
com um valor de 2 5 29 32 0.
Para aplicações com requisitos de polı́ticas especı́ficas é esperado que implementem uma
lista daquelas polı́ticas que serão aceitas e possam comparar OIDs contidos nos certificados
com aqueles constantes na lista. Quando essa extensão for crı́tica, o software de validação
de caminho DEVE ser capaz de interpretar essa extensão (incluindo o qualificador opcional), ou DEVE rejeitar o certificado.
Para promover a interoperabilidade, este perfil RECOMENDA que os termos de informação sobre polı́tica consistam de apenas um OID. Quando um único OID é insuficiente, este
perfil recomenda que o uso de qualificadores seja limitado àqueles identificados nesta seção.
Cooper, et al.
Standards Track
Tradução para Estudo
29
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
Quando qualificadores são utilizados com a polı́tica especial anyPolicy, eles DEVEM ser
limitados aos qualificadores identificados nesta seção. Apenas os qualificadores retornados
como resultado da validação do caminho são considerados.
Esta especificação define dois tipos de qualificadores de polı́tica para serem por criadores de
polı́tica de certificados e emissores de certificado. Os tipos de qualificação são CPS Pointers
e User Notice.
30
es
O qualificador CPS Pointers contém um ponteiro para uma Declaração de Práticas de Certificação (DPC), publicado pela AC. O ponteiro está na forma de uma URI. Os requisitos
de processamento para esse qualificador é tratado localmente. Nenhuma ação é definida
por esta especificação, independentemente da criticidade atribuı́da a extensão.
nd
O qualificador do tipo User Notice é indicado para a exposição a uma terceira parte confiável quando um certificado é utilizado. Apenas User Notice, retornado como um resultado
da validação de caminho, é destinado a exibição para o usuário. Se esse aviso estiver repetido, apenas uma cópia precisa ser exibida. Para evitar essa duplicação, esse qualificador
apenas DEVERIA estar em presente em certificados de entidade final e certificados de CA
emitidos para outras organizações.
O qualificador User Notice possui dois campos opcionais: o campo noticeRef e o campo
explicitText. As ACs em conformidade com este perfil NÃO DEVERIAM utilizar a opção
noticeRef.
Er
na
O campo noticeRef, quando utilizado, nomeia uma organização e identifica, por número, uma declaração textual especı́fica preparada pela organização. Por exemplo,
ele pode identificar a organização “CertsRUs” e anunciar o número 1. Em uma implementação tı́pica, o software aplicativo terá um arquivo de aviso contendo o conjunto
atual de avisos para CertsRUs, o aplicativo irá extrair o texto de aviso a partir do
arquivo e exibi-lo. As mensagens podem ocorrer em várias lı́nguas, permitindo ao
software selecionar uma linguagem particular para de mensagem para o seu próprio
ambiente.
O campo explicitText inclui uma declaração textual diretamente no certificado. O
campo explicitText é uma string com um tamanho máximo de 200 caracteres. As ACs
em conformidade DEVERIAM usar codificação UTF8String para explicitText, mas
PODEM usar IA5String. As ACs em conformidade NÃO DEVEM codificar explicitText como VisibleString ou BMPString. A seqüência de explicitText NÃO DEVERIA
incluir qualquer caractere de controle (por exemplo, U+0000 até U+001F e U+007F
até U+009F). Quando a codificação UTF8String for utilizada, todas as sequências
de caracteres DEVERIAM ser normalizados de acordo com Unicode Normatization
Form C (NFC) [NFC].
Se tanto a opção noticeRef quanto explicitText forem incluı́das no qualificador um e se o
software aplicativo for capaz de localizar o texto de aviso indicado pela opção noticeRef,
então o texto DEVERIA ser apresentado; caso contrário, a sequência contida em explicitText DEVERIA ser exibida.
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
Nota: Enquanto o explicitText tem um tamanho máximo de 200 caracteres, algumas ACs
que não se encontram em conformidade excedem este limite. Portanto, os usuários certificado DEVERIAM ser capazes de processar campos explicitText contendo mais de 200
caracteres.
id-ce-certificatePolicies
anyPolicy
OBJECT IDENTIFIER ::= { id-ce 32 }
OBJECT IDENTIFIER ::= { id-ce-certificatePolicies 0 }
31
::= SEQUENCE SIZE (1..MAX) OF PolicyInformation
PolicyInformation
policyIdentifier
policyQualifiers
PolicyQualifierInfo
::= SEQUENCE {
CertPolicyId,
SEQUENCE SIZE (1..MAX) OF
OPTIONAL }
CertPolicyId
::= OBJECT IDENTIFIER
PolicyQualifierInfo
policyQualifierId
::= SEQUENCE {
PolicyQualifierId,
qualifier ANY DEFINED BY policyQualifierId }
-- policyQualifierIds for Internet
-- policy qualifiers
PolicyQualifierId
CPSuri
nd
::= OBJECT IDENTIFIER ( id-qt-cps | id-qt-unotice )
::= CHOICE {
CPSuri,
UserNotice }
Er
Qualifier
cPSuri
userNotice
OBJECT IDENTIFIER ::= { id-pkix 2 }
OBJECT IDENTIFIER ::= { id-qt 1 }
OBJECT IDENTIFIER ::= { id-qt 2 }
na
id-qt
id-qt-cps
id-qt-unotice
es
certificatePolicies
UserNotice
noticeRef
explicitText
::= IA5String
::= SEQUENCE {
NoticeReference OPTIONAL,
DisplayText OPTIONAL }
NoticeReference
organization
noticeNumbers
::= SEQUENCE {
DisplayText,
SEQUENCE OF INTEGER }
DisplayText
ia5String
visibleString
bmpString
utf8String
::= CHOICE {
IA5String (SIZE (1..200)),
VisibleString (SIZE (1..200)),
BMPString (SIZE (1..200)),
UTF8String (SIZE (1..200)) }
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
4.2.1.5
RFC 5280
Maio de 2008
Policy Mappings
Esta extensão é usada em certificados de AC. Ele lista de um ou mais pares de OIDs; cada
par inclui um campo issuerDomainPolicy e um campo subjectDomainPolicy. O par indica
a AC emissora, considerando o seu equivalente issuerDomainPolicy para o sujeito da AC
contida em subjectDomainPolicy.
Usuários da AC emissora podem aceitar uma issuerDomainPolicy para determinadas aplicações. O mapeamento polı́tica define a lista de polı́ticas associadas ao sujeito da AC que
podem ser aceitas como comparável ao issuerDomainPolicy.
es
Cada issuerDomainPolicy nomeado na extensão policy mappings também DEVERIA estar
indicada na extensão de polı́ticas de certificado no mesmo certificado. Polı́ticas NÃO DEVEM ser mapeados para ou a partir do valor especial anyPolicy (Seção 4.2.1.4).
na
nd
Em geral, as polı́ticas de certificados que aparecem no campo issuerDomainPolicy da extensão mapeamentos policy mappings não são consideradas aceitáveis para inclusão em
certificados posteriores do caminho de certificação. Em algumas circunstâncias, uma AC
pode querer mapear uma polı́tica (p1) para uma outra (p2), mas ainda quer que o issuerDomainPolicy (p1), seja considerado aceitável para a inclusão em certificados subsequentes.
Isto pode ocorrer, por exemplo, se a AC está em processo de transição a partir do uso
da polı́tica p1 para a utilização de uma polı́tica p2 e tem certificados válidos que foram
emitidos em cada uma das polı́ticas. A AC pode indicar isso, incluindo duas extensões
policy mappings nos certificados de AC que ela emitir. Cada policy mapping teria um issuerDomainPolicy de p1, um policy mapping teria um subjectDomainPolicy de p1; o outro
teria o subjectDomainPolicy de p2.
Esta extensão pode ser suportado por CAs e/ou aplicações. As ACs em conformidade
DEVERIAM marcar esta extensão como crı́tica.
id-ce-policyMappings
4.2.1.6
::= SEQUENCE SIZE (1..MAX) OF SEQUENCE {
CertPolicyId,
CertPolicyId }
Er
PolicyMappings
issuerDomainPolicy
subjectDomainPolicy
OBJECT IDENTIFIER ::= { id-ce 33 }
Subject Alternative Name
A extensão Subject Alternative Name permite que outras identidades sejam relacionadas ao
sujeito do certificado. Estas identidades podem ser incluı́das em adição ou no lugar da identidade no campo de sujeito do certificado. Opções previamente definidas incluem endereço
de correio eletrônico da Internet, um nome de DNS, um endereço IP, e um Uniform Resource Identifier (URI). Existem outras opções, incluindo definições completamente locais.
Formas múltiplas de nome, e várias instâncias de cada forma de nome, podem ser incluı́das.
Sempre que essas identidades tiverem que ser relacionadas em um, a extensão subject alternative name (ou issuer alternative name) DEVEM ser usadas. No entanto, um nome de
DNS também PODE ser representado no campo subject, usando o atributo DomainComponent como descrito na Seção 4.1.2.4. Observe que onde tais nomes forem representados nas
implementações do campo subject não é requerido a conversão dos mesmos em nomes DNS.
Cooper, et al.
Standards Track
Tradução para Estudo
32
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
Pelo motivo do subject alternative name ser considerado definitivamente ligada à chave
pública, todas as sua partes devem ser verificadas pela AC.
es
Além disso, se a única identidade de sujeito incluı́da no certificado for uma forma de nome
alternativo (por exemplo, um endereço de correio eletrônico), então, o nome distinto do
sujeito deve permanecer vazio (uma sequência vazia), e a extensão subjectAltName devem
estar presentes. Se o campo subject tiver uma seqüência vazia, então a AC que emissora
DEVE incluir uma extensão subjectAltName que é marcada como crı́tica. Quando incluı́da
a extensão subjectAltName em um certificado que tem um campo subject distinguished
name não-vazio, as ACs em conformidade DEVERIAM marcar a extensão subjectAltName
como não-crı́tica.
nd
Quando a extensão subjectAltName tiver um endereço de correio da Internet, o endereço
DEVE ser armazenado em rfc822Name. O formato de um nome rfc822Name é uma “caixa
de correio”, como definido na Seção 4.1.2 da [RFC2821]. Uma caixa de correio tem o
formato “Parte-Local@Domı́nio”. Note que uma caixa de correio não possui nenhuma expressão (tal como um nome comum), antes dele, não contém observações (texto limitado por
parênteses) após ele, e não é limitado por “<” e “>”. As regras para codificação de endereços
de e-mail que incluem nomes de domı́nio internacionalizados são especificados na secção 7.5.
na
Quando a extensão subjectAltName tiver um IPAddress, o endereço deve ser armazenado
em string de octeto de “ordem de byte da rede”, conforme especificado no [RFC791]. O bit
menos significativo (LSB) de cada octeto é o bit menos significativo do byte correspondente
do endereço de rede. Para o IP versão 4, conforme especificado em [RFC791], o string de
octeto deve conter exatamente quatro octetos. Para o IP versão 6, conforme especificado
em [RFC2460], o string de octeto deve conter exatamente 16 octetos.
Er
Quando a extensão subjectAltName tiver um rótulo de sistema de nome de domı́nio, o
nome de domı́nio DEVE ser armazenado no dNSName (um IA5String). O nome DEVE
estar na “prefered name syntax”, conforme especificado pela Seção de 3.5 da [RFC1034] e
como modificado pela Secção de 2.1 da [RFC1123]. Observe que, embora letras maiúsculas e minúsculas sejam permitidas para nomes de domı́nio, nenhum significado existe em
relação ao tamanho de caractere. Além disso, apesar do string “” ser um nome de domı́nio
legal, extensões subjectAltName com dNSName de “” NÃO DEVE ser usado. Finalmente,
o uso da representação DNS para endereços de correio da Internet (em vez de [email protected] usar subscriber.example.com) NÃO DEVE ser usado; essas identidades
são codificados como rfc822Name. As regras para codificação de nomes de domı́nio internacionalizados são especificados na secção 7.2.
Quando a extensão subjectAltName tiver uma URI, o nome deve ser armazenado no uniformResourceIdentifier (um IA5String). O nome não deve ser um nome URI relativo, e
ele deve seguir a sintaxe de URI e as regras de codificação especificado em [RFC3986]. O
nome deve incluir tanto o esquema (por exemplo, “http” ou “ftp”) e um esquema da parte
especı́fica. URIs que incluem uma autoridade ([RFC3986], Seção 3.2) DEVE conter um
nome de domı́nio totalmente qualificado ou endereço IP do host. Regras para codificação
de identificadores de recurso internacionalizados (IRIS) são especificadas na secção 7.4.
Conforme especificado em [RFC3986], o nome do esquema não diferencia maiúsculas de
minúsculas (por exemplo, “http” é equivalente a “HTTP”). A parte do host, se estiver presente, também não é sensı́vel a maiúsculas e minúsculas, mas outros componentes da parte
Cooper, et al.
Standards Track
Tradução para Estudo
33
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
especı́fica do esquema podem ser sensı́veis ao tamanho do caractere. Regras para comparar
URIs são especificados na secção 7.4.
Quando a extensão subjectAltName tiver um DN no directoryName, as regras de codificação são as mesmas especificadas para o campo emissor na Secção 4.1.2.4. O DN deve ser
único para cada entidade de sujeita certificada por uma AC, tal como definido pelo campo
issuer. A AC pode emitir mais de um certificado com o mesmo DN para a mesma entidade
sujeito.
es
O subjectAltName PODE conter tipos de nome adicionais através da utilização do campo
Othername. O formato e a semântica do nome são indicados através do identificador do
objeto no campo type-id. O próprio nome é transmitido como campo value do Othername.
Por exemplo,formatos de nomes Kerberos [RFC4120] podem ser codificados no Othername,
usando o OID para Kerberos 5 principal name e uma sequência de realM e PrincipalName.
nd
Nomes alternativos de sujeito PODEM ser limitados da mesma forma que nomes distintos
de sujeitos usando a extensão name constraints como descrito na Seção 4.2.1.10.
na
Se a extensão subjectAltName estiver presente, a sequência DEVE ter pelo menos uma
entrada. Ao contrário do campo subject, as AC em conformidade NÃO DEVEM emitir
certificados com subjectAltNames contendo campos GeneralName vazios. Por exemplo, um
rfc822Name é representado como um IA5String. Enquanto um string vazio é um IA5String
válido, tal rfc822Name não é permitido por este perfil. O comportamento dos clientes que
encontrarem esse tipo de certificado, ao processar um caminho de certificação, não é definido neste perfil.
Finalmente, a semântica de nomes alternativos de sujeito que incluem caracteres curinga
(por exemplo, como um espaço reservado para um conjunto de nomes) não são abordados
por esta especificação. Aplicações com requisitos especı́ficos podem usar tais nomes, mas
eles devem definir a semântica.
id-ce-subjectAltName
::= GeneralNames
Er
SubjectAltName
OBJECT IDENTIFIER ::= { id-ce 17 }
GeneralNames
::= SEQUENCE SIZE (1..MAX) OF GeneralName
GeneralName
::=
otherName
rfc822Name
dNSName
x400Address
directoryName
ediPartyName
uniformResourceIdentifier
iPAddress
registeredID
CHOICE {
[0] OtherName,
[1] IA5String,
[2] IA5String,
[3] ORAddress,
[4] Name,
[5] EDIPartyName,
[6] IA5String,
[7] OCTET STRING,
[8] OBJECT IDENTIFIER }
OtherName
type-id
::= SEQUENCE {
OBJECT IDENTIFIER,
Cooper, et al.
Standards Track
Tradução para Estudo
34
PKIX Certificate and CRL Profile
value
Maio de 2008
[0] EXPLICIT ANY DEFINED BY type-id }
EDIPartyName
nameAssigner
partyName
4.2.1.7
RFC 5280
::= SEQUENCE {
[0] DirectoryString OPTIONAL,
[1] DirectoryString }
Issuer Alternative Name
es
Da mesma forma da seção 4.2.1.6, esta extensão é usada para associar identidades que seguem forma Internet, ao emissor do certificado. A extensão Issuer Alternative Name DEVE
ser codificada com definido em 4.2.1.6. Estas extensões não são processadas como parte
do algoritmo de validação de caminho de certificação conforme seção 6. (ou seja, os nomes
alternativos de emissor, não são usados em name chaining e nem o seu uso é incentivado
em name constraints.)
id-ce-issuerAltName
IssuerAltName
4.2.1.8
nd
Quando presente, as ACs em conformidade DEVERIAM marcar esta extensão como não
crı́tica.
OBJECT IDENTIFIER ::= { id-ce 18 }
::= GeneralNames
Subject Directory Attributes
na
A extensão subject directory attributes é utilizada para transmitir atributos de identificação
(por exemplo, a nacionalidade) do sujeito. A extensão é definida como uma sequência de
um ou mais atributos. As ACs em conformidade DEVEM marcar esta extensão como não
crı́tica.
id-ce-subjectDirectoryAttributes OBJECT IDENTIFIER ::= { id-ce 9 }
SubjectDirectoryAttributes
Basic Constraints
Er
4.2.1.9
::= SEQUENCE SIZE (1..MAX) OF Attribute
A extensão basic constraints identifica se o sujeito de um certificado é uma AC e a profundidade máxima dos caminhos de certicação válidos que incluem o certificado.
O campo booleano cA indica a chave pública do certificado pode ser utilizada para verificar
assinaturas de certificados. Se o booleano cA não for ativado, então o bit keyCertSign na
extensão key usage NÃO DEVE ser ativado. Se a extensão basic constraints não estiver
presente em um certificado X.509v3, ou se a extensão estiver presente, mas o campo booleano cA não tiver nenhum valor atribuı́do, então o certificado de chave pública NÃO DEVE
ser usado para verificação de assinatura de certificado.
O campo pathLenConstraints tem significância apenas quando o campo booleano cA for
ativado e a extensão key usage, quando presente, tiver o bit keyCertSign ativado (seção
4.2.1.3). Neste caso, ela fornece o número máximo de certificados intermediários não autoassinados que podem seguir o certificado em um caminho de certificação válido. (Nota: o
último certificado em um caminho de certificação não é um certificado intermediário, e nem
está incluı́do neste limite. Normalmente, o último certificado é um certificado de entidade
Cooper, et al.
Standards Track
Tradução para Estudo
35
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
final, mas ele também pode ser um certificado de AC.) Um campo pathLenConstraints com
valor zero indica que nenhum certificado intermediário de AC não auto assinado pode seguir
em um caminho de certificação válido. Quando ele aparecer, o campo pathLenConstraints
DEVE ser maior ou igual a zero. Quando pathLenConstraings não aparecer, nenhum limite
é imposto.
es
As ACs em conformidade DEVEM incluir esta extensão em todos os certificados de AC
que contenham chaves públicas usadas para validar assinaturas digitais de certificados e
DEVEM marcar esta extensão como crı́tica neste tipo de certificado. Esta extensão PODE
aparecer como crı́tica ou não crı́tica em certificados de AC que contenham chaves públicas usadas exclusivamente para propósitos diferentes daquele da validação de assinatura
de certificados. Tais certificados incluem aqueles cujas chaves públicas são utilizadas exclusivamente para validação de assinaturas digitais de LCRs e aqueles que contêm chaves
públicas de gerenciamento de chaves usados em protocolos de negociação de chaves. Esta
extensão pode aparecer como crı́tica ou não crı́tica em certificados de entidades finais.
id-ce-basicConstraints
BasicConstraints
cA
pathLenConstraint
Name Constraints
OBJECT IDENTIFIER ::= { id-ce 19 }
::= SEQUENCE {
BOOLEAN DEFAULT FALSE,
INTEGER (0..MAX) OPTIONAL }
na
4.2.1.10
nd
As ACs NÃO DEVEM incluir o campo pathLenConstraints a menos que o campo booleano
cA seja ativado e que o bit keyCertSign da extensão key usage também seja ativado.
Er
A extensão name constraints, que DEVE ser usada apenas em certificado de AC, indica o
espaço de nome dentro do qual todos os nomes de sujeito em certificados subsequentes do
caminho de certificação DEVEM estar contidos. As restrições se aplicam ao nome distinto
de sujeito e nomes alternativos de sujeito. As restrições são aplicáveis apenas quando a
forma de nome especificado estiver presente. Se nenhum nome do tipo estiver no certificado,
o certificado é aceitável.
Name constraints não são aplicados em certificados auto-assinados (a menos que o certificado seja o certificado final no caminho). (Isso poderia impedir que AC que usam name
constraints em certificados auto-assinados, implementem substituição de chave.)
As restrições são definidas em termos de subárvores de nomes permitidas ou excluı́das.
Qualquer nome correspondente em um campo excludedSubtrees é inválido independentemente da informação contida na permittedSubtrees. As ACs em conformidade DEVEM
marcar esta extensão como crı́tica e NÃO DEVERIAM impor restrições de nomes as formas x400address, ediPartyName ou formas de nome registeredID. As ACs em conformidade
NÃO DEVEM emitir certificados onde name constraints é uma sequência vazia. Ou seja,
tanto o permittedSubtree quanto o excludedSubtree DEVEM estar presentes.
As aplicações em conformidade com este perfil DEVEM ser capazes de processar restrições
de nome que são impostas em formas de nome directoryName e DEVERIAM ser capazes
de processar restrições de nome que são impostas nas formas rfc822Name, uniformResourceIdentifier, dNSName, e iPAddress. Se a extensão name constraints que é marcada como
Cooper, et al.
Standards Track
Tradução para Estudo
36
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
crı́tica impor restrições a uma forma especı́fica, e uma instância daquelas formas de nome
aparecerem em um campo subject ou extensão subjectAltName de um certificado subsequente, então a aplicação DEVE processar a restrição ou rejeitar o certificado.
Dentro deste perfil, os campos mı́nimo e máximo não são utilizados nas formas any name,
assim, o mı́nimo DEVE ser zero, e o máximo DEVE estar ausente. Entretanto, se uma
aplicação encontra uma extensão name constraints crı́tica que especifica outros valores para
mı́nimo ou máximo para uma forma de nome que aparece em um certificado subsequente,
a aplicação DEVE processar estes campos ou rejeitar o certificado.
nd
es
Para URIs, a restrição é aplicada a parte host do nome. A restrição DEVE ser especificada
como um nome de domı́nio totalmente qualificado e PODE especificar um host ou um domı́nio. Seriam exemplos “host.example.com” e “.example.com”. Quando a restrição começa
com um ponto, ela PODE ser expandida com um ou mais rótulos. Ou seja, a restrição
“.example.com” é satisfeita por tanto host.example.com quanto por my.host.example.com.
Entretanto, a restrição “.example.com” não é satisfeita por “example.com”. Quando a restrição não começar com um ponto, ela especifica um host. Se uma restrição é aplicada a
forma de nome uniformResourceIdentifier e um certificado subsequente inclui uma extensão subjectAltName com um uniformResourceIdentifier que não inclui uma componente
autoridade com o nome de host especificado como nome de domı́nio totalmente qualificado
(por exemplo, se uma URI nao inclui um componente autoridade ou inclui um componente
autoridade no qual o nome do host é especificado como um endereço IP), então a aplicação
DEVE rejeitar o certificado.
Er
na
Uma restrição de nome para endereço de correio eletrônico Internet PODE especificar uma
caixa de correio particular, todos os endereços de um host em particular, ou todas as caixas
postais de um domı́nio. Para indicar uma caixa de correio particular, a restrição é o endereço completo de correio eletrônico. Por exemplo, “[email protected]” indica a caixa postal
root no host “example.com”, a restrição “example.com” é satisfeita por qualquer endereço
de correio eletrônico no host “example.com”. Para especificar qualquer endereço dentro
de um domı́nio, a restrição é especificada com ponto na frente (como ocorre com URIs).
Por exemplo, “.example.com” indica todos os endereços de correio eletrônico no domı́nio
“example.com”, mas não todos os endereços de correio eletrônico no host “example.com”.
As restrições a nomes DNS são expressas como host.example.com. Qualquer nome DNS
que possa ser construı́do simplesmente adicionando zero ou mais rótulos ao lado mais a
esquerda do nome satisfará a restrição de nome. Por exemplo, www.host.example.com satisfaria a restrição, mas host1.example.com não satisfaria.
Existem implementações no legado nas quais um endereço de correio eletrônico foi incorporado no nome distinto de sujeito em um atributo do tipo emailAddress (seção 4.1.2.6).
Quando são impostas restrições na forma de nome rfc822Name, mas o certificado não
inclui um nome alternativo de sujeito, a limitação rfc822Name DEVE ser aplicada ao atributo do tipo emailAddress no campo subject distinguished name. A sintaxe ASN.1 para
emailAddress e o seu OID correspondente é fornecida no Apêndice A.
Restrições da forma directoryName DEVEM ser aplicadas ao campo subject do certificado (quando o certificado incluir um campo subject não vazio) e a qualquer nome do tipo
directoryName da extensão subjectAltName. Restrições da forma x400Address DEVEM
ser aplicadas a qualquer nome do tipo x400Address na extensão subjectAltName.
Cooper, et al.
Standards Track
Tradução para Estudo
37
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
Quando aplicar restrições da forma directoryName, a aplicação DEVE comparar os atributos DN. No mı́nimo, as aplicações DEVEM executar as regras de comparação para DN
especificadas na seção 7.1. As ACs que emitem certificados com uma restrição da forma
directoryName NÃO DEVERIAM confiar em implementações do algoritmo de comparação
de nome ISO DN completo. Isso implica que as restrições de nome DEVEM ser definidas de maneira idêntica para a codificação usada no campo subject ou para a extensão
subjectAltName.
id-ce-nameConstraints
nd
es
A sintaxe de iPAddress DEVE ser aquela descrita na seção 4.2.1.6 com as adições seguintes especificamente para restrições de nomes. Para endereços IPv4, o campo endereço de
GeneralName DEVE conter oito (8) octetos, condificados no estilo da RFC 4632 (CIDR)
para representar o escopo de endereçamento [RFC4632]. Para endereços IPv6, o campo
iPAddress DEVE conter 32 octetos codificados de maneira similar. Por exemplo, uma
restrição de nome para subrede “classe C” 192.0.2.0 é representado é representada pelos
octetos C0 00 02 00 FF FF FF 00, representando a notação CIDR 192.0.2.0/24 (máscara
255.255.255.0).
NameConstraints
permittedSubtrees
excludedSubtrees
::= SEQUENCE {
[0] GeneralSubtrees OPTIONAL,
[1] GeneralSubtrees OPTIONAL }
GeneralSubtrees
::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree
Regras adicionais para codificação e processamento de restrições de nome são especificadas
na seção 7.
A sintaxe e a semântica para restrições de nome para otherName, ediPartyName, e registeredID não são definidas nesta especificação, entretanto, a sintaxe e a semântica para
restrições de nome para formas other name podem ser especificadas em outros documentos.
na
Er
GeneralSubtree
base
minimum
maximum
BaseDistance
4.2.1.11
OBJECT IDENTIFIER ::= { id-ce 30 }
::= SEQUENCE {
GeneralName,
[0] BaseDistance DEFAULT 0,
[1] BaseDistance OPTIONAL }
::= INTEGER (0..MAX)
Policy Constraints
A extensão policy constraints pode ser usada em certificados emitidos para ACs. A extensão restringe validação de caminho de certificação de duas formas. Pode ser utilizada
para impedir o mapeamento de polı́tica ou requerer que todo certificado de um caminho
contenha um identificador de polı́tica aceitável.
Se o campo inhibitPolicyMapping estiver presente, o valor indica o número de certificados
adicionais que podem aparecer no caminho antes do mapeamento de polı́tica ser proibido.
Por exemplo, o valor um indica que policy mapping pode ser processado em certificados
Cooper, et al.
Standards Track
Tradução para Estudo
38
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
emitidos pelo sujeito do certificado, mas não em certificados adicionais do caminho.
Se o campo requireExplicitPolicy estiver presente, o valor de requireExplicitPolicy indica
o número de certificados adicionais que podem aparecer no camiinho ante de uma explicit
policy ser requerido para o caminho inteiro. Quando uma polı́tica explı́cita for requerida,
é necessário que todos os certificados do caminho contenham um identificador de polı́tica
aceitável na extensão certificate policy. Um indentificador de polı́tica aceitável é o identificador de uma polı́tica requerida pelo usuário do caminha de certificação ou o identificador
de uma polı́tica que for declarada como equivalente através da extensão policy mapping.
es
Aplicações em conformidade DEVEM ser capazes de processar o campo requireExplicitPolicy e DEVERIAM ser capazes de processar o campo inhibitPolicyMapping. Aplicações
que suportarem o campo inhibitPolicyMapping DEVEM também implementar suporte a
extensão policyMappings. Se a estensão policyConstraints estiver marcada como crı́tica
e o campo inhibitPolicyMapping estiver presente, as aplicações que não implementarem
suporte ao campo inhibitPolicyMapping DEVEM rejeitar o certificado.
nd
As ACs em conformidade NÃO DEVEM emitir certificados onde policy constraints é uma
sequência vazia. Ou seja, tanto o campo inhibitPolicyMapping ou o campo requireExplicitPolicy DEVE estar presente. O comportamento do cliente que encontra um campo policy
constraints vazio não é tratado neste perfil.
As ACs em conformidade DEVEM marcar esta extensão como crı́tica.
OBJECT IDENTIFIER ::= { id-ce 36 }
na
id-ce-policyConstraints
PolicyConstraints
requireExplicitPolicy
inhibitPolicyMapping
::= SEQUENCE {
[0] SkipCerts OPTIONAL,
[1] SkipCerts OPTIONAL }
SkipCerts
::= INTEGER (0..MAX)
Extended Key Usage
Er
4.2.1.12
Esta extensão indica um ou mais propósitos para os quais o certificado de chave pública
pode ser usado, em adição a ou em substituição ao indicado no campo basic purpose na
extensão key usage.
id-ce-extKeyUsage
OBJECT IDENTIFIER ::= { id-ce 37 }
ExtKeyUsageSyntax
::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId
KeyPurposeId
::= OBJECT IDENTIFIER
O propósito da chave pode ser definido por qualquer organização com esta demanda. Identificadores de objeto utilizados para identificar os propósitos da chave DEVEM ser atribuı́dos
em conformidade com o IANA ou a recomendação ITU-T X.660 [X.660].
Esta extensão PODE, dependendo da opção do emissor do certificado, ser marcada como
crı́tica ou não-crı́tica.
Cooper, et al.
Standards Track
Tradução para Estudo
39
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
Se a extensão estiver presente, então o certificado DEVE apenas ser utilizado para um dos
propósitos indicados. Se múltiplos propósitos forem indicados, a aplicação não necessita
reconhecer todos eles, desde que o propósito pretendido esteja presente. Aplicações que
usam certificados PODEM requerer que a extensão extended key usage estejam presente
e que seja indicado um propósito particular para que o certificado seja aceito pela aplicação.
es
Se uma AC inclui a extensão extended key usage para satisfazer tais aplicações, mas não
querem restringir o uso da chave, a AC pode incluir o valor especial anyExtendedKeyUsage
ao campo KeyPurposeID em adição ao propósito especı́fico requerido pelas aplicações. ACs
em conformidade NÃO DEVERIAM marcar esta extensão como crı́tica anyExtendedKeyUsage no campo KeyPurposeId estiver presente. Aplicações que necessitarem a presença de
um propósito particular PODEM rejeitar certificados que tiverem incluı́do o OID anyExtendedKeyUsage, mas não o OID especı́fico aguardado pela aplicação.
nd
Se um certificado tiver tanto a extensão key usage e uma extensão extended key usage, então ambas as extensões DEVEM ser processadas independentemente e o certificado DEVE
ser utilizado apenas para o propósito consistente com ambas as extensões. Se não existir
nenhum propósito consistente em ambas as extensões, então o certificado NÃO DEVE ser
usado para nenhum dos propósitos.
São definidos propósitos de uso para chave:
id-kp
OBJECT IDENTIFIER ::= { id-pkix 3 }
na
id-kp-serverAuth
OBJECT IDENTIFIER ::= { id-kp 1 }
-- TLS WWW server authentication
-- Key usage bits that may be consistent: digitalSignature,
-- keyEncipherment or keyAgreement
Er
id-kp-clientAuth
OBJECT IDENTIFIER ::= { id-kp 2 }
-- TLS WWW client authentication
-- Key usage bits that may be consistent: digitalSignature
-- and/or keyAgreement
id-kp-codeSigning
OBJECT IDENTIFIER ::= { id-kp 3 }
-- Signing of downloadable executable code
-- Key usage bits that may be consistent: digitalSignature
id-kp-emailProtection
OBJECT IDENTIFIER ::= { id-kp 4 }
-- Email protection
-- Key usage bits that may be consistent: digitalSignature,
-- nonRepudiation, and/or (keyEncipherment or keyAgreement)
id-kp-timeStamping
OBJECT IDENTIFIER ::= { id-kp 8 }
-- Binding the hash of an object to a time
-- Key usage bits that may be consistent: digitalSignature
-- and/or nonRepudiation
id-kp-OCSPSigning
-- Signing OCSP responses
Cooper, et al.
OBJECT IDENTIFIER ::= { id-kp 9 }
Standards Track
Tradução para Estudo
40
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
-- Key usage bits that may be consistent: digitalSignature
-- and/or nonRepudiation
4.2.1.13
CRL Distribution Points
A extensão CRL Distribution Points identifica como a informação da LCR é obtida. A
extensão DEVERIA ser marcada como não-crı́tica, mas este perfil RECOMENDA suporte
a esta extensão, tanto nas ACS quanto nas aplicações. Uma discussão adicional sobre o
gerenciamento de LCR está incluı́da na seção 5.
nd
es
A extensão cRLDistributionPoints é uma sequência de DistributionPont. Um DistributionPoint é formado por três campos, cada um deles opcional: distributionPoint, reasons,
e cRLIssuer. Embora cada um desses campos seja opcional, um DistributionPoint NÃO
DEVE consistir de apenas do campo reasons, o distributionPoint ou cRLIssuer DEVE estar
presente. Se o emissor do certificado não for o emissor da LCR, então o campo cRLIssuer
DEVE estar presente, e conter o nome do emissor da LCR. Se o emissor do certificado também for o emissor da LCR, as ACs em conformidade DEVEM omitir o campo cRLIssuer e
DEVEM incluir o campo distributioinPoint.
Quando o distributionPoint estiver presente, ele pode conter tanto uma SEQUENCE de
general names como um valor único, nameRelativeToCRLIssuer. Se o DistributionPointsName tiver múltiplos valores, cada nome descreve um mecanismo distinto para obtenção
da mesma LCR. Por exemplo, a mesma LCR poderia estar disponı́vel para recuperação
tanto através do LDAP quanto do HTTP.
na
Se o campo distributionPoints tiver um directoryName, a entrada para aquele directoryName contem a LCR atual para as razões relacionadas e a LCR é emitida pelo cRLIssuer associado. A LCR pode estar armazenada tanto no atributo certificateRevocationList
quanto no atributo authotityRevocationList. A LCR a ser obtida pela aplicação a partir
de qualquer servidor de diretório é configurada localmente. O protocolo utilizado pela aplicação para acessar o diretório (por exemplo, DAP ou LDAP) é uma questão local.
Er
Se o DistributionPointName tiver um general name do tipo URI, a seguinte semântica
DEVE ser considerada: A URI é um apontador para a LCR atual para as razões relacionadas e será emitida pelo cRLIssuer associado. Quando o forem utilizados os esquemas HTTP ou FTP URI, a URI deve apontar para uma única LCR codificada em DER,
conforme especificado em [RFC2585]. Implementações de servidor HTTP acessado via
URI DEVERIAM especificar o tipo de meio application/pkix-crl no campo de cabeçalho
content-type na resposta. Quando o esquema LDAP URI [RFC4516] for utilizado, a URI
DEVE incluir um campo <dn> contendo o nome distinto da entrada da LCR, DEVE
incluir um único <attrdesc> que contém uma descrição de atributo apropriado para o
atributo que mantém a LCR [RFC4523], e DEVERIA incluir um <host> (por exemplo,
<ldap://ldap.example.com/cn=example%20CA,dc=example, dc=com?certificateRevocationList;binary>). Omitir o <host> (por exemplo, <ldap://cn=CA,dc=examplo,dc=?authorityRevocationList,binary>) tem o efeito de confiar em qualquer conhecimento, que o
cliente detenha a priori, para contactar o servidor apropriado. Quando presente, DistributionPointName DEVERIA incluir no mı́nimo uma URI LDAP ou HTTP.
Se o DistributionPointName tiver o valor único nameRelativeToCRLIssuer, o valor fornece
um fragmento do distinguished name. O fragmento é acrescentado ao distinguished name
Cooper, et al.
Standards Track
Tradução para Estudo
41
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
X.500, do emissor da LCR, para obter o nome do ponto de distribuição. Se o campo cRLIssuer no DistributionPoint estiver presente, então o fragmento do nome é adicionado ao
disntinguished name que ele contém; de outra forma, o fragmento de nome é adicionado
ao distinguished name do emissor do certificado. ACs em conformidade NÃO DEVERIAM
usar nameRalativeToCRLIssuer para indicação de nomes de ponto de distribuição. O DistributionPointName NÃO DEVE usar o nameRelativeToCRLIssuer alternativo quando o
cRLIssuer tiver mais que um distinguished name.
es
Se o DistributionPoint omitir o campo reasons, a CRL DEVE incluir informações de revogação para todas as razões. Este perfil RECOMENDA evitar a segmentação de LCRs pelos
codigos contidos em reason. Quando um AC em conformidade incluir a extensão cRLDistributionPoints em um certificado, ela DEVE incluir no mı́nimo um DistributionPoint que
aponta para uma LCR que cobre o certificado para todas as razões.
id-ce-cRLDistributionPoints
OBJECT IDENTIFIER ::= { id-ce 31 }
::= SEQUENCE SIZE (1..MAX) OF DistributionPoint
na
CRLDistributionPoints
nd
O cRLIssuer identifica a entrada que assina e emite a LCR, Se presente, a cRLIssuer DEVE
conter apenas o nome distinto (DN) do campo issuer da LCR para a qual o DistributionPoint está apontando. A codificação do nome no campo cRLissuer DEVE ser exatamente
o mesmo que a codificação no campo issuer da LCR. Se o campo sRLIssuer estiver incluı́do e o DN naquele campo não corresponder a uma entrada de diretório X.500 ou LDAP
na qual a LCR esta localizada, então as ACs em conformidade DEVEM incluir o campo
distributionPoint.
::= SEQUENCE {
[0] DistributionPointName OPTIONAL,
[1] ReasonFlags OPTIONAL,
[2] GeneralNames OPTIONAL }
DistributionPointName
fullName
nameRelativeToCRLIssuer
ReasonFlags
unused
keyCompromise
cACompromise
affiliationChanged
superseded
cessationOfOperation
certificateHold
privilegeWithdrawn
aACompromise
::= CHOICE {
[0] GeneralNames,
[1] RelativeDistinguishedName }
::= BIT STRING {
(0),
(1),
(2),
(3),
(4),
(5),
(6),
(7),
(8) }
Er
DistributionPoint
distributionPoint
reasons
cRLIssuer
4.2.1.14
Inhibit anyPolicy
A extensão inhibit anyPolicy pode ser utilizada em certificados emitidos para ACs. A extensão inhibit anyPolicy indica que o OID especial anyPolicy, com o valor 2 5 29 32 0 ,
Cooper, et al.
Standards Track
Tradução para Estudo
42
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
não é considerado uma correspondência explicita para outras polı́ticas de certificado exceto
quanto aparecerem em um certificado intermediário de AC auto-assinado. O valor indica o
número de certificados adicionais não-auto-assinados que pode aparecer no caminho antes
de anyPolicy não mais ser permitido. Por exemplo, o valor um idica que anyPolicy pode
ser processado em certificados emitidos pelo sujeito do certificado, mas não em certificados
adicionais no caminho.
As ACs em conformidade DEVEM marcar esta extensão como crı́tica.
OBJECT IDENTIFIER ::= { id-ce 54 }
es
id-ce-inhibitAnyPolicy
InhibitAnyPolicy
::= SkipCerts
SkipCerts
::= INTEGER (0..MAX)
4.2.1.15
Freshest CRL (Delta CRL Distribution Point)
nd
A extensão freshest CRL identifica como a informação de LCR delta é obtida. A extensão
DEVE ser marcada como não-crı́tica nas ACs em conformidade. A seção 5 contém uma
discussão adicional sobre o gerenciamento.
A mesma sintaxe é usada para esta extensão, e a extensão cRLDistributionPoints, é descrita
na seção 4.2.1.13. A mesma convenção é aplicada às duas extensões.
FreshestCRL
4.2.2
OBJECT IDENTIFIER ::= { id-ce 46 }
na
id-ce-freshestCRL
::= CRLDistributionPoints
Extensões Privadas Internet
Er
Esta seção define duas extensões em Infraestruturas de Chave Pública Internet. Estas extensões podem ser utilizadas para direcionar aplicações para informações on-line sobre o
emissor ou sobre o sujeito do certificado. Cada extensão contém uma sequência de métodos
de acesso e locais de acesso. O método de acesso é um identificador de objeto que indica o
tipo de informação que está disponı́vel. O local de acesso é um GeneralName que implicitamente especifica o local e o formato da informação, e o método para obtenção da informação.
Identificadores de objeto são definidos para as extensões privadas. Os identificadores de
objeto associado a extensões privadas são devinidos sob o arco is-pe dentro do arco id-pkix.
Quaisquer extensões futuras definidas para a ICP Internet também é esperando que sejam
definidas sob o arco id-pe.
id-pkix
id-pe
Cooper, et al.
OBJECT IDENTIFIER ::=
{ iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) }
OBJECT IDENTIFIER ::= { id-pkix 1 }
Standards Track
Tradução para Estudo
43
PKIX Certificate and CRL Profile
4.2.2.1
RFC 5280
Maio de 2008
Authority Information Access
A extensão authority information access (acesso a informação de autoridade) indica como
acessar informação e serviços para o emissor do certificado no qual a extensão ocorre.
Informação e serviços podem incluir serviços de validação on-line e dado de polı́tica de
AC. (A localização de LCRs não é especificada nesta extensão; essa informação é fornecida
pela extensão cRLDistributionPoints.) Esta extensão pode ser incluı́da em certificados
de entidade final ou de AC. ACs em conformidade DEVEM marcar esta extensão como
não-crı́tica.
AccessDescription
accessMethod
accessLocation
id-ad
id-ad-caIssuers
id-ad-ocsp
::=
es
AuthorityInfoAccessSyntax
OBJECT IDENTIFIER ::= { id-pe 1 }
SEQUENCE SIZE (1..MAX) OF AccessDescription
::= SEQUENCE {
OBJECT IDENTIFIER,
GeneralName }
OBJECT IDENTIFIER ::= { id-pkix 48 }
OBJECT IDENTIFIER ::= { id-ad 2 }
OBJECT IDENTIFIER ::= { id-ad 1 }
nd
id-pe-authorityInfoAccess
na
Cada entrada na sequência AuthorityInformationAccessSyntax descreve o formato e a localização da informação adicional fornecida pelo emissor do certificado no qual a extensão
ocorre. O tipo e o formato da informação são especificados pelo campo accessMethod; o
campo accessLocation especifica o local da informação. O mecanismo de recuperação pode
estar implı́cito no accessMethod ou estar ser especificado no accessLocation.
Este perfil define dois OIDs para accessMethod: id-ad-caIssuers e id-ad-ocsp.
Er
No certificado de chave pública, o OID id-ad-caIssuers é usado quando a informação adicional lista certificados que foram emitidos para a AC que emitiu o certificado que tem a
extensão. A descrição de AC emissoras referenciada tem como finalidade ajudar os usuários
de certificado na seleção de um caminho de certificação que termina em um ponto que é
considerado confiável pelo usuário do certificado.
Quando id-ad-caIssuers aparece como accessMethod, o campo accessLocation descreve o
servidor da descrição referenciada e o protocolo de acesso para obtenção da descrição referenciada. O campo accessLocation é definido como GeneralName, que pode ter várias
formas.
Quando o accessLocation é um directoryName, a informação a ser obtida pela aplicação a
partir de qualquer servidor de diretório é localmente configurada. A entrada para o directoryName contem certificados de AC em crossCertificatePair e/ou atributos cACertificate
como especificado em [RFC4523]. O protocolo que as aplicações utilizaram para acessor o
diretório (ex, DAP ou LDAP) é uma questão local.
Onde a informação estiver disponı́vel através do LDAP, o accessLocation DEVERIA ser
um uniformResourceIdentifier. A URI LDAP [RFC4516] DEVE incluir um campo <dn>
contendo o nome distinto do entrada com o certificado, DEVE incluir um campo <attributes> que lista a descrições apropriadas ao atributo para os atributos que detêm certificados
Cooper, et al.
Standards Track
Tradução para Estudo
44
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
codificados em DEF ou pares de certificados cruzados [RFC4523], e DEVERIAM incluir um
<host> (ex, <ldap://ldap.example.com/cn=CA,dc=example,dc=com?cACertificate;binary,crossCertificatePair,binary>). Omitindo o <host> (ex, <ldap:///cn=exampleCA,dc=example,dc=com?cACertificate;binary>) tem o efeito de confiar em qualquer conhecimento
que o cliente possa ter, a priori, para contactar um servidor apropriado.
es
Onde a informação estiver disponı́vel através de HTTP ou FTP, accessLocation DEVE ser
um uniformResourceIdentifier e a URI DEVE apontar tanto para um único certificado, codificado em DER como especificado em [RFC2585] como para uma coleção de certificados
em uma mensagem CMS tipo “certs-only” codificada em BER ou DER , conforme especificado em RFC2797].
Aplicações em conformidade que suportam HTTP ou FTP para acessar certificados DEVEM ser capazes de aceitar certificados individuais codificados em DER e DEVERIAM ser
capazes de aceitar mensagens CMS “certs-only”.
nd
Implementações de servidores HTTP acessados via URI DEVERIAM especificar o tipo
de mı́dia aplication/pkix-cert [RFC2585] no campo de cabeçalho content-type da resposta
para mensagens CMS “certs-only”. Para FTP, o nome do arquivo que contém um certificado único codificado em DER DEVERIA possuir um sufixo “.cer” [RFC2585] e o nome
do arquivo que contem uma mensagem CMS “certs-only” DEVERIA ter o sufixo “.p7c”
[RFC2797]. Clientes consumidores podem usar o tipo de mı́dia ou extensão de arquivo
como uma dica para o conteúdo, mas não deve depender apenas da presença do tipo de
mı́dia correto ou extensão de arquivo na resposta do servidor.
na
A semântica de outras formas de nome id-ad-caIssuers accessLocation não são definidas.
Uma extensão authorityInfoAccess pode incluir múltiplas instancias de id-ad-caIssuers accessMethod. As diferentes instâncias podem especificar diferentes métodos para acessar a
mesma informação ou podem apontar para informação diferente. Quando o id-ad-caIssuers
accessMethod é usado, no mı́nimo uma instância DEVERIA especificar uma accessLocation
que é uma URI HTTP [RFC2616] ou LDAP [RFC4516].
Er
O OID id-ad-ocsp é usado quando informação de revogação para o certificado contendo
esta extensão se encontra disponı́vel usando o Online Certificate Status Protocol (OCSP)
[RFC2560].
Quando id-ad-ocsp aparece como accessMethod, o campo accessLocation é o local do respondedor OCSP, usando as convenções definidas em [RFC2560].
Descritores adicionais de acesso podem ser definidos em outras especificações PKIX.
4.2.2.2
Subject Information Access
A extensão subject information access indica como acessar informação e serviços para o
sujeito do certificado no qual a extensão ocorre. Quando o sujeito é uma AC, informações
e serviços podem incluir serviços de validação de certificado e dados dé polı́tica de AC.
Quando o sujeito é uma entidade final, a informação descreve o tipo de serviços oferecidos
e como acessá-los. Neste caro, o conteúdo desta extensão é definido na especificação do
protocolo para os serviços suportados. Esta extensão pode ser incluı́da em certificados de
Cooper, et al.
Standards Track
Tradução para Estudo
45
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
entidade final ou de AC. ACs em conformidade DEVEM marcar esta extensão como nãocrı́tica.
id-pe-subjectInfoAccess
SubjectInfoAccessSyntax
OBJECT IDENTIFIER ::= { id-pe 11 }
::=
SEQUENCE SIZE (1..MAX) OF AccessDescription
::= SEQUENCE {
OBJECT IDENTIFIER,
GeneralName }
es
AccessDescription
accessMethod
accessLocation
nd
Cada entrada na sequÊncia SubjectInfoAccessSyntax descreve o formato e a localização da
informação adicional fornecida pelo sujeito do certificado no qual a extensão ocorre. O tipo
e o formato da informação são especificados no campo accessMethod; o campo accessLocation especifica o local da informação. O mecanismo de recuperação pode estar implı́cito
no accessMethod ou ser especificado por accessLocation.
Este perfil define um método de acesso para ser usado quando o sujeito é uma AC e um
método de acesso para ser usado quando o sujeito é uma entidade final. Métodos de acesso
adicionais podem ser definidos no futuro em especificações de protocolos para outros serviços.
na
O OID id-ad-caRepository é usado quando o sujeito é uma AC que publica certificados que
ela emite em um repositório. O campo accessLocation é como um GeneralName, que pode
ter diversas formas.
Er
Quando o accessLocation é um directoryName, a informação é para ser obtida pela aplicação de qualquer diretório localmente configurado. Quando a extensão é usada para apontar
para certificados de AC, a entrada para o directoryName contém certificados de AC no
crossCertificatePair e/ou atributos cACertificate como especificado em [RFC4523]. O protocolo que a aplicação usa para acessar o diretório (ex: DAP ou LDAP) é uma questão local.
Onde a informação for disponibilizada através do LDAP, o accessLocation DEVERIA ser
um uniformResourceIdentifier. A URI LDAP [RFC4516] DEVE incluir um campo <dn>
contendo o nome distinto da entrada que detém os certificados, DEVE incluir um campo
<attributes> que lista os descritores de atributo apropriados para o atributo que detém os
certificados codificados em DER ou pares cross-certificate [RFC4523], e DEVERIA incluir
um <host> (ex: <ldap://ldap.example.com/cn=AC,dc=example,dc=com?cACertificate;binary,crossCertificatePair;binary>).
Omitir o <host> (ex: <ldap:///cn=exampleCA,dc=example,dc=com?cACertificate;binary>) tem o efeito de confiar em qualquer conhecimento, a priori, o cliente poderia ter para
contactar um servidor apropriado.
Onde a informação estiver disponı́vel via HTTP ou FTP, accessLocation DEVE ser um
uniformResourceIdentifier e a URI DEVE apontar para um único certificado codificado em
DER como especificado em [RFC2585] ou uma coleção de certificados codificados em BER
Cooper, et al.
Standards Track
Tradução para Estudo
46
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
ou DER de uma mensagem CMS “certs-only” como especificado em [RFC2797].
Aplicações em conformidade que suportam HTTP ou FTP para acessar certificados DEVEM ser capazes de aceitar certificados individuais codificados em DER e DEVEM ser
capazes de aceitar mensagens CMS “certs-only”.
es
Implementações de servidores HTTP acessados via URI DEVERIAM especificar a tipo de
mı́dia application/pkix-cert [RFC2585] no campo content-type do cabeçalho da resposta
para um único certificado codificado em DER e DEVERIA especificar o tipo de mı́dia
application/pkcs7-mime [RFC2797] no campo content-type do cabeçalho da resposta para
mensagens CMS “certs-only”. Para FTP, o nome do arquivo que contem um único certificado codificado em DER DEVERIA ter sufixo “.cer” [RFC2585] e o nome do arquivo
contendo uma mensagem “certs-only” DEVERIA ter um sufixo “.p7c” [RFC2797]. Clientes
consumidores podem usar o campo media type ou file extension como uma sugestão para
o conteúdo, mas não deveria depender somente da presença do tipo correto de mı́dia ou da
extensão arquivo na resposta do servidor.
nd
A semântica de outra forma id-ad-caRepository para nome accessLocation não é definida.
Uma extensão subjectAccess pode incluir múltiplas instâncias de id-ad-caRepository accessMethod. As diferentes instâncias podem especificar diferentes métodos para acessar a
mesma informação ou apontar para informação diferente. Quando o id-ad-caRepository
accessMethod é usado, no mı́nimo uma instância DEVERIA especificar um accessLocation
que seja URI HTTP [RFC2616] ou LDAP [RFC4516].
Er
na
O OID id-ad-timeStamping é usado quando o sujeito oferece serviços de timestamping
usando o Time Stamp Protocol definido em [RFC3161]. Onde os serviços de timestamping
estiveres disponı́veis via HTTP ou FTP, accessLocation DEVE ser um uniformResourceIdentifier. Onde os serviços de timestamping estiverem disponı́veis via correio eletrônico,
accessLocation DEVE ser um rfc822name. Onde serviços de timestamping estiverem disponı́veis usando TCP/IP, o dNSName ou formas de nome tipo iPAddress podem ser utilizadas.
As semânticas de outras formas de nome de accessLocation (quando accessMethod é id-adtimeStamping) não são definidas nesta especificação.
Outros descritores de acesso adicionais podem ser definidos em outras especificações PKIX.
id-ad
OBJECT IDENTIFIER ::= { id-pkix 48 }
id-ad-caRepository
OBJECT IDENTIFIER ::= { id-ad 5 }
id-ad-timeStamping
OBJECT IDENTIFIER ::= { id-ad 3 }
5
Perfil da LCR e das Extensões da LCR
Como discutido acima, um objetivo deste perfil para LCR X.509 v2 é fomentar a criação de
uma ICP Internet interoperável e reutilizável. Para atingir este objetivo, são especificadas
diretrizes para o uso de extensões, e são feitas considerações sobre a natureza da informação
contida na LCR.
Cooper, et al.
Standards Track
Tradução para Estudo
47
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
As LCRs podem ser utilizadas numa vasta gama de aplicações e ambientes que abrangem um largo espectro de objetivos de interoperabilidade e um espectro ainda mais amplo
de requisitos operacionais e de segurança. Este perfil estabelece uma base comum para
aplicações genéricas que exigem ampla interoperabilidade. O perfil define um conjunto
de informações que podem ser esperadas em cada LCR. Além disso, o perfil define locais
comuns dentro do LCR para atributos usados com freqüência, assim como representações
comuns para esses atributos.
es
Os emissores de LCR emitem LCRs. O emissor da LCR pode ser tanto a AC quanto uma
entidade que foi autorizada pelo AC para emitir LCRs. ACs publicam LCRs para fornecer
informações de estado de revogação dos certificados por ela emitidos. No entanto, uma AC
pode delegar esta responsabilidade a uma outra autoridade confiável.
nd
Cada LCR possui um escopo especı́fico. O escopo da LCR é o conjunto de certificados que
podem aparecer em uma dada LCR. Por exemplo, o escopo pode ser “todos os certificados
emitidos pela AC X”, “todos os certificados de AC emitidos pela AC X”, “todos os certificados emitidos pela AC X que foram revogados por razões de comprometimento da chave e
comprometimento da AC”, ou um conjunto de certificados com base em informações locais
arbitrárias, como “todos os certificados emitidos aos funcionários do NIST localizados em
Boulder”.
na
Uma LCR completa lista todos os certificados em curso, dentro do seu âmbito, que foram
revogados por um dos motivos de revogação abrangidos pelo escopo da LCR. Uma LCR
inteira e completa lista todos os certificados ainda não vencidos emitidos por uma CA que
foram revogados por qualquer motivo. (Note que, as ACs e emissores de LCR são identificados pelo nome, o escopo de uma LCR não é afetado pela chave usada para assinar a
LCR ou a(s) chave(s) usada(s) para assinar certificados.)
Er
Se o escopo da LCR inclui um ou mais certificados emitidos por uma entidade distinta do
emitente da LCR, então ela é um LCR indireta. O escopo de uma LCR indireta pode ser
limitada aos certificados emitidos por uma única CA ou pode incluir certificados emitidos
por múltiplas ACs. Se o emitente da LCR indireta é uma AC, então, o escopo da LCR
indireta também pode incluir certificados emitidos pelo emissor da LCR.
O emissor da LCR também PODE gerar LCRs delta. Um LCR delta lista apenas os certificados, no seu escopo, cuja estado de revogação mudou desde a emissão da CRL completa
referenciada. A LCR completa referenciada é indicada como uma LCR base. O escopo de
uma LCR delta deve ser a mesma que a LCR base a qual faz referência.
Este perfil define uma extensão privada para LCR Internet, mas não define qualquer extensão privada para entrada da LCR.
Ambientes com requisito adicional ou especial podem implementar esse perfil ou pode
substituı́-lo.
As ACs em conformidade não são obrigadas a emitir LCRs quando são fornecidos outros
mecanismos para consulta do estado de revogação de certificados. Quando as LCRs são
emitidas, as LCRs DEVEM ser LCRs versão 2, incluir a data em que a próxima LCR será
emitida no campo nextUpdate (Seção 5.1.2.5), incluir a extensão number da LCR (Seção
5.2.3), e incluir a autoridade extensão authority key identifier (Seção 5.2.1). As aplicações
Cooper, et al.
Standards Track
Tradução para Estudo
48
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
em conformidade que suportarem LCRs são REQUERIDAS fazer o processamento tanto
da versão 1 quanto da versão 2 das LCRs completas que fornecem informações de revogação sobre todos os certificados emitidos por uma AC. Aplicações em conformidade não são
obrigadas a suportar o processamento de LCRs delta, LCRs indiretas, ou LCRs com um
escopo diferente daquele utilizado para todos os certificados emitidos por uma AC.
5.1
Campos da LCR
::= SEQUENCE {
TBSCertList,
AlgorithmIdentifier,
BIT STRING }
::= SEQUENCE {
Version OPTIONAL,
-- if present, MUST be v2
signature
AlgorithmIdentifier,
issuer
Name,
thisUpdate
Time,
nextUpdate
Time OPTIONAL,
revokedCertificates
SEQUENCE OF SEQUENCE {
userCertificate
CertificateSerialNumber,
revocationDate
Time,
crlEntryExtensions
Extensions OPTIONAL
-- if present, version MUST be v2
} OPTIONAL,
crlExtensions
[0] EXPLICIT Extensions OPTIONAL
-- if present, version MUST be v2
Er
na
TBSCertList
version
nd
CertificateList
tbsCertList
signatureAlgorithm
signatureValue
es
A sintaxe da LCR X.509 v2 é a seguinte. Para o cálculo da assinatura o dado deve ser
assinado é aquele codificado em DER do ASN.1. A codificação DER do ASN.1 é formado
por um rótulo, tamanho, e um sistema de codificação de valor para cada elemento. id-pesubjectInfoAccess OBJECT IDENTIFIER ::= id-pe 11
SubjectInfoAccessSyntax ::= SEQUENCE SIZE (1..MAX) OF AccessDescription
}
-- Version, Time, CertificateSerialNumber, and Extensions
-- are all defined in the ASN.1 in Section 4.1
-- AlgorithmIdentifier is defined in Section 4.1.1.2
Os itens a seguir descrevem o uso de LCR X.509 v2 em ICP Internet.
5.1.1
Campos do CertiticateList
O campo CertificateList é uma sequência de três campos obrigatórios. Os campos são
descritos em detalhes nas subseções seguintes.
5.1.1.1
tbsCertList
O primeiro campo na sequeência é o tbsCertList. O campo é por si, uma sequência contendo o nome do emissor, a data de emissão, a data da emissão da próxima lista, a lista
Cooper, et al.
Standards Track
Tradução para Estudo
49
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
opcional de certificados revogados, e extensões opcionais da LCR. Quando não existirem
certificados revogados, a lista de certificados revogados não estará presente. Quando um
ou mais certificados tiverem sido revogados, cada entrada da lista de certificados revogados é definida como uma sequência de números seriais de certificados de usuário, data da
revogação e entradas para extensões opcionais da LCR.
5.1.1.2
signatureAlgorithm
es
O campo signatureAlgorithm contem o identificador de algoritmo para o algoritmo usado
pelo emissor da LCR para assinar o CertificateList. O campo é do tipo AlgorithmIdentifier,
que é definido na seção 4.1.1.2. [RFC4055], [RFC4055], e [RFC4491] lista os algoritmos suportados por esta especificação, mas outros algoritmos de assinatura também PODEM ser
suportados.
5.1.1.3
signatureValue
nd
Este campo DEVE conter o mesmo identificador de algoritmo que o indicado no campo
signature da sequência tbsCertList (seção 5.1.2.2).
O campo signatureValue contem uma assinatura digital calculada sobre o campo tbsCertList codificado em DER do ASN.1. O tbsCertList codificado é usado como entrada para a
função de assinatura. Esse valor de assinatura é codificado como um string de bit e incluı́do
no campo signatureValue da LCR. Os detalhes desse processo são especificados para cada
um dos algoritmos suportados em [RFC3279], [RFC4055], e [RFC4491].
Er
na
As ACs que também são emissoras de LCR PODEM usar uma chave privada para assinar
digitalmente certificados e LCRs, ou PODEM usar chaves privadas separadas para assinar digitalmente certificados e LCRs. Quando empregadas chaves separadas, cada uma das
chaves públicas relacionadas com essas chaves privadas é incluı́da em certificados separados,
um com o bit cRLSign ativado na extensão key usage (seção 4.2.1.3). Quando forem empregadas chaves privadas separadas, os certificados emitidos pela AC contêm um authority
key identifier, e as LCRs correspondentes, contêm um authority key identifier diferente. O
uso de certificados de AC separados para validação de assinaturas de certificado e assinaturas de LCR, podem oferecer uma melhor caracterı́stica de segurança; no entanto, impõem
um fardo a mais para as aplicações, e pode limitar a interoperabilidade. Muitas aplicações
constroem um caminho de certificação, e então validam o caminho de certificação (seção
6). A validação da LCR, por sua vez, requer um caminho de certificação separado, a ser
construı́do e validado para a validação do certificado de assinatura da LCR usado pela AC.
As aplicações que executam validação de LCR DEVEM suportar validação de caminho de
certificação quando os certificados e LCRs são assinados digitalmente pela mesma chave
privada. Estas aplicações também DEVERIAM suportar validação de caminho de certificação quando forem utilizadas chaves privadas distintas para assinatura de certificados e
LCRs.
5.1.2
Certificate List “A Ser Assinado”
O campo certificate list a ser assinado, ou TBSCertList, é uma sequência de campos obrigatórios e opcionais. Os campos obrigatórios identificam o emissor da LCR, o algoritmo
Cooper, et al.
Standards Track
Tradução para Estudo
50
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
utilizado para assinar a LCR, e a data e o tempo da emissão da LCR.
Campos adicionais incluem a data e o tempo no qual o emissor da CLR emitirá a próxima
LCR, a lista de certificados revogados, e extensões da LCR. A lista de certificados revogados
é opcional, para suportar o caso no qual a AC não possui nenhum certificado, por ela
emitido, revogado dentro do perı́odo de validade. Este perfil requer que os emissores de
LCR em conformidade incluam o campo nextUpdate e o número da LCR, e a extensão
authority key identifier em todas as LCRs emitidas.
Version
es
5.1.2.1
Este campo opcional descreve a versão da LCR codificada. Quando as extensões forem usadas, como obrigatório para este perfil, este campo DEVE estar presente e DEVE especificar
a versão 2 (o valor inteiro utilizado é 1).
5.1.2.2
Signature
nd
Este campo contém o identificador do algoritmo para o algoritmo utilizado para assinar a
LCR. [RFC3279], [RFC4055], e [RFC4491] lista os OIDs para os algoritmos de assinatura
mais comuns usados na ICP Internet.
Este campo DEVE conter o mesmo identificador de algoritmo que o campo signatureAlgorithm na sequência CertificateList (seção 5.1.1.2).
5.1.2.3
Issuer Name
This Update
Er
5.1.2.4
na
O campo issuer name identifica a entidade que assinou e emitiu a LCR. A identidade
do emissor é informada no campo issuer. Formas alternativas de nome também podem
aparecer na extensão issuerAltName (seção 5.2.2). O campo issuer DEVE conter um nome
distinto (DN) X.500 não vazio. O campo issuer é definido como um tipo Name do X.501,
e DEVE seguir as regras de codificação para o campo issuer name do certificado (seção
4.1.2.4).
Este campo indica a data de emissão da LCR. thisUpdate pode ser codificado como UTCTime ou GeneralizedTime.
Emissores de LCR em conformidade com este perfil DEVEM codificar thisUpdate como
UTCTime para datas até o ano 2049. Emissores de LCR em conformidade com este perfil
DEVEM codificar thisUpdate como GeneralizedTime para datas no ano 2050 para frente.
Aplicações em conformidade DEVEM ser capazes de processar datas que estejam codificadas tanto em UTCTime como em GeneralizedTime.
Quando codificada como UTCTime, thisUpdate DEVE ser especificada e interpretada como
definido na seção 4.1.2.5.1. Quando codificadas como GenerelizedTime, thisUpdate DEVE
ser especificada e interpretada como definido na seção 4.1.2.5.2.
5.1.2.5
Next Update
Cooper, et al.
Standards Track
Tradução para Estudo
51
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
Este campo indica a data na qual a próxima LCR será emitida. A próxima LCR pode ser
emitida antes da data indicada. Emissores de LCR DEVERIAM emitir LCRs com o tempo
nextUpdate iqual ou maior que todas as LCRs enteriores. nextUpdate pode ser codificado
como UTCTime ou GeneralizedTime.
Os emissores de LCR em conformidade DEVEM incluir o campo nextUpdate em todas
as LCRs. Note que a sintaxe ASN.1 de TBSCertList descreve este campo como opcional,
que esta consistente com a estrutura ASN.1 definida em [X.509]. O comportamento de clientes que processam LCRs que omitem o campo nextUpdate não é especificado neste perfil.
es
Emissores de LCR em conformidade com este perfil DEVEM codificar nextUpdate como
UTCTime para datas até o ano de 2049. Emissores de LCR em conformidade com este
perfil DEVEM codificar nextUpdate como GeneralizedTime para datas no ano 2050 e posteriores. Aplicações em conformidade DEVEM ser capazes de processar datas que estejam
codificadas tanto em UTCTime quanto em GeneralizedTime.
5.1.2.6
Revoked Certificates
nd
Quando codificadas como UTCTime, nextUpdate DEVE ser especificado e interpretado
como definido na seção 4.1.2.5.1. Quando codificada como GeneralizedTime, nextUpdate
DEVE ser especificado e interpretado como definido na seção 4.1.2.5.2.
5.1.2.7
Extensões
na
Quando não existirem certificados revogados, a lista de certificados revogados DEVE estar
ausente. De outra forma, os certificados revogados são listados pelos seus números seriais.
Certificados revogados pela AC são identificados unicamente pelo número serial do certificado. A data na qual a revogação ocorreu é especificada. O tempo para revocationDate
DEVE ser expresso conforme descrito na seção 5.1.2.4. Informação adicional pode ser fornecida nas extensões das entradas da LCR; extensões de entrada da LCR serão discutidas
na seção 5.3.
5.2
Er
Este campo apenas ocorre se a versão for 2 (seção 5.1.2.1). Se presente, este campo é uma
sequência de um ou mais extensões de LCR. As extensões de LCR são serão discutidas na
seção 5.2.
Extensões da LCR
As extensões para LCRs X.509 v2 definidas nos padrões ANSI X.9, ISO/IEC e ITU-T
[X.509] [X9.55] fornecem métodos para associação de atributos adicionais às LCRs. O formato X.509 para LCR também permite que comunidades definam extensões privadas para
transferir informações particulares àquelas comunidades. Cada extensão da LCR pode ser
designada como crı́tica ou não-crı́tica. Se um LCR tiver uma extensão crı́tica que a aplicação não possa processar, então a aplicação NÃO DEVE usar a LCR para determinar o
estado de revogação dos certificados. Entretanto, as aplicações podem ignorar as extensões
não-crı́ticas. As subseções seguintes apresentam aquelas extensões usadas com LCRs Internet. As comunidades podem decidir incluir extensões na LCR que não estão definidas nesta
especificação. No entanto, devem ter cuidado na adoção de quaisquer extensões crı́tica nas
LCRs que podem ser utilizadas em contexto geral.
Cooper, et al.
Standards Track
Tradução para Estudo
52
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
Os emissores de LCR em conformidade NECESSITAM incluir a extensões authority Key
Identifier (seção 5.2.1) e CRL number (seção 5.2.3) em todas as LCRs emitidas.
5.2.1
Authority Key Identifier
es
A extensão authority key identifier fornece um meio para identificar a chave pública correspondente a chave privada usada para assinar a LCR. A identificação pode ser baseada tanto
no identificador da chave (campo subject key identifier do certificado usado para assinar a
LCR) ou no campo issuer name e serial number. Esta extensão é especialmente útil quando
um emissor tem mais de uma chave para assinatura, por questões de múltiplos pares de
chaves concorrentes ou devido a troca de chave.
Emissores de LCR em conformidade DEVEM usar o método key identifier, e DEVEM incluir esta extensão em todas as LCRs emitidas.
A sintaxe para esta extensão da LCR é definida na seção 4.2.1.1.
Issuer Alternative Name
nd
5.2.2
53
A extensão issuer alternative name permite que identidades adicionais sejam associadas ao
emissor da LCR. Opções definidas incluem endereço de e-mail (ref822Name), nome DNS,
endereço IP, e URI. Múltiplas instâncias de uma forma de nome e múltiplas formas de
nome podem ser incluı́das. Sempre que tais identidades forem utilizadas, a extensão issuer
alternative name DEVE ser utilizada; no entanto, um nome DNS PODE ser representado
no campo issuer usando o atributo domainComponent conforme descrito na seção 4.1.2.4.
na
Emissores de LCR em conformidade DEVERIAM marcar a extensão issuerAltName como
não-crı́tica.
O OID e a sintaxe para este extensão de LCR estão definidos na seção 4.2.1.7.
5.2.3
CRL Number
Er
A extensão CRL number é uma extensão não-crı́tica que contém uma sequência monotonicamente crescente de números para um dado escopo de LCR e emissor de LCR. Esta
extensão permite que os usuários facilmente determinem quando uma LCR em particular sucede uma outra LCR. Números de LCR também suportam identificação para LCRs
complementares inteiras e para LCRs delta. Emissores de LCR em conformidade com este
perfil DEVEM incluir esta extensão em todas as LCRs e DEVEM marcá-la como não-crı́tica.
Se um emissor de LCR gerar LCRs delta em complemento a LCRs completas para um
dado escopo, as LCRs completas e as LCRs delta devem compartilhar uma única sequência
numérica. Se uma LCR delta e uma LCR completa que cobrem o mesmo escopo forem
emitidas no mesmo tempo, elas DEVEM possuir o mesmo número de LCR e fornecerem a
mesma informação de revogação. Ou seja, a combinação da LCR delta e uma LCR completa aceitável DEVE fornecer a mesma informação sobre revogação que a LCR completa
simultaneamente emitida.
Se o emissor de LCR gera duas LCRs (duas LCRs completas, duas LCRs delta, ou uma
LCR completa e uma delta) para o mesmo escopo em momentos diferentes do tempo, as
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
duas LCRs NÃO DEVEM possuir o mesmo número de LCR. Isto é, se o campo this update (seção 5.1.2.4) nas duas LCRs não forem idênticos, os números das LCRs DEVEM ser
diferentes.
Considerando os requisitos acima, números de LCR podem aguardados como inteiros longos. Os verificadores de LCR DEVEM ser capazes de processar valores contidos no CRLNumber de até 20 octetos. Emissores de LCR em conformidade NÃO DEVEM usar valores
maiores que 20 octetos para CRLNumber.
OBJECT IDENTIFIER ::= { id-ce 20 }
CRLNumber
::= INTEGER (0..MAX)
5.2.4
es
id-ce-cRLNumber
Delta CRL Indicator
nd
A extensão delta CRL indicator é crı́tica e identifica que uma LCR é delta. As LCRs delta
contêm atualizações de informação de revogação previamente distribuı́das, ao invés de conter todas as informações constantes de uma LCR completa. O uso de LCRs delta pode
significativamente reduzir o carregamento da rede e o tempo de processamento em determinados ambientes. LCRs delta são geralmente menores que as LCRs que elas atualizam,
assim, as aplicações que obtêm LCRs delta consomem menos banda da rede que aplicações
que obtêm as LCRs completas correspondentes. Aplicações que armazenam informação de
revogação em formato diferente da estrutura da LCR podem adicionar nova informação de
revogação à base de dados local sem a necessidade de reprocessar toda informação.
na
A extensão delta CRL indicator contém um valor único do tipo BaseCRLNumber. O CRL
number identifica a LCR, completa para um dado escopo, que foi utilizada como ponto de
referência para a geração da presente LCR delta. Um emissor de LCR em conformidade
DEVE publicar a LCR base referenciada como uma LCR completa. A LCR delta contém
todas as atualizações de estado de revogação para um mesmo escopo. A combinação de
uma LCR delta mais a LCR base referenciada é equivalente a uma LCR completa, para o
escopo considerado, no tempo da publicação da LCR delta.
Er
Quando um emissor de LCR gera uma LCR delta, a LCR delta DEVE incluir a extensão
crı́tica delta CRL indicator.
Quando uma LCR delta é emitida, ela DEVE cobrir o mesmo conjunto de razões e o mesmo
conjunto de certificados que foram cobertos pela LCR base que ela referencia. Isto é, o escopo da LCR delta DEVE ser o mesmo escopo da LCR completa referenciada como LCR
base. A LCR base referenciada e a LCR delta DEVEM omitir a extensão issuing ditribution
point ou conter extensões issuing distribution point iguais. Além disso, o emissor de LCR
DEVE usar a mesma chave privada para assinar a LCR delta e qualquer LCR completa
que a LCR delta atualiza.
A aplicação que suporta LCRs delta pode construir uma LCR completa para um dado
escopo, combinando a LCR delta para aquele escopo com, tanto uma LCR emitida para
aquele escopo que seja completa ou uma LCR localmente construı́da que seja completa
para aquele escopo.
Cooper, et al.
Standards Track
Tradução para Estudo
54
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
Quando um LCR delta é combinada com uma LCR completa ou uma LCR localmente
construı́da, a LCR resultante, localmente construı́da, tem como CRL number aquele especificado na extensão CRL number encontrada na LCR delta, utilizada para a sua construção. Adicionalmente, a LCR resultante, localmente construı́da, tem os tempos thisUpdate
e nextUpdate especificados nos campos correspondentes da LCR delta utilizada na sua
construção. Além disso, a LCR localmente construı́da herda os calores contidos em issuing
distribution point da LCR delta.
es
Uma LCR completa e uma LCR delta PODEM ser combinadas quando as quatro condições
à seguir forem satisfeitas:
(a) A LCR completa e a LCR delta possuem o mesmo emissor.
(b) A LCR completa e a LCR delta possuem o mesmo escopo. As duas LCRs possuem
o mesmo escopo se ocorrer uma das seguintes condições:
nd
(1) A extensão issuingDistributionPoint é omitida tanto na LCR completa
quanto na LCR delta.
(2) A extensão issuingDistributionPoint estiver presente tanto na LCR completa quanto na LCR delta, e o valor desses campos for o mesmo nas duas
LCRs.
(c) O CRL number da LCR completa é iqual ou maior que o BaseCRLNumber especificado na LCR delta. Isto é, a LCR completa contém (no mı́nimo) toda a
informação de revogação tratada pela LCR base referenciada.
na
(d) O CRL number da LCR completa é menor que o número da LCR delta. Isto é, a
LCR delta seque a LCR completa na sequência de numeração.
Os emissores de LCR DEVEM garantir que a combinação de uma LCR delta e qualquer
LCR completa apropriada refletirá exatamente a estado de revogação atual. O emissor de
LCR DEVE incluir uma entrada na LCR delta para cada certificado dentro do escopo da
LCR delta cujo estado tiver mudado desde a geração da LCR base referenciada:
Er
(a) Se o certificado está revogado por uma razão incluı́da no escopo da LCR, listar o
certificado como revogado.
(b) Se o certificado estiver válido e estiver listado na LCR base referenciada ou qualquer LCR subsequente, com o código razão certificateHold, e o código da razão
certificateHold estiver incluı́do no escopo da LCR, listar o certificado com o código
razão removeFromLCR.
(c) Se o certificado estiver revogado por uma razão externa ao escopo da LCR, mas o
certificado for listado na LCR base referenciada ou qualquer LCR subsequente com
o código razão incluso no escopo desta LCR, listar o certificado como revogado,
mas omitir o código razão.
(d) Se o certificado estiver revogado por uma razão externa ao escopo da LCR e o certificado nao se encontrar listado na LCR base referenciada, nem em qualquer LCR
subsequente com a razão existente no escopo desta LCR, não listar o certificado
nesta LCR.
Cooper, et al.
Standards Track
Tradução para Estudo
55
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
O estado de um certificado é considerado modificado se ele estiver revogado (por qualquer
razão, incluindo certificateHold), se ele estiver liberado da suspensão, ou se as razões de
sua revogação mudarem.
É apropriado listar um certificado com código razão removeFromCRL na LCR delta mesmo
se o certificado não estiver suspenso na LCR base referenciada. Se o certificado foi colocado
em suspensão em qualquer LCR emitida após a LCR base, mas antes desta LCR delta e
então liberado da suspensão, ele DEVE ser listado na LCR delta com código de revogação
removeFromCRL.
es
O emissor de LCR DEVE opcionalmente listar um certificado na LCR delta com código
razão removeFromCRL se o tempo notAfter especificado no certificado preceder o tempo
thisUpdate especificado na LCR delta e o certificado for listado na LCR base referenciada
ou em qualquer LCR emitida após a base, mas antes desta LCR delta.
nd
Se um aviso de revogação de certificado aparecer primeiro na LCR delta, então é possı́vel
que o perı́odo de validade do certificado expire antes da próxima LCR completa, para o
mesmo escopo, ser emitida. Neste caso, o aviso de revogação é incluı́do em, no mı́nimo,
uma LCR completa emitida explicitamente para este escopo.
56
na
Uma aplicação que suporte LCR delta DEVE ser capaz de construir uma LCR completa
atualizada, combinando a LCR completa emitida previamente e a LCR delta mais atual.
Uma aplicação que suporte LCR delta PODE também ser capaz de construir uma LCR
completa atual pela combinação de uma LCR completa construı́da localmente e a LCR
delta atual. Uma LCR delta é considerada ser a atual se o tempo no momento estiver entre
os tempos contidos nos campos thisUpdate e nextUpdate. Sob certas circunstâncias, o
emissor de LCR pode publicar uma ou mais LCRs delta antes do tempo indicado no campo
nextUpdate. Se mais de uma LCR delta atual para um mesmo escopo for encontrada, a
aplicação DEVERIA considerar aquela com o último valor em thisUpdate como sendo a
mais atualizada.
id-ce-deltaCRLIndicator OBJECT IDENTIFIER ::= { id-ce 27 }
5.2.5
::= CRLNumber
Er
BaseCRLNumber
Issuing Distribution Points
A issuing distribution point é uma extensão crı́tica de LCR que identifica os pontos de
distribuição da LCR e o escopo para uma LCR especı́fica, e indica se se a LCR cobre revogação apenas para certificados de entidade final, apenas para certificados de AS, apenas
certificados de atributo, ou um conjunto limitado de códigos razão. Embora a extensão
seja crı́tica, implementações em conformidade não são obrigadas a suportar esta extensão.
Entretanto, as implementações que não suportarem esta extensão DEVEM tanto tratar o
estado de revogação de qualquer certificado não listado nesta LCR como desconhecido ou
localizar uma outra LCR que não contenha qualquer extensão crı́tica não reconhecida.
A LCR é assinada usando a chave privada do emissor da LCR. Os pontos de distribuição de
LCR não possuem seus próprios pares de chave. Se a LCR for armazenada em um diretório
X.500, ela é gravada em uma entrada do diretório correspondendo ao ponto de distribuição
da LCR, que pode ser diferente da entrada de diretório do emissor da LCR.
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
Os códigos razão associados com um ponto de distribuição DEVE ser especificado em onlySomeReasons. Se onlySomeReasons não aparece, o ponto de distribuição DEVE conter
revogações para todos os códigos razão. ACs podem usar os pontos de distribuição para
particionar a LCR com base nos compromissos e rotinas de revogação. Neste caso, as revogações com códigos razão keyCompromise (1), cACompromise (2), e aACompromise (8)
aparecem em um ponto de distribuição, e as revogações com outros códigos razão aparecem
em outro ponto de distribuição.
es
Se uma LCR incluir uma extensão issuingDistributionPoint com onlySomeReasons presente, então todo certificado no escopo da LCR que estiver revogado DEVE ter uma razão
de revogação associada, diferente de não especificado. A razão de revogação associada é
usada para determinar em qual LCR(s) listar o certificado revogado, embora, não exista
requisito para incluir a extensão de entrada na LCR reasonCode na entrada LCR correspondente.
nd
A sintaxe e a semântica para o campo distributionPoint são as mesmas utilizadas para o
campo distributionPoint na extensão cRLDistributionPoints (seção 4.2.1.13). Se o campo
distributionPoint estiver presente, então ele DEVE incluir no mı́nimo um dos nomes para
o campo distributionPoint correspondente a extensão cRLDistributionPoints de todo certificado que esteja dentro do escopo desta LCR. Uma codificação idêntica DEVE ser usada
nos campos distributionPoint do certificado e da LCR.
na
Se o escopo da LCR incluir apenas certificados emitidos pelo emissor da LCR, então ao
campo booleano de indirectCRL, DEVE ser atribuı́do o valor FALSE. De outra forma, se
o escopo da LCR incluir certificados emitidos por uma ou mais autoridades distintas do
emissor da LCR, ao campo booleano indirectCRL deve ser atribuı́do o valor TRUE. a autoridade responsável por cada entrada é indicada pelo emissor do certificado na entrada da
extensão na LCR (seção 5.3.3).
Er
Se o escopo da LCR incluir apenas certificados de chave pública de entidade final, então,
onlyContainsUserCerts DEVE ter o valor TRUE. Se o escopo da LCR incluir apenas certificados de AC, então deve ser atribuı́do o valor TRUE ao campo onlyContaisCACerts. Se
tanto onlyContainsUserCerts ou onlyContainsCACerts tiverem o valor TRUE, então o escopo da LCR NÃO DEVE incluir qualquer certificado com versão 1 ou versão 2. Emissores
de LCR em conformidade DEVEM atribuir o valor FALSE ao campo onlyContainsAttributeCerts.
Emissores de LCR em conformidade NÃO DEVEM emitir LCRs onde a codificação DER
da extensão issuing distribution point é uma sequência vazia. Ou seja, se onlyContainsUserCerts, onlyContainsCACerts indirectCRL, e onlyContainsAttributeCerts tiverem todos
o valor FALSE, então ou o campo distributionPoint ou onlySomeReasons DEVE estar
presente.
id-ce-issuingDistributionPoint OBJECT IDENTIFIER ::= { id-ce 28 }
IssuingDistributionPoint ::= SEQUENCE {
distributionPoint
[0] DistributionPointName OPTIONAL,
onlyContainsUserCerts
[1] BOOLEAN DEFAULT FALSE,
onlyContainsCACerts
[2] BOOLEAN DEFAULT FALSE,
onlySomeReasons
[3] ReasonFlags OPTIONAL,
Cooper, et al.
Standards Track
Tradução para Estudo
57
PKIX Certificate and CRL Profile
RFC 5280
indirectCRL
onlyContainsAttributeCerts
Maio de 2008
[4] BOOLEAN DEFAULT FALSE,
[5] BOOLEAN DEFAULT FALSE }
-- at most one of onlyContainsUserCerts, onlyContainsCACerts,
-- and onlyContainsAttributeCerts may be set to TRUE.
5.2.6
Freshest CRL (Ponto de Distribuição de LCR delta)
es
A extensão freshest CRL identifica como a informação da LCR delta para a LCR completa
é obtida. Emissores de LCR em conformidade DEVEM marcar esta extensão como nãocrı́tica. Esta extensão NÃO DEVE aparecer em LCRs delta.
A mesma sintaxe utilizada para a extensão de certificado cRLDistributionPoints é utilizada
nesta extensão, e está descrita na seção 4.2.1.13. Embora, apenas o campo distribution
point é significativo neste contexto. Os campos reasons e cRLIssuer DEVEM ser omitidos
nesta extensão de LCR.
nd
Cada nome de ponto de distribuição fornece a localização na qual a LCR delta para a LCR
completa pode ser encontrada. O escopo dessas LCRs delta DEVE ser o mesmo escopo da
LCR completa. Os conteúdos desta extensão de LCR são usados apenas para localização
de LCRs delta, os conteúdos não são usados para validar a LCR ou para referenciar LCRs
delta. As convenções de codificação definidas para distribution points na seção 4.2.1.13
também se aplicam a esta extensão.
FreshestCRL
5.2.7
na
id-ce-freshestCRL OBJECT IDENTIFIER ::= { id-ce 46 }
::= CRLDistributionPoints
Authority Informatioin Access
Er
Esta seção define o uso da extensão Authority Information Access na LCR. A sintaxe e a
semântica definidas na seção 4.2.2.1 para a extensão em certificado também são utilizadas
para esta extensão na LCR.
Esta extensão de LCR DEVE ser marcada como não-crı́tica.
Quando presente em um LCR, esta extensão DEVE incluir no mı́nimo um AccessDescription especificando id-ad-caIssuers como o accessMethod. O OID id-ad-caIssuers é usado
quando a informação disponı́vel lista certificados que podem ser utilizados para verificar a
assinatura na LCR (ex: certificados cujo nome do sujeito correspondem ao nome do emissor na LCR e que um chave pública do sujeito correspondente a chave privada utilizada
para assinar a LCR). Tipos de método de acesso diferente de id-ad-caIssuers NÃO DEVEM
ser incluı́dos. No mı́nimo uma instância de AccessDescription DEVERIA especificar um
accessLocation para URI HTTP [RFC2616] ou LDAP [RFC4516].
Quando a informação estiver disponı́vel via HTTP ou FTP, o accessLocation DEVE ser
um uniformResourceIdentifier e a URI DEVE apontar para um único certificado codificado
em DER como especificado em [RFC2585] ou uma coleção de certificados codificados em
BER ou DER de uma mensagem CMS “certs-only” como especificado em [RFC2797].
Cooper, et al.
Standards Track
Tradução para Estudo
58
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
Aplicações em conformidade que suportam HTTP ou FTP para acessar certificados DEVEM ser capazes de aceitar certificados individuais codificados em DER e DEVERIAM ser
capazes de aceitar mensagens CMS “certs-only”.
es
Implementações de servidor HTTP acessados via URI DEVERIAM especificar o tipo de
meio application/pki-cert [RFC2585] no campo content-type do cabeçalho de mensagens
de resposta para um único certificado codificado em DER e DEVERIA especificar o tipo
de meio application/pkcs7-mime [RFC2797] no campo content-type do cabeçalho da mensagens de resposta CMS “certs-only”. Pra FTP, o nome do arquivo que contém um único
certificado codificado em DER DEVERIA ter o sufixo “.cer” [RFC2585] e o nome de um
arquivo que contenha o sufixo “.p7c” para arquivos que contenham mensagem CMS “certsonly” [RFC2797]. Cliente consumidores podem usar o tipo meio ou extensão de arquivo
como um indicador para o conteúdo, mas não deveriam depender somente da presença de
um tipo de meio correto ou extensão de arquivo constante na resposta do servidor.
na
nd
Quando o accessLocation é um directoryName, a informação pode ser obtida pela aplicação à partir de qualquer servidor de diretório, é uma configuração local. Quando uma
chave pública de AC é usada para validar assinaturas em certificados e LCRs, o respectivo
certificado de AC é guardado nos atributos crossCertificatePair e/ou cACerttificate como
especificado em [RFC4523]. Quando chaves públicas distintas forem utilizadas para validar
assinaturas em certificados e LCRs, o respectivo certificado é guardado no atributo userCertificate como especificado em [RFC4523]. Assim, implementações que suportem a forma
directoryName de accessLocation DEVEM ser preparadas para encontrar o certificado necessário em algum desses três atributos. O protocolo que a aplicação usa para acessar o
diretório (ex: DAP ou LDAP) é definido localmente.
5.3
Er
Quando a informação estiver disponı́vel através de LDAP, o accessLocation DEVERIA
ser um uniformResourceIdentifier. A URI LDAP [RFC4516] DEVE incluir um campo
<dn> contendo o nome distinto da entrada que contém o certificado, DEVE incluir um
campo <attributes> que lista descritores apropriados de atributo para os atributos que
contém os certificados codificados em DER ou pares de certificados cruzados [RFC4523].
e DEVERIAM incluir um <host> (ex: <ldap://ldap.example.com/cn=CA,dc=example,
dc=com?cACertificate;binary,crossCertificatePair;binary>). Omitir o <host> (ex: <ldap:
///cn=exampleCA,dc=example,dc=com?cACertificate;binary>) tem o efeito de confiar em
qualquer conhecimento prévio que o cliente possa ter para contactar o servidor apropriado.
Extensões da Entrada da LCR
As extensões das entradas da LCR definidas para LCRs X.509 v2 pela ISO/IEC, ITU-T e
ANSI-X9 fornece métodos para associação de atributos adicionais com as entradas da LCR
[X.509] [X9.55]. O formato da LCR X.509 v2 também permite que comunidades especı́ficas
definam extensõ0es privadas para entradas da LCR para transmitir informações relevantes
àquelas comunidades. Cada extensão na entrada da LCR pode designada como crı́tica ou
não-crı́tica. Se uma LCR tiver uma extensão de entrada da LCR crı́tica que a aplicação não
possa processar, então a aplicação NÃO DEVE usar esta LCR para determinar o estado de
revogação de qualquer certificado. Entretanto, as aplicações podem ignorar extensões das
entradas de LCR marcadas como não-crı́ticas.
As subseções seguintes apresentam as extensões recomendadas para serem utilizadas nas entradas de LCR Internet e os locais padrão para informação. Comunidades especı́ficas podem
Cooper, et al.
Standards Track
Tradução para Estudo
59
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
usar extensões das entradas da LCR adicionais; entretanto, isso deve ser feito com muito
cuidado quando se tratar de extensões crı́ticas que podem ser usadas em um contexto geral.
O suporte as extensões das entradas da LCR definidas nesta especificação é opcional para
emissores de LCR e aplicações em conformidade. No entanto, os emissores de LCR DEVERIAM incluir códigos razão (reason code) (seção 5.3.1) e datas de invelidez (seção 5.3.2)
sempre que esta informação estiver disponı́vel.
Reason Code
es
5.3.1
A extensão reasonCode é uma extensão não-crı́tica para entrada da LCR que identifica a
razão para a revogação do certificado. Os emissores de LCR são incentivados a incluı́rem
códigos razão significativos na entradas da LCR; no entanto, o código razão da extensão
da entrada da LCR DEVERIA estar ausente ao invés do uso do valor unspecified (0) para
reasonCode.
nd
O valor de reasonCode igual a removeFromCRL (8) apenas pode ocorrer em LCRs delta e
indica que um certificado esta para ser removido da LCR devido ou a expiração do certificado ou que não está mais suspenso. Todos os outros códigos razão podem aparecer em
qualquer LCR e indica que o certificado especificado deveria ser considerado revogado.
id-ce-cRLReasons
60
OBJECT IDENTIFIER ::= { id-ce 21 }
na
-- reasonCode ::= { CRLReason }
5.3.2
Er
CRLReason
::= ENUMERATED {
unspecified
(0),
keyCompromise
(1),
cACompromise
(2),
affiliationChanged
(3),
superseded
(4),
cessationOfOperation
(5),
certificateHold
(6),
-- value 7 is not used
removeFromCRL
(8),
privilegeWithdrawn
(9),
aACompromise
(10) }
Invalidity Date
A extensão invalidity date, da entrada da CLR, é uma extensão não-crı́tica que fornece
a data na qual a chave privada foi considerada comprometida ou considerada suspeita de
estar comprometida, ou caso contrário, que ele se tornou inválida. Esta é a data pode ser
anterior à data de revogação na entrada da LCR, que é a data na qual a AC processou a
revogação. Quando uma revogação é publicada primeiro pelo emissor de LCR, na LCR, a
data de invalidez do certificado pode preceder a data da emissão das LCRs mais recentes,
mas a data de revogação NÃO DEVERIA preceder a data da emissão das últimas LCRs.
Sempre que esta informação estiver disponı́vel, é fortemente sugerido aos emissores de LCR
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
que compartilhem a informação com os usuários de LCR.
Os valores GeneralizedTime incluı́dos neste campo DEVEM ser expressos em Greenwich
Mean Time (Zulu), e DEVEM ser especificado e interpretados como definido na seção
4.1.2.5.2.
id-ce-invalidityDate OBJECT IDENTIFIER ::= { id-ce 24 }
InvalidityDate
Certificate Issuer
es
5.3.3
::= GeneralizedTime
nd
Esta extensão de entrada da LCR identifica o emissor do certificado associado com a entrada
em uma LCR indireta, ou seja, a LCR que tem o indicador indirectCRL ativado na extensão
issuing distribution point. Quando presente, a extensão da entrada certificate issuer da LCR
inclui um ou mais nomes da extensão issuer e/ou issuer alternative name do certificado que
corresponde a entrada LCR. Se esta extensão não estiver presente na primeira entrada
de uma entrada LCR, o emissor padrão para certificate issuer é o emissor da LCR. Nas
entradas subsequentes da LCR indireta, se esta extensão não estiver presente, o emissor do
certificado para a entrada, é o mesmo da entrada precedente. Este campo é definido da
seguinte forma:
id-ce-certificateIssuer OBJECT IDENTIFIER ::= { id-ce 29 }
CertificateIssuer
::= GeneralNames
na
Emissores de LCR em conformidade DEVEM incluir nesta extensão o nome distinto (DN)
do campo issuer do certificado correspondente a esta entrada da LCR. A codificação do DN
DEVE ser igual àquela usada no certificado.
6
Er
Os emissores de LCR DEVEM marcar esta extensão como crı́tica desde que implementações que ignoram esta extensão poderiam não atribuir corretamente entradas da LCR
a certificados. Este especificação RECOMENDA que as implementações reconheçam esta
extensão.
Validação de Caminho de Certificação
Os procedimentos de validação de caminho para ICP Internet são baseados no algoritmo
fornecido em [X.509]. O processamento do caminho de certificação verifica a associação
entre o nome distinto ou nome alternativo do sujeito e a chave pública do sujeito. A associação é limitada pelas restrições especificadas nos certificados que compõem o caminho e
insumos especificados pela terceira parte confiável. As extensões basic constraints e policy
constraints permitem à lógica de processamento de caminho de certificação automatizar o
processo de tomada de decisão.
Esta seção descreve um algoritmo para validação de caminhos de certificação. Não é solicitado às implementações em conformidade desta especificação implementarem este algoritmo, mas DEVEM fornecer funcionalidade equivalente para o comportamento externo
resultante deste procedimento. Qualquer algoritmo pode ser usado por uma implementação
Cooper, et al.
Standards Track
Tradução para Estudo
61
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
em particular, desde que derivem o resultado correto.
Na seção 6.1, o texto descreve a validação básica de caminho. Os caminhos básicos começam com certificados emitidos por uma âncora confiável. O algoritmo requer a chave
pública da AC, o nome da CA, e qualquer restrição sobre o conjunto de caminhos que
podem ser validados usando esta chave.
es
A seleção de uma âncora de confiança é uma questão de polı́tica: pode ser a AC que se
encontra no topo de uma ICP hierárquica, a AC que emitiu o(s) próprio(s) certificado(s),
ou qualquer AC em uma rede de ICP. O procedimento de validação de caminho é o mesmo
independente da escolha da âncora de confiança. Adicionalmente, aplicações diferentes podem confiar em diferentes âncoras de confiança, ou podem aceitar caminhos que comecem
com qualquer uma em um conjunto de âncoras de confiança.
A seção 6.2 descreve métodos para utilização do algoritmo de validação de caminho em
implementações especı́ficas.
6.1
nd
A seção 6.3 descreve os passos necessários para determinar se um certificado esta revogado
quando LCRs são o mecanismo de revogação usado pelo emissor do certificado.
Validação Básica de Caminho
na
Este texto descreve um algoritmo para o processamento de caminhos X.509. Um implementação em conformidade DEVE incluir um procedimento de processamento de caminho
que seja funcionalmente equivalente ao comportamento externo deste algoritmo. No entanto, o suporte para algumas extensões processadas por este algoritmo seja OPCIONAL
para implementações em conformidade. Os clientes que não suportarem essas extensões
PODEM omitir os passos correspondentes no algoritmo de validação de caminho.
Er
Por exemplo, não é requerido que os clientes suportem a extensão policy mappings. Os
clientes que não tiverem suporte a esta extensão PODEM omitir os passos da validação
de caminho nos quais esta extensão é processada. Note que os clientes DEVEM rejeitar o
certificado se ele tiver uma extensão crı́tica não suportada.
Enquanto o perfil para certificado e LCR especificados nas seções 4 e 5 deste documento
especificam valores para campos de certificados e LCRs e para extensões que são consideradas apropriadas para ICP Internet, o algoritmo apresentado nesta seção não é limitado
está limitado a aceitação de certificados e LCRs que estão em conformidade com este perfil.
Portanto, o algoritmo apenas inclui a checagem para verificação da validade do caminho
de certificação de acordo com o X.509 e não inclui checagem para verificação da conformidade dos certificados e LCRs com o perfil. Embora o algoritmo pudesse ser estendido
para incluir checagem de conformidade com os perfis definidos nas seções 4 e 5, este perfil
RECOMENDA que não sejam incluı́dos tais verificações.
O algoritmo apresentado nesta seção valida o certificado no que diz respeito a data e hora
atual. Uma implementação em conformidade PODE também suportar validação com respeito a algum momento no passado. Note que os mecanismos não são disponibilizados para
a validação de um certificado no que diz respeito ao tempo fora do perı́odo de validade do
certificado.
Cooper, et al.
Standards Track
Tradução para Estudo
62
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
A âncora de confiança é uma entrada para o algoritmo. Não há requisito para que a mesma
âncora de confiança seja utilizada para validar todos os caminhos de certificação. Âncoras
de confiança distintas PODEM ser utilizadas para validar diferentes caminhos, como discutido adiante na seção 6.2.
es
A primeira meta da validação de caminho é verificar a associação entre o nome distinto de
um sujeito ou o seu nome alternativo e a chave pública do sujeito, como representado no
certificado alvo, baseado na chave pública de uma âncora de confiança. Na maioria dos
casos, o certificado alvo será um certificado de entidade final, mas o certificado alvo pode
ser um certificado de AC contanto que a chave pública ocorra para ser utilizada para um
propósito diferente da verificação de assinatura em um certificado de chave pública. A verificação da associação entre o nome e a chave pública do sujeito requer a obtenção de uma
sequência de certificados que dão suporte a esta associação. O procedimento executado
para obter esta sequência de certificados está fora do escopo desta especificação.
nd
Para satisfazer esta meta, o processo de validação de caminho verifica, entre outras coisas,
que um caminho de certificação prospectivo (uma sequência de n certificados) satisfaz às
seguintes condições:
(a) para todo x em {1, ..., n-1}, o sujeito do certificado x seja o emissor do certificado
x+1;
(b) o certificado 1 seja emitido pela âncora de confiança;
63
(c) o certificado n seja o certificado a ser validado (ex: o certificado alvo); e
na
(d) para todo x em {1, ..., n} o certificado era válido no tempo em questão.
Um certificado NÃO DEVE aparecer mais que uma vez em um caminho de certificação
prospectivo.
Er
Quando uma âncora de confiança for provida na forma de um certificado auto-assinado, este
certificado auto-assinado não é incluı́do como parte do caminho prospectivo de certificação.
Informação sobre âncoras de confiança são fornecidas como entrada para o algoritmo de
validação de caminho de certificação (seção 6.1.1).
Um caminho de certificação particular não deve, contudo, ser apropriado para todas as
aplicações. Portanto, uma aplicação PODE aumentar este algoritmo para um limite superior àquele estabelecido para o conjunto de caminhos válidos. O processo de validação do
caminho também determina o conjunto de polı́ticas de certificado que são válidas para este
caminho, baseado na extensão certificate policies, na extensão policy mappings, na extensão policy constraints e na extensão inhibit anyPolicy. Para alcançar isso, o algoritmo de
caminho de validação constrói uma árvore de polı́tica válida. Se o conjunto de polı́ticas de
certificado que são válidas para este caminho não estiver vazio, então o resultado será uma
árvore de polı́tica válida de profundidade n, de outra forma o resultado será uma árvore de
polı́tica válida nula.
Um certificado é auto-assinado se o mesmo DN aparecer tanto no campo subject como no
camo issuer (os dois DNs são os mesmos se eles corresponderem de acordo com as regras
especificadas na seção 7.1). Em geral, o emissor e o sujeito do certificado que formam o
caminho são diferentes para cada certificado. Embora, uma AC possa emitir um certificado
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
para ela mesma para suportar a atualização de chave ou modificação nas polı́ticas de certificado. Esses certificados auto-assinados não são contados na avaliação do comprimento
do caminho ou para restrições de nome.
Esta seção apresenta o algoritmo em quatro passos básicos: (1) inicialização, (2) processamento básico de certificado, (3) preparação para o próximo certificado, e (4) encerramento.
Os passos (1) e (4) são executados exatamente uma vez. O passo (2) é executado para
todos os certificados no caminho. O passo (3) é executado para todos os certificados no
caminho exceto para o certificado final. A figura 2 fornece um fluxograma deste algoritmo.
Er
na
nd
es
+--------+
| INÍCIO |
+--------+
|
V
+-----------------+
| Inicializaç~
ao |
+-----------------+
|
+<---------------------------+
|
|
V
|
+-------------------------+
|
| Processar Certificado |
|
+-------------------------+
|
|
|
V
|
+========================+
|
| SE Último Certificado |
|
|
no Caminho
|
|
+========================+
|
|
|
|
ENT~
AO |
| SEN~
AO
|
V
V
|
+--------------+ +---------------------+ |
| Encerramento | |
Preparar para
| |
+--------------+ | Próximo Certificado | |
|
+---------------------+ |
V
|
|
+------+
+-------------+
| PARE |
+------+
Figura 2: Fluxograma do Processamento do Caminho de Certificação
6.1.1
Entradas
Este algoritmo considera que as seguintes nove entradas são fornecidas para a lógica de
processamento do caminho:
Cooper, et al.
Standards Track
Tradução para Estudo
64
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
(a) um caminho de certificação prospectivo de comprimento n.
(b) a data/tempo atual.
(c) user-initial-policy-set: um conjunto de identificadores de polı́tica de certificado que
dá nome as polı́ticas aceitáveis para o usuário do certificado. O user-initial-policyset contém o valor especial any-policy quando o usuário não faz referência a polı́tica
de certificado.
(1) o nome confiável do emissor,
es
(d) informação sobre a âncora de confiança, descrevendo uma AC que serve como
âncora de confiança para o caminho de certificação. A informação sobre a âncora
de confiança inclui:
(2) o algoritmo confiável de chave pública,
(3) a chave pública confiável, e
nd
(4) opcionalmente, os parâmetros confiáveis de chave pública associados à
chave pública.
na
A informação da âncora confiável pode ser fornecida ao procedimento de processamento do caminho na forma de um certificado auto-assinado. Quando a informação
da âncora de confiança for fornecida na forma de um certificado, o nome no campo
subject é usado como o nome confiável do emissor e o conteúdo do campo subjectPublicKeyInfo é usado como fonte para o algoritmo confiável de chave pública
e a chave pública confiável. A informação confiável da âncora é confiável porque
foi entregue ao procedimento de processamento por algum procedimento externo
confiável. Se o algoritmo de chave pública confiável requerer parâmetros, então os
parâmetros serão fornecidos juntamente com a chave pública confiável.
(e) initial-policy-mapping-inhibit, que indica se a o mapeamento de polı́tica é permitido no caminho de certificação.
(f) initial-explicit-policy, que indica se o caminho deve ser válido para no mı́nimo uma
das polı́ticas de certificado contidas em user-initial-policy-set.
Er
(g) initial-any-policy-inhibit, que indica se o OID anyPolicy deveria ser processado
quando incluı́do no certificado.
(h) initial-permitted-subtrees, que indica para cada tipo de nome (ex: nomes distintos
X.500, endereços de email, ou endereços IP) um conjunto de sub-árvores no qual
todos os nomes de sujeito em todos os certificados do caminho DEVEM corresponder. A entrada initial-permitted-subtree inclui um conjunto para cada tipo de
nome. Para cada tipo de nome, o conjunto pode consistir de uma única sub-árvore
que inclui todos os nome de um tipo name ou uma ou mais sub-árvores nas quais
especifica um sub-conjunto de nomes do tipo name, ou o conjunto pode ser vazio.
Se o o conjunto para um tipo name for vazio, então o caminho de certificação será
considerado inválido se qualquer certificado no caminho de certificação incluir um
nome daquel tipo name.
(i) initial-excluded-subtrees, que indica para cada tipo name (ex: nomes distintos
X.500, endereços de email, ou endereços IP) um conjunto de sub-árvores dentro do
Cooper, et al.
Standards Track
Tradução para Estudo
65
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
qual cada nenhum nome de sujeito de qualquer certificado no caminho de certificação pode pertencer. A entrada initial-excluded-subtrees inclui um conjunto para
cada tipo nome. Para cada tipo nome, o conjunto pode ser vazio ou pode consistir
de uma ou mais sub-árvores onde, cada uma delas especifica um sub-conjunto de
nomes daquele tipo nome. Se o conjunto para o tipo nome for vazio, então nenhum
nome daquele tipo nome é excluı́do.
6.1.2
es
Não é demandado às implementações em conformidade suportarem o conjunto de todas
essas entradas. Por exemplo, uma implementação em conformidade pode ser designada
para validar todos os caminhos de certificação usando um valor FALSE para initial-anypolicy-inhibit.
Inicialização
A fase de inicialização estabelece onze estados variáveis baseados nas nove entradas:
nd
(a) valid policy tree: Uma árvore de polı́ticas de certificado com seus qualificadores
opcionais; cada uma das folhas da árvore representam uma polı́tica válida nesta
faze da validação do caminho de certificação. Se uma polı́tica válida existe nessa
fase da validação do caminho de certificação, a profundidade da árvore é igual
ao número de certificados na cadeia que está sendo processada. Se não existirem
polı́ticas válidas nesta fase da validação do caminho de certificação, a árvore é
definida como NULL (nula). Uma vez que a árvore seja definida como NULL, o
processamento de polı́tica é encerrado.
na
Cada nodo na valid policy tree inclui três objetos de dados: a polı́tica válida, um
conjunto de qualificadores associados à polı́tica, e um conjunto de um ou mais valores esperados para a polı́tica. Se o nodo possui a profundidade x, os componentes
do nodo têm a seguinte semântica:
(1) A valid policy é um OID único de polı́tica que representa uma polı́tica
válida para o caminho de comprimento x.
(2) O qualifier set é um conjunto de qualificadores de polı́tica associados com
a polı́tica válida do certificado x.
Er
(3) O expected policy set contém um ou mais OIDs de polı́tica que satisfaria
esta polı́tica no certificado x+1.
O valor inicial de valid policy tree é um nodo único com valid policy anypolicy,
um conjunto vazio de qualifier set, e um expected policy set com o valor anyPolicy
único. A profundidade deste nodo é considerada como zero.
A figura 3 é uma representação gráfica do estado inicial da valid policy tree. Figuras adicionais usarão este formato para descrever mudanças na valid policy tree
durante o processamento do caminho.
(b) permitted subtree: um conjunto de nomes raiz para cada tipo de nome (ex: nomes
distintos X.500, endereços de email, ou endereços IP) que definem um conjunto de
sub-árvores nas quais todos os nomes de sujeito nos certificados subsequentes no
caminho de certificação DEVEM ocorrer. Esta variável inclui um conjunto para
cada tipo de nome, e o valor inicial é initial-permitted-subtrees.
Cooper, et al.
Standards Track
Tradução para Estudo
66
PKIX Certificate and CRL Profile
RFC 5280
+--------------+
|
anyPolicy |
+--------------+
|
{}
|
+--------------+
| {anyPolicy} |
+--------------+
Maio de 2008
<------ valid_policy
<------ qualifier_set
<------ expected_policy_set
Figura 3: Valor Inicial da Variável de Estado valid policy tree
nd
es
(c) excluded subtrees: um inteiro que indica se é necessário uma valid policy tree nonNULL (não nula). O inteiro indica o número de certificados não-auto-assinados a
serem processados antes deste requisito ser imposto. Uma vez estabelecida, esta
variável pode ser decrementada, mas não pode ser incrementada. Ou seja, se um
certificado no caminho requer uma valid policy tree não nula, um certificado posterior não pode remover este requisito. Se a initial-explicit-policy estiver definida,
então o valor inicial é 0, de outra forma o valor inicial é n+1.
na
(d) inhibit anyPolicy: um inteiro que indica se o identificador de polı́tica anyPolicy
é considerado na correspondência. O inteiro indica o número de certificados nãoauto-assinados a serem processados antes do OID anyPolicy, se atribuı́do em um
certificado diferente de um certificado intermediário auto-assinado, é ignorado.
Uma vez definida, esta variável pode ser decrementada, mas não pode ser incrementada. Ou seja, se um certificado no caminho inibir o processamento de
anyPolicy, um certificado posterior não poderá permiti-lo. Se a initial-any-policyinhibit estiver definida, então o valor inicial é 0, de outra forma, o valor inicial é
n+1.
Er
(e) policy mapping: um inteiro que indica se o mapeamento de polı́tica é permitido.
O inteiro indica o número de certificados não-auto-assinados a serem processado
antes do mapeamento de polı́tica ser inibido. Um vez definida, esta variável pode
ser decrementada, mas não pode ser incrementada. Ou seja, se um certificado no
caminho especificar que o mapeamento de polı́tica não é permitido, esta definição
não poderá ser substituı́da por um certificado posterior da cadeia. Se a variável
initial-policy-mapping-inhibit for definida, então o valor inicial é 0, de outra forma
o valor inicial é n+1.
(f) working public key algorithm: é o algoritmo de assinatura digital utilizado para
verificar a assinatura do certificado. A variável working public key algorithm é
inicializada a partir do algoritmo de chave pública confiável fornecido na informação
da âncora de confiança.
(g) working public key: a chave pública usada para verificar a assinatura de um certificado. A variável working public key é inicializada com a chave pública confiável
fornecida na informação da âncora de confiança.
(h) working public key parameters: parâmetros associados à chave pública atual que
pode ser requerido para verificar uma assinatura (dependendo do algoritmo). A
variável working public key parameters é inicializada a partir dos parâmetros de
chave pública confiável fornecidos pela informação da âncora confiável.
Cooper, et al.
Standards Track
Tradução para Estudo
67
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
(i) working issuer name: o nome distinto de emissor esperado no próximo certificado
da cadeia. A variável working issuer name é inicializada com o nome de emissor
confiável fornecido na informação da âncora confiável.
(j) max path length: este inteiro é inicializado com n, é decrementado para cada
certificado não-auto-assinado do caminho, e pode ser reduzido ao valor constante
do campo path length constraint da extensão basic constraints de um certificado
de AC.
6.1.3
es
Após a conclusão das etapas de inicialização, execute as etapas básicas de processamento
de certificados especificadas em 6.1.3.
Processamento Básico de Certificado
As ações de processamento básico de caminho a serem executadas para certificado i (para
todo i em [1..n]) são listadas abaixo:
nd
(a) Verificar a informação básica do certificado. O certificado DEVE satisfazer a cada
uma das seguintes condições:
(1) A assinatura no certificado pode ser verificada usando as variáveis working public key algorithm, working public key, e working public key parameters.
(2) O perı́odo da validade do certificado inclui a data atual.
na
(3) No tempo atual, o certificado não estar revogado. Isto pode ser determinado pela obtenção da LCR apropriada (seção 6.3), pela informação de
estado, ou por outro mecanismo externo.
(4) O nome do emissor do certificado é o working issuer name.
Er
(b) Se o certificado i é auto-emitido e ele não é certificado final no caminho, pule este
passo para o certificado i. De outra forma, verifique se o nome do sujeito não se encontra dentro de qualquer nome constante na variável excluded subtree para nomes
distintos X.500, e verifique que cada um dos nomes alternativos na extensão subjectAltName (crı́tica ou não-crı́tica) não esteja em qualquer dos excluded subtrees
para este tipo nome.
(c) Se a extensão certificate policies estiver presente no certificado e a variável valid policy tree não tiver o valor Null, processe a informação de polı́tica executando
os seguintes passos, na ordem a seguir:
(1) Para cada polı́tica P não igual a anyPolicy na extensão certificate policies, tenha P-OID denotando a polı́tica P e P-Q denotando o conjunto
qualificado para a polı́tica P. Execute os seguintes passos, na ordem de
apresenta ção:
(i) Para cada nodo de profundidade i-1 na valid policy tree onde POID está no expected policy set, crie um nodo filho da seguinte
forma: defina o valid policy para P-OID, defina o conjunto qualificado para P-Q e defina o expected policy set para {P-OID}.
Cooper, et al.
Standards Track
Tradução para Estudo
68
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
Por exemplo, considere uma valid policy tree com um nodo de
profundidade i-1 onde expected policy set seja {Gold,White}. Considere que as polı́ticas de certificado Gold e Silver apareçam na
extensão certificate policies do certificado i. A polı́tica Gold corresponde, mas a polı́tica Silve não. Esta regra criará um nodo
filho, de profundidade i, para a polı́tica Gold. O resultado é mostrado na figura 4.
es
+---------------+
|
Red
|
+---------------+
|
{}
|
+---------------+
| {Gold, White} |
+---------------+
|
|
|
V
+---------------+
|
Gold
|
+---------------+
|
{}
|
+---------------+
|
{Gold}
|
+---------------+
nd
nodo de profundidade i-1
nodo de profundidade i
na
69
Figura 4: Processamento de uma Correspondência Exata
Er
(ii) Se não ocorreu nenhuma correspondência no passo (i) e a valid policy tree inclui um nodo de profundidade i-1 com a valid policy igual a anyPolicy, crie um nodo filho com os seguintes valores:
defina a variável valid policy para P-OID, o conjunto qualificado
para P-Q, e o expected policy set para {P-OID}.
Por exemplo, considere uma valid policy tree com um nodo de
profunidade i-1 onde o valor de valid policy seja anyPolicy. Considere que as polı́ticas de certificado Gold e Silver aparecem na
extensão certificate policies do certificado i. A polı́tica Gold não
tem um qualificador, mas a polı́tica Silver possui o qualificador
Q-Silver. Se Gold e Silver corresponderem em (i) acima, eta regra
criará dois nodos filhos de profundidade i, um para cada polı́tica.
O resultado é mostrado na figura 5.
(2) Se a extensão certificate policies incluir a polı́tica anyPolicy com o qualificador definido AP-Q e ou (a) inhibit anyPolicy é maior que 0 ou (b) i<n
e o certificado for auto-emitido, então:
Para cada nodo no valid policy tree de profundidade i-1, para cada valor
na expectec policy set (incluindo anyPolicy) que não apareça em um nodo
filho, crie um nodo filho com os seguintes valorres: defina valid policy com
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
nd
es
+---------------+
|
anyPolicy
|
+---------------+
|
{}
|
+---------------+ nodo de profundidade i-1
| {anyPolicy} |
+---------------+
/
\
/
\
/
\
/
\
+---------------+
+---------------+
|
Gold
|
|
Silver
|
+---------------+
+---------------+
|
{}
|
|
{Q-Silver} |
+---------------+ nodo de
+---------------+
|
{Gold}
| profundidade i |
{Silver}
|
+---------------+
+---------------+
Figura 5: Processamento Polı́ticas Não-Correspondentes Quado um Nodo Folha Especifica
anyPolicy
o valor de expected policy set no nodo pai, defina qualifier set para APQ, e defina expected policy set para o valor de valid policy para este nodo.
na
Por exemplo, considere uma valid policy tree com um nodo de profundidade i-1 onde expected policy ser é {Gold, Silver}. Considere que anyPolicy aparece na extensão certificate policies do certificado i sem qualificadores de polı́tica, mas Gold e Silver não aparecem. Esta regra criará
dois nodos filhos de profundidade i, um para cada polı́tica. O resultado é
mostrado abaixo, na figura 6.
Er
(3) Se existir um nodo na valid policy tree de profundidade i-1 ou menor se
qualquer nodo filho, apague este nodo. Repita este passo até que não
existe nodos de profundidade i-1 ou menor sem filho.
Por exemplo, considere oa valid policy tree mostrada na figura 7 abaixo.
Os dois nodos na profundidade i-1 que estão marcados com um “X” não
têm filhos, e eles são apagados. Aplicando esta regra à árvore resultante
causará que os nodos na profundidade i-2 que estão marcados com “Y”
sejam apagados. Na árvore resultante, não ocorre nodos de profundidade
i-1 ou menor sem filhos, e este passo é finalizado.
(4) Se a extensão certificate policies não estiver presente, defina a variável
valid policy tree como NULL.
(5) verifique que ou explicit policy seja maior que o ou que valid policy tree
não seja igual a NULL.
Se qualquer dos passos (a), (b), (c), ou (f) falhar, o procedimento terminará, retornando um indicador de falha e uma razão apropriada.
Cooper, et al.
Standards Track
Tradução para Estudo
70
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
nd
es
+----------------+
|
anyPolicy
|
+----------------+
|
{}
|
+----------------+ nodo de profundidade i-1
| {Gold, Silver} |
+----------------+
/
\
/
\
/
\
/
\
+---------------+
+---------------+
|
Gold
|
|
Silver
|
+---------------+
+---------------+
|
{}
|
|
{}
|
+---------------+ nodo de
+---------------+
|
{Gold}
| profundidade i |
{Silver}
|
+---------------+
+---------------+
Figura 6: Processamento Polı́ticas Não-Correspondentes Quando a Extensão Certificate
Policies Especifica anyPolicy
Se i não for igual a n, continue executando os passos preparatórios listados na seção
6.1.4. Se i for igual a n, execute o passo de encerramento listado na seção 6.1.5.
Er
na
+----------------+
|
anyPolicy
|
nodo de profundidade i-3
+----------------+
/
|
\
/
|
\
/
|
\
+------------+ +------------+ +------------+
|
| |
| |
Y
| nodos de
+------------+ +------------+ +------------+ profundidade i-2
/ \
|
|
/
\
|
|
/
\
|
|
+------------+ +------------+ +------------+ +------------+
|
| |
| |
| |
X
| nodos de
+------------+ +------------+ +------------+ +------------+ profundidade i-1
|
/
|
\
|
/
|
\
|
/
|
\
+------------+ +------------+ +------------+ +------------+
|
| |
| |
| |
X
| nodos de
+------------+ +------------+ +------------+ +------------+ profundidade i
Figura 7: Podando a valid policy tree
Cooper, et al.
Standards Track
Tradução para Estudo
71
PKIX Certificate and CRL Profile
6.1.4
RFC 5280
Maio de 2008
Preparação para o Certificado i+1
Para preparar o processamento do certificado i+1, execute os seguintes passos para o certificado i:
(a) Se a extensão policy mappings estiver presente, verifique que o valor especial anyPolicy não apareça como um issuerDomainPolicy ou um subjectDomainPolicy.
(b) Se a extensão policy mappings estiver presente, então para cada issuerDomainPolicy ID-P na extensão policy mappings:
es
(1) Se a variável policy mapping for maior que 0, para cada nodo na valid policy tree de profundidade i onde ID-P é valid policy, defina expected policy set com o conjunto dos valores subjectDomainPolicy que sejam
especificados como equivalente ao ID-P pela extensão policy mappings.
nd
Se nehum nodo de profundidade i na valid policy tree tiver uma valid policy
de ID-P mas existir um nodo de profundidade i com uma valid policy com
valor anyPolicy, então crie um nodo filho de um nodo de profundidade i-1
que tenha o valid policy com valor anyPolicy seguindo:
na
(i) defina a valid policy para ID-P;
(ii) defina o qualifier set para o conjunto de qualificadores da polı́tica
anyPolicy na extensão polı́ticas de certificado i, e
(iii) defina a expect policy set com o conjunto de valores subjectDomainPoliciy que são especificados como equivalentes a ID-P pela
extensão policy-mappings.
(2) se a variável policy mapping for igual a 0:
72
Er
(i) apague cada nodo de profundidade i na valid policy tree onde IDP seja a valid policy.
(ii) Se existir um nodo na valid policy tree de profundidade i-1 ou
menor sem nenhum nodo filho, apague este nodo. Repita este
passo até que não existam nodos de profundidade i-1 ou menor
sem nodos filhos.
(c) Atribua o nome do sujeito do certificado a working issuer name.
(d) Atribua subjectPublicKey do certificado a working public key.
(e) Se o campo subjectPublicKeyInfo do certificado tiver um campo algorithm com
parâmetros null ou os parâmetros forem omitidos, atribua os parâmetros à variável
working public key parameters.
Se o campo subjectPublicKeyInfo do certificado tiver um campo algorithm com
parâmetros null ou os parâmetros forem omitidos, compare o campo subjectPublicKey algorithm ao working public key algorithm. Se o campo subjectPublicKey
algorithm do certificado e o working public key algorithm forem diferentes, defina
working public key parameters como null.
(f) Atribua o algorithm subjectPublicKey do certificado à variável
working public key algorithm.
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
(g) Se a extensão name constraints estiver incluı́da no certificado, modifique as variáveis permitted subtree e excluded subtrees da seguinte forma:
(1) Se permittedSubtrees estiver presente no certificado, defina a variável de
estado permitted subtrees a intersecção do seu valor prévio e o valor indicado no campo extensão. Se permittedSubtrees não incluir um tipo
nome particular, a variáveis de estado permitted subtrees não é modificada para este tipo de nome. Por exemplo, a intersecção de example.com
e foo.example é foo.example.com. E a intersecção de example.com e example.net é um conjunto vazio..
nd
es
(2) Se excludedSubtrees estiver presente no certificado, defina a variável de
estado excluded subtrees como a união do seu valor prévio e o valor indicado no campo extensão. Se excludedSubtrees não inclui um tipo nome
particular, a variável de estado excluded subtrees não é modificada para
este tipo nome. Por exemplo, a união dos espaços de nome example.com e
foo.example.com é example.com. E a união de example.com e example.net
seria os dois espaços de nome.
(h) Se o certificado i não for auto-emitido:
(1) Se explicit policy não for 0, decremente explicit policy de 1.
(2) Se policy mapping não for 0, decremente policy mapping de 1.
(3) Se inhibit anyPolicy não for 0, decremente inhibit anyPolicy de 1.
na
(i) Se a extensão policy constraints estiver incluı́da no certificado, modifique as variáveis de estado explicit policy e policy mapping da seguinte forma:
(1) Se requireExplicitPolicy estiver presente e for menor que explicit policy,
defina explicit policy com o valor de requireExplicitPolicy.
(2) Se inhibitPolicyMapping estiver presente e for menor que policy mapping,
defina policy mapping com o valor de inhibitPolicyMapping.
Er
(j) Se a extensão inhibitAnyPolicy estiver incluı́da no certificado e for menor que
inhibit anyPolicy, defina inhibit anyPolicy com o valor de inhibitAnyPolicy.
(k) Se o certificado i tiver a versão 3 de certificado, verifique se a extensão basicConstraints está presente e que cA tem valor TRUE. (Se o certificado i for versão 1
ou versão 2, então a aplicação DEVE ou verificar se o certificado i é um certificado de AC através de meios externos ou rejeitar o certificado. Implementações
em conformidade podem escolher rejeitar todas as versões 1 e 2 em certificados
intermediários.)
(l) Se o certificado não tiver sido auto-emitido, verificar se max path lenght é maior
que 0 e decrementar max path length de 1.
(m) Se pathLenConstraints estiver presente no certificado e for menor que max path length, defina max path lenght com o valor de pathLenConstraint.
(n) Se a extensão key usage estiver presente, verifique se o bit keyCertSign está ativado.
(o) Reconhecer e processar qualquer outra extensão crı́tica presente no certificado.
Processar qualquer outra extensão não-crı́tica presente no certificado, que seja
relevante ao processamento do caminho.
Cooper, et al.
Standards Track
Tradução para Estudo
73
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
Se as verificações (1), (k), (l), (n) ou (o) falharem, o procedimento é finalizado, retornando
uma indicação de falha e uma razão apropriada.
Se (a), (k), (l), (n), e (o) forem completadas com sucesso, incremente i e execute o processamento básico de certificado especificado na seção 6.1.3.
6.1.5
Procedimento de Encerramento
Para completar o processamento do certificado alvo, execute os passos para o certificado n:
es
(a) Se explicit policy não for 0, decremente explicit policy de 1.
(b) Se a extensão policy contraints estiver incluı́da no certificado e requireExplicitPolicy estiver presente e tiver o valor de 0, defina a variável de estado explicit policy
com o valor 0.
(c) Atribua o campo subjectPublicKey do certificado à variável working public key.
nd
(d) Se o campo subjectPublicKeyInfo do certificado tiver um campo algorithm com parâmetros null (nulos) ou os parâmetros forem omitidos, compare subjectPublicKey
algorithm do certificado com a variável working public key algorithm. Se o campo
subjectPublicKey algorithm do certificado e a variável working public key algorithm
forem diferentes, defina a variável working public key parameters como null.
(e) Atribua o valor de subjectPublicKey algorithm do certificado à variável working public key algorithm.
na
(f) Reconheça e processe qualquer outra extensão crı́tica presente no certificado n.
Processe qualquer outra extensão não-crı́tica presente no certificado n, que seja
relevante ao processamento do caminho.
(g) Calcule a intersecção de valid policy tree e user-initial-policy-set, da seguinte forma:
(i) Se a valid policy tree for NULL, a intersecção é NULL.
Er
(ii) Se a valid policy não for NULL e a user-initial-policy-set for any-policy, a
intersecção será a valid policy tree completa.
(iii) Se a valid policy tree não for NULL e a user-initial-policy-set não for anypolicy, calcule a intersecção de valid policy tree e user-initial-policy-set
conforme:
1. Determine o conjunto de polı́ticas de nodos cujos nodos pais tenham uma variável valid policy do tipo anyPolicy. Este é o valid policy node set.
2. Se o valid policy de qualquer nodo no valid policy node set não
estiver em user-initial-policy-ser e não for anyPolicy, apague este
nodo e todos os nodos filhos.
3. Se valid policy tree inclui um nodo de profundidade n com o valid policy com valor anyPolicy e user-initial-policy-ser não for anypolicy, execute os seguintes passos:
a. Defina P-Q para o qualifier set no nodo de profundidade
n com valid policy igual a anyPolicy.
Cooper, et al.
Standards Track
Tradução para Estudo
74
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
es
b. Para cada P-OID no user-initial-policy-set que não for
o valid policy de um nodo no valid policy node set, crie
um nodo filho cujo parente seja o nodo de profundidade
n-1 com valid policy igual a anyPolicy. Defina os valores
no nodo filho como a seguir: defina o valid policy para
P-OID, defina o qualifier set para P-Q, e defina a expected policy ser para P-OID.
c. Apague o nodo de profundidade n com valid policy igual
a anyPolicy.
4. Se existir um nodo na valid policy tree de profundidade n-1 ou
menor sem qualquer nodo filho, apague este nodo. Repetir este
passo ate que não existam nodos de profundidade n-1 ou menor
sem filhos.
6.1.6
nd
Se (1) o valor da variável explicit policy é maior que zero ou (2) o valor da variável valid policy tree não é NULL, então o processamento do caminho obteve sucesso.
Saı́das
Se o processamento do caminho obteve sucesso, o procedimento termina, retornando um indicador de sucesso junto com o valor final das variáveis valid policy tree, working public key,
working public key algorithm, e working public key parameters.
6.2
Uso do Algoritmo de Validação de Caminho
Er
na
O algoritmo de validação de caminho descreve o processo de validação de um único caminho
de certificação. Embora cada caminho de certificação começe com uma âncora de confiança
especı́fica, não há exigência de que todos os caminhos de certificação validados por um
sistema particular compartilhem a mesma âncora de confiança. A seleção de uma ou mais
ACs confiáveis é uma decisão local. Um sistema pode fornecer qualquer uma das suas ACs
confiáveis como a âncora de confiança para um caminho particular. As entradas para o
algoritmo de validação de caminho podem ser diferente para cada caminho. As entradas
utilizadas para processar um caminho podem refletir requisitos especı́ficos da aplicação ou
limitações na confiança atribuı́da uma âncora de confiança particular. Por exemplo, uma
AC confiável pode ser confiável apenas para um determinada polı́tica de certificado. Esta
restrição pode ser expressa através das entradas para o procedimento de validação de caminho.
Uma implementação PODE aumentar o algoritmo apresentado na seção 6.1 para limitar
ainda mais o conjunto de caminhos de certificação válidos que comecem com uma determinada âncora de confiança. Por exemplo, uma implementação PODE modificar o algoritmo
para aplicar uma restrição de comprimento de caminho a uma determinada âncora durante a fase de inicialização, ou a aplicação PODE ter como requisito a presença de uma
determinada forma de nome alternativo no certificado alvo, ou a aplicação PODE impor
como requisitos, extensões especı́ficas para a aplicação. Assim, o algoritmo de validação
de caminho apresentado na seção 6.1 define as condições mı́nimas para um caminho ser
considerado válido.
Quando uma AC distribuir certificados auto-assinados para especificar informação da âncora de confiança, as extensões do certificado podem ser usadas para especificar as entradas
Cooper, et al.
Standards Track
Tradução para Estudo
75
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
6.3
es
recomendadas para a validação de caminho. Por exemplo, uma extensão policy constraints
poderia ser incluı́da no certificado auto-assinado para indicar que os caminhos que começarem com esta âncora de confiança deveria ser confiável apenas para polı́ticas especı́ficas.
De maneira similar, uma extensão name constraints poderia ser incluı́da para indicar que
os caminhos começando com esta âncora de confiança deveriam ser confiáveis apenas para
determinados espaços de nome. O algoritmo de validação de caminho apresentado na seção 6.1 não assume que a informação da âncora de confiança é fornecida em certificados
auto-assinados e não especifica regras de processamento para informação adicionais incluı́das em tais certificados. As implementações que usarem certificados auto-assinados para
especificar informação sobre âncora de confiança estão livres para processar ou ignorar esta
informação.
Validação de LCR
nd
Esta seção descreve os passos necessários para determinar se um certificado está revogado
quando LCRs são o mecanismo de revogação utilizado pelo emissor do certificado. As implementações em conformidade que suportarem LCRs não obrigadas a implementarem este
algoritmo, mas elas DEVEM ser funcionalmente equivalentes ao comportamento externo resultante deste procedimento, quando processarem LCRs que são emitidas em conformidade
com este perfil. Qualquer algoritmo pode ser utilizado por determinada implementação,
desde que derivem o resultado correto.
na
Esta algoritmo considera que todas as LCRs necessárias estarão disponı́veis em uma cache
local. Além disso, se o tempo da próxima atualização de LCR tiver passado, o algoritmo
assume que um mecanismo buscará a LCR atual e a colocará na cache de LCR local.
Este algoritmo define um conjunto de entradas, um conjunto de variáveis de estado, e
passos de processamento que são executados para cada certificado do caminho. A saı́da do
algoritmo é o estado de revogação do certificado.
6.3.1
Entradas de Revogação
Para dar suporte ao processo de revogação, o algoritmo precisa de duas entradas:
Er
(a) certificado: O algoritmo precisa do número serial do certificado e do nome do emissor para determinar se o certificado está em uma determinada LCR. A extensão
basicConstraints é utilizada para determinar se o certificado fornecido está associado a uma AC ou a uma entidade final. Se presente, o algoritmo usa as extensões
cRLDistributionPoints e freshestCRL para determinar o estado de revogação.
(b) use-deltas: entrada booleana que determina se serão aplicadas LCRs delta à LCR.
Para suportar o processamento de LCR, o algoritmo requer as seguintes variáveis de estado:
(a) reasons mask: Esta variável contém o conjunto de razões de revogação suportas
pelas LCRs e LCRs delta processadas até o agora. Os membros legais do conjunto
são as possı́veis razões de revogação menos aqueles não especificados: keyCompromise, cACompromise, affiliationChanged, superseded, cessationOfOperation, certificateHold, privilegeWithdrawn, and aACompromise. O valor especial all-reasons
é usado para denotar o conjunto de todos os membros integrantes. Esta variável é
inicializada com um conjunto vazio.
Cooper, et al.
Standards Track
Tradução para Estudo
76
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
(b) cert status: Esta variável contém o estado do certificado. A esta variável pode
ser atribuı́do um dos seguintes valores: unspecified, keyCompromise, cACompromise, affiliationChanged, superseded, cessationOfOperation, certificateHold, removeFromCRL, privilegeWithdrawn, aACompromise, o valor especial UNREVOKED,
ou o valor especial UNDETERMINED. Esta variável é inicializada com o valor especial UNREVOKED.
(c) interim reasons mask: Esta contém o conjunto de razões de revogação suportado
pela LCR ou LCR delta que está sendo processada no momento atual.
6.3.2
es
Nota: Em alguns ambientes, não é necessário verificar todos os códigos razão. Por exemplo, alguns ambientes estão relacionados apenas ao cACompromid e keyCompromise para
certificados de AC. Este algoritmo verifica todos os códigos razão. Processamento adicional
e variáveis de estado podem ser necessário para limitar a verificação a um subconjunto dos
códigos razão.
Processamento de LCR
nd
Este algoritmo começa assumindo que o certificado não está revogado. O algoritmo verifica
um ou mais LCRs até que o estado do certificado seja determinado como revogado ou que
um número suficiente de LCRs tenham sido verificadas para cobrir todos os códigos razão.
Para cada ponto de distribuição (DP) na extensão CRL distribution points do certificado,
para cada LCR correspondente na cache local, enquento ((reasons mask não for all-reasons)
e (cert status for UNREVOKED)) execute o seguinte:
na
(a) Atualize a cache de LCR local obtendo uma LCR completa, uma LCR delta, conforme necessário:
(1) Se o tempo atual é após o valor do campo next update da LCR, então faça
uma das seguintes opções:
Er
(i) Se use-delta estiver ativado e o certificado ou a LCR tiver a extensão freshest CRL, obtenha a LCR delta com o valor next update
que seja após a data atual e possa ser utilizado para atualizar a
LCR armazenada no cache local, como especificado na seção 5.2.4.
(ii) Atualize a cache de LCR local com a LCR completa atual, verifique se o tempo atual é anterior ao valor de next update da nova
LCR, e continue o processamento com a nova LCR. Se use-deltas
estiver ativado e o certificado ou a LCR tiver a extensão freshest
CRL, então obtenha a LCR delta atual que pode ser usada para
atualizar a nova LCR completa gravada na cache local, como especificado na seção 5.2.4.
(2) Se o tempo atual é anterior ao valor do campo next update, use-deltas
estiver ativado, e o certificado ou a LCR tiver a extensão freshest CLR,
então obtenha a LCR delta atual que pode ser usada para atualizar a LCR
completa gravada na cache local, como especificado na seção 5.2.4.
(b) Verifique o emissor e o escopo da LCR completa da seguinte forma:
(1) Se o DP inclui cRLIssuer, então verifique se o campo issuer na LCR completa corresponde ao cRLIssuer do DP e que a LCR completa contém uma
Cooper, et al.
Standards Track
Tradução para Estudo
77
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
extensão issuig distribution point com o campo booleano indirectCRL ativado. Se outra forma, verifique que o campo CRL issuer corresponde ao
ao campo certificate issuer.
(2) Se a LCR completa tiver a extensão de LCR issuing distribution point
(IDP), verifique o seguinte:
nd
es
(i) Se distribution point name estiver presente na extensão IDP da
LCR e o campo distribution estiver presente na DP, então verifique
que um dos nomes da IDP corresponde a um dos nomes da DP.
Se o distribution point name estiver presente na extensão IDP da
LCR e o campo distribution for omitido na DP, então verifique
que um dos nomes na IDP corresponde a um dos nomes no campo
cRLIssuer da DP.
(ii) Se o campo booleano onlyContainsUserCerts estiver atribuı́do na
extensão IDP da LCR, verifique se o certificado não inclui a extensão basic contraints como o campo booleano cA ativado.
(iii) Se o campo booleano onlyContainsCACerts estiver atribuı́do na
estensão IDP da LCR, verifique se o certificado inclui a extensão
basic constraints com o campo booleano cA ativado.
(iv) Verifique que o campo booleano onlyContainsAttributeCerts não
está ativado.
(c) Se use-deltas estiver ativado, verifique o usuário e o escopo da LCR delta da seguinte forma:
na
(1) Verifique se delta CRL issuer corresponde a complete CRL issuer.
(2) Se a LCR completa inclui a extensão de LCR issuing distribution point
(IDP), verifique se a LCR delta contém uma extensão de LCR IDP. Se a
LCR completa omite a extensão IDP da LCR, verifique se a LCR delta
também omite a extensão IDP da LCR .
(3) Verifique se a extensão authority key identifier da LCR delta corresponde
à extensão authority key identifier da LCR completa.
Er
(d) Processe a variável interim reasons mask para esta LCR da seguinte forma:
(1) Se a extensão issuing distribution point da LCR estiver presente e incluir
onlySomeReasons e a DP incluir reasons, então defina interim reasons mask
com a intersecção de reasons da DP e onlySomeReasons da extensão IDP
da LCR.
(2) Se a extensão IDP da LCR incluir onlySomeReasons, mas a DP omitir reasons, então defina interim reasons mask com o valor de onlySomeReasons
da extesnão IDP da LCR.
(3) Se a estensão IDP da LCR não estiver presente ou omitir onlySomeReasons, mas a DP incluir reasons, então defina interim reasons mask com o
valor de reasons da DP.
(4) Se a extensão IDP da LCR não estiver presente ou omitir onlySomeReasons, e DP omitir reasons, então defina interim reasons mask com o valor
especial all-reasons.
Cooper, et al.
Standards Track
Tradução para Estudo
78
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
(e) Verifique se interim reasons mask inclui uma ou mais razões que não estão incluı́das
na reasons mask.
(f) Obtenha e valide o caminho de certificação para o emissor da LCR completa. A
âncora de confiança para o caminho de certificação DEVE ser a mesma âncora de
confiança usada para validar o certificado alvo. Se a extensão key usage estiver
presente no campo issuer do certificado do emissor da LCR, verifique se o bit
cRLSign está ativado.
(g) Valide a assinatura da LCR completa usando a chave pública validada no passo
(f).
es
(h) Se use-deltas estiver ativado, então valide a assinatura da LCR delta usando a
chave pública validada no passo(f).
(i) Se use-deltas estiver ativado, procure pelo certificado na LCR delta. Se uma entrada correspondente ao número serial e emissor for encontrada, como descrito no
item 5.3.3, então atribua a cert status variable a razão indicada, da seguinte forma:
nd
(1) Se a extensão reason code da entrada da LCR estiver presente, atribua à
variável cert status o valor de reason code extensão da entrada da LCR.
(2) Se a extensão reason code da entrada da LCR não estiver presente, atribua
à variável cert status o valor unspecified.
na
(j) Se (cert status igual a UNREVOKED), então procure pelo certificado na LCR
completa. Se uma entrada for encontrada que corresponda ao emissor do certificado
e número serial, como descrito na seção 5.3.3, então atribua à variável cert status
a razão indicada, como descrito no passo (i).
(k) Se (cert status igual a removeFromCRL), então atribua à variável cert status o
valor UNREVOKED.
(l) Atribua à variável de estado reason mask a união dos seus valores anteriores e o
valor da variável de estado interim reasons mask.
Er
Se ((reasons mask igual a all-reasons) OU (cert status não for UNREVOKED)), então o
estado de revogação foi determinado, então retorne cert status.
Se o estado de revogação não tiver sido determinado, repita o processo acima com qualquer
LCR disponı́vel não especificada em distribution point, mas emitida pelo emissor do certificado. Para o processamento de tal LCR, considere um DP com tanto o campo reasons
como o campo cRLIssuer omitidos e um distribution point name igual ao campo issuer do
certificado. Ou seja, a sequência de names em fullName é criada a partir, tanto campo
issuer do certificado como da extensão issuerAltName. Após processar tais LCRs, se o
estado de revogação ainda não tiver sido determinado, então retorne UNDETERMINED
na variável de estado cert status.
7
Regras de Processamento para Nomes Internacionalizados
Nomes internacionalizados podem ser encontrados em campos de númerosos certificados
e LCR e extensões, incluindo nomes distintos, nome internacionalizados de domı́nios, endereços de correio eletrônico, e identificadores de recursos internacionalizados (IRIs). O
Cooper, et al.
Standards Track
Tradução para Estudo
79
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
armazenamento, comparação e apresentação deste tipo de nome requer um cuidado especial. Alguns caracteres pode ser codificados de diversas formas. O mesmo nome poderia ser
representado em diversas codificações (ex: ASCII ou UTF8). Esta seção estabelece requisitos de conformidade para o armazenamento e comparação para cada um desses formatos
de nome. É fornecido um guia informativo de apresentação para alguns destes formatos de
nome.
7.1
Nomes Internacionalizados em Distinguished Names
nd
es
A representação de nomes internacionalizados em nomes distintos (distinguished names) é
tratada nas seções 4.1.2.4, Issuer Names, e 4.1.2.6, Subject Name. Atributos padrão para
nomes, tais como common nem, empregam o tipo DirectoryString, que suporta nomes internacionalizados através de uma variedade de codificações linguı́sticas. Implementações em
conformidade DEVEM suportar UTF8String e PrintableString. A RFC 3280 requer apenas
comparações binárias de valores de atributos codificados em UTF8String, entretanto, esta
especificação requer um tratamento mais abrangente para comparação. Implementações
podem encontrar certificados e LCRs com nomes codificados usando TeletexString, BMPString, ou UniversalString, mas o suporte a estas codificações é OPCIONAL.
na
Implementações em conformidade DEVEM usar o perfil LDAP StringPrep (incluindo o
tratamento de espaço insignificante), como especificado em [RFC4518], como base para a
comparação de atributos de nomes distintos codificados em PrintableString ou UTF8String.
Implementações em conformidade DEVEM suportar comparações de nome usando caseIgnoreMatch. Suporte a tipos de atributo que usam outras regras de correspondência equalitativa é opcional.
Antes de comparar nomes usando a regra caseIgnoreMatch, implementações em conformidade DEVEM executar o algoritmo de preparação em seis-passos do string, descrito em
[RFC4518] para cada atributo do tipo DirectoryString com os seguintes esclarecimentos:
∗ No passo 2, Map, o mapeamento deverá incluir caixa dobrada como especificado no
Appendix B.2 de [RFC3454].
Er
∗ No passo 6, Insignificant Character Removal, executa compressão de espaço branco
como especificado na seção 2.6.1, Insignificant Space Handling, de [RFC4518].
Quando executar o algoritmo de preparação de string, os atributos DEVEM ser tratados
como valores armazenados.
Dois atributos de nome correspondem se os tipos atributo forem os mesmos e os valores
dos atributos forem uma correspondência exata após o processamento com o algoritmo de
preparação de string. Dois nomes distintos relativos RDN1 e RDN2 correspondem se eles
tiverem o mesmo número de atributos de nomes e para cada atributo de nome em RDN1
existir um atributo de nome correspondente em RDN2. Sou nomes distintos DN1 e DN2
correspondem se eles tiverem o mesmo n umero de RDNs, para cada RDN em DN1 existir
um RDN correspondente em DN2, e os RDNs correspondentes aparecerem na mesma ordem
em ambos DNs. Um nome distinto DN1 está na sub-árvore definida pelo nome distinto
DN2 se DN1 tiver no mı́nimo tantos RDNs quanto DN2, e DN1 e DN2 são correspondentes
quando RDNs à direita de DN1 são ignorados.
Cooper, et al.
Standards Track
Tradução para Estudo
80
PKIX Certificate and CRL Profile
7.2
RFC 5280
Maio de 2008
Nome de Domı́nio Internacionalizados em GeneralName
Nomes de Domı́nio Internacionalizados (IDNs) podem ser incluı́dos em certificados e LCRs
nas extensões subjectAltName e issuerAltName, na extensão name constraints, na extensão
authority information access, na extensão subject information access, nas extensões CRL
distribution points, e extensão issuing distribution point. Cada uma dessas extensões usam
o tipo GeneralName; uma seleção em GeneralName é o campo dNSName, que é definido
como tipo IA5String.
es
IA5String é limitado ao conjunto de caracteres ASCII. Para acomodar nomes de domı́nio
internacionalizados na estrutura atual, implementações em conformidade DEVEM converter nomes de domı́nio internacionalizados para um formato de codificação compatı́vel com
ASCII (ACE) como especificado na seção 4 da RFC 3490 antes de incluir no campo dNSName. Especificamente, implementações em conformidade DEVEM executar a operação
de conversão especificada na seção 4 da RFC 3490, como os seguintes esclarecimentos:
nd
∗ no passo 1, o nome de domı́nio DEVERÁ ser considerado um “stored string”. Ou
seja, o rótulo AllowUnassingned NÃO DEVERÁ ser ativado;
∗ no passo 3, ativar o rótulo chamado “UseSTD3ASCIIRules”;
∗ no passo 4, processar cada rótulo com a operação “ToASCII”; e
∗ no passo 5, mudar todos os separadores de rótulo para U+002E (parada completa).
na
Quando comparar nomes DNS para igualdade, implementações em conformidade DEVEM
executar uma correspondência exata não-sensı́vel a caixa (maiúscula e minúscula) em todo
o nome DNS. Quando avaliar name constraints, implementações em conformidade DEVEM
executar correspondência exata não sensı́vel a caixa em base label-by-label. Como observado na seção 4.2.1.10, qualquer nome DNS que pode ser construı́do a partir da adição de
rótulos ao lado esquerdo do nome de domı́nio dado conforme as restrições é considerado
pertencente a sub-árvore indicada.
81
Er
Implementações em conformidade deveriam converter IDNs para Unicode antes de exibilo. Especificamente, implementações em conformidade deveriam executar a operação de
conversão especificada na seção 4 da RFC 3490, com os seguintes esclarecimentos:
∗ no passo 1, o nome de domı́nio DEVERÁ ser considerado “stored string”. Ou seja, o
rótulo AllowUnassigned NÃO DEVE ser ativado;
∗ no passo 3, ative o rótulo chamado “UseSTD3ASCIIRules”;
∗ no passo 4, processe cada rótulo com a operação “ToUnicode”; e
∗ pule o passo 5.
Nota: Implementações devem prever requisitos maiores de espaço para IDNs. Um rótulo
IDN ACE começará com quatro caracteres adicionais“xn–”e pode exigir até cinco caracteres
ASCII para especificar um único caractere internacional.
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
7.3
RFC 5280
Maio de 2008
Nomes de Domı́nio Internacionalizados em Distinguished Names
es
Nome de Domı́nio também podem ser representados como nomes distintos usando componentes domı́nio no campo subject, no campo issuer, na extensão subjectAltName, ou na
extensão issuerAltName. Da mesma forma do dNSName no tipo GeneralName, o valor
deste atributo é definido como um IA5String. Cada atributo domainComponent representa
um rótulo único. Para representar um rótulo de um IDN no nome distinto, a implementação DEVE executar a conversão “ToASCII” especificada na seção 4.1 da RFC 3490. O
rótulo DEVERÁ ser considerado um “stored string”. Ou seja, o indicador AllowUnassigned
NÃO DEVERÁ ser ativado.
Implementações em conformidade deverão o executar correspondência exata não-sensı́vel a
caixa do caractere (maiúscula/minúscula) quando comparar atributos domainComponente
em nomes distintos, como descrito na seção 7.2.
7.4
nd
As implementações deveriam converter rótulos ACE para Unicode antes de exibi-los. Especificamente, implementações em conformidade deveriam executar a operação de conversão
“ToUnicode” especificada, como descrita na seção 7.2, em cada rótulo ACE antes de exibir
o nome.
Identificadores de Recurso Internacionalizados
Er
na
Identificadores de Recurso Internacionalizados (IRIs) são os complementos internacionalizados para Identificador de Recurso Uniforme (URI). IRIs são sequências de caracteres do
conjunto de caracteres ASCII. [RFC3987] define o mapeamento de IRIs para URIs. Enquanto IRIs não são codificados diretamente em qualquer campo de certificado ou extensão,
seus URIs podem mapeados são incluı́dos em certificados e LCRs. URIs podem aparecer
nas extensões subjectAltName e issuerAltName, na extensão name constraints, na extensão
authority information access, na extensão subject information access, na extensão issuing
distribution point, e na extensão de LCR distribution points. Cada uma dessas extensões
usam o tipo GeneralName; URIs são codificadas no campo uniformResourceIdentifier em
GeneralName, que é definido como um tipo IA5String.
Para comodar IRIs na estrutura atual, implementações em conformidade DEVEM mapear
IRIs para URIs como especificado na seção 3.1 de [RFC3987], com os seguintes esclarecimentos:
∗ no passo 1, gerar a sequência UCS de caractere à partir do formato original da IRI
normalizado de acordo com NFC como especificado em Variant b (normalização de
acordo com NFC);
∗ Executar o passo 2 usando a saı́da do passo 1.
As implementações NÃO DEVEM converter o componente ireg-name antes de executar o
passo 2.
Antes das URIs puderem ser comparadas, implementações em conformidade DEVEM executar uma combinação de técnicas de normalização baseada em sintaxe e baseada em esquema descritas em [RFC3987]. Especificamente, implementações em conformidade DEVEM preparar URIs para comparação da seguinte forma:
Cooper, et al.
Standards Track
Tradução para Estudo
82
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
∗ Passo 1: Onde IRIs permitirem o uso de IDNs, aqueles nomes DEVEM ser convertido
para codificação compatı́vel ASCII como especificado na seção 7.2 acima.
∗ Passo 2: O esquema e host são normalizados para caixa baixa, como descrito na seção
5.3.2.1 de [RFC3987].
∗ Passo 3: Executar normalização percent-encoding, como especificado na seção 5.3.2.3
de [RFC3987].
es
∗ Passo 4: Executar normalização de segmento de caminho, como especificado na seção
5.3.2.4 de [RFC3987].
∗ Passo 5: Se reconhecido, a implementação DEVE executar normalização baseada em
esquema, como especificado na seção 5.3.3 de [RFC3987].
nd
Implementações em conformidade DEVEM reconhecer e executar normalização baseada
em esquema para os sequintes esquemas: ldap, http, https, e ftp. Se o esquema não for
reconhecido, o passo 5 é omitido.
Quando comparar URIs para equivalência, implementações em conformidade DEVERÃO
executar correspondência exata sensı́vel a caixa (maiúsculas/minúsculas).
As implementações deveriam converter URIs para Unicode ante de exibi-los. Especificamente, implementações em conformidade deveriam executar a operação de conversão
especificada na seção 3.2 de [RFC3987].
Endereços de Correio Eletrônico Internacionalizados
na
7.5
Er
Endereços de correio eletrônico podem ser incluı́dos em certificados e LCRs nas extensões
subjectAltName e issuerAltName, na extensão name constraints, na extensão authority
information access, na extensão subject information access, na extensão issuing distribution point, ou na extensão de LCR distribution points. Cada uma dessas extensões usa o
contrutor GeneralName; GeneralName inclui a seleção rfc822Name, que é definida como
tipo IA5String. Para acomodar endereços de correio eletrônico com nomes de domı́nio internacionalizados usando a estrutura atual, as implementações em conformidade DEVEM
converter os endereços em representações ACSII.
Onde a parte host (o domı́nio da caixa postal) tiver um nome internacionalizado, o nome
de domı́nio DEVE ser convertido de IDN para o formato de codificação compatı́vel ASCII
(ACE) como especificado na seção 7.2.
Dois endereços de email são considerados correspondentes se:
1) a parte local de cada nome tem correspondência exata, E
2) a parte host de cada nome correspondem usando uma comparação ASCII não
sensı́vel a caixa de texto(maiúscula/minúscula).
As implementações devem converter a parte host dos endereços de email internacionalizados
especificado nessas extensões para Unicode antes de exibi-los. Especificamente, implementações em conformidade deveriam executar a conversão da parte host da caixa postal como
descrito na seção 7.2.
Cooper, et al.
Standards Track
Tradução para Estudo
83
PKIX Certificate and CRL Profile
8
RFC 5280
Maio de 2008
Considerações de Segurança
A maior parte desta especificação é dedicada ao formato e conteúdo de certificados e LCRs.
Desde que os certificados e LCRs são assinados digitalmente, nenhum serviço adicional de
integridade é necessário. Nem certificados nem LCRs necessitam manter segredo, e o acesso
irrestrito e anonimo aos certificados e LCRs não tem implicações na segurança.
es
Contudo, fatores de segurança externos ao escopo desta especificação afetam a garantia
fornecida aos usuários de certificados. Esta seção destaca questões crı́ticas a serem consideradas por implementadores, administradores e usuários.
Os procedimentos executados pelas ACs e ARs para validar a associação da identidade do
sujeito com sua chave pública afetam muito a confiança que deve ser colocada no certificado.
Terceiras partes confiáveis podem querer revisar as declarações de práticas de certificação
das ACs. Isto é particularmente importante quando se emite certificados para outras ACs.
na
nd
O uso de um único par de chaves tanto para assinatura quanto para outros propósitos é
fortemente desencorajada. O uso de pares de chave separadas para assinatura e gerenciamento de chave fornece muitos benefı́cios para os usuários. As ramificações associadas a
perda ou comprometimento de uma chave de assinatura são diferentes da perda ou comprometimento de uma chave usada para gerenciamento de chaves. O uso de pares de chaves
separados permite uma resposta balanceada e flexı́vel. De maneira similar, perı́odos de
validade diferentes ou tamanhos de chave para cada par de chave pode ser apropriado em
alguns ambientes de aplicação. Infelizmente, alguns aplicativos legados (ex: Secure Sockets
Layer (SSL)), usa um único par de chave para assinatura e gerenciamento de chave.
Er
A proteção conferida às chaves privadas é um fator crı́tico de segurança. Em pequena
escala, falhas de usuários na proteção de suas chaves privadas permitira que um intruso
possa se passar por eles ou descriptografar suas informações pessoais. Em larga escala, o
comprometimento de uma chave privada de assinatura de AC pode ter efeitos catastróficos. Se um intruso obtém a chave privada e isso passa despercebido, o intruso pode emitir
certificados e LCRs falsos. A existência de certificados e LCRs falsos prejudica a confiança
no sistema. Se tal comprometimento for detectado, todos os certificados emitidos pela AC
comprometida DEVEM ser revogados, impedindo serviços entre seus usuários e usuários
de outras ACs. A reconstrução após este tipo de comprometimento será problemática, de
maneira que as ACs são alertadas a implementarem uma combinação de medidas técnicas
fortes (ex: módulos criptográficos resistentes a violaçoes) e procedimentos gerenciais apropriados (ex: segregação de responsabilidades) afim de evitar este tipo de incidente.
A perda de uma chave privada de assinatura de uma AC também pode ser problemática.
A AC não seria capaz de produzir LCRs ou executar a atualização normal de chave. As
ACs DEVERIAM manter backup seguro das chaves de assinatura. A segurança dos procedimentos de backup de chave é um fator crı́tico na prevenção do seu comprometimento.
A disponibilidade e a atualização da informação de revogação afeta o grau de confiança que
pode ser atribuı́do ao certificado. Embora os certificados expirem naturalmente, podem
ocorrer eventos durante o seu perı́odo de vida útil que negam a associação entre o sujeito e
a chave pública. Se a informação de revogação estiver desatualizada ou indisponı́vel, a confiança atribuı́da a associação fica claramente reduzida. Terceiras partes confiáveis podem
não ter capacidade para processar toda extensão crı́tica que pode aparecer em uma LCR.
Cooper, et al.
Standards Track
Tradução para Estudo
84
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
es
As ACs DEVERIAM tomar cuidados adicionais quando disponibilizarem informação de
revogação unicamente através de LCRs que contenham extensões crı́ticas, particularmente,
quando o o suporte a estas extensões não for considerado obrigatório neste perfil. Por exemplo, se a informação de revogação for fornecida usando uma combinação de LCRs delta e
LCRs completas, e as LCRs delta forem emitidas mais frequentemente que as LCRs completas, então as terceiras partes confiáveis que não puderem processar as extensões crı́ticas
relacionadas ao processamento das LCRs delta não serão capazes de obter a informação de
revogação mais recente. Alternativamente, se um LCR completa for emitida sempre que
uma LCR delta for emitida, então informação de revogação atualizada estará disponı́vel
para todas as terceiras partes. De maneira similar, as implementações do mecanismo de
validação de caminho de certificação, descrito na seção 6, que omitirem a verificação de
revogação fornece menos confiança que aqueles que possuem esse suporte.
nd
O algoritmo de validação de caminho de certificação dependem de certo conhecimento das
chaves públicas (e outra informação) sobre um ou mais ACs confiáveis. A decisão de confiar em uma AC é uma decisão importante, pois em última instância determina a confiança
atribuı́da ao certificado. A distribuição autenticada de chaves públicas de ACs confiáveis
(geralmente na forma de um certificado auto-assinado) é um processo externo crı́tico para
a segurança e que se encontra além do escopo desta especificação.
na
Além disso, onde um comprometimento de chave ou falha de AC ocorre de uma AC confiável, o usuário necessitará modificar a informação fornecida para a rotina de validação de
caminho. A seleção de muitas ACs confiáveis torna a informação sobre AC confiável difı́cil
de manter. Por outro lado, a seleção de apenas uma AC confiável poderia limitar os seus
usuários a uma comunidade fechada de usuários.
A qualidade das implementações que processam certificados também afeta o grau de confiança fornecido. O algoritmo de validação de caminho descrito na seção 6 se baseia na
integridade da informação da AC confiável, e especialmente na integridade das chaves públicas associadas às ACs confiáveis. Com a substituição das chaves públicas para as quais
um intruso detenha a chave privada, um invasor poderia enganar o usuário quanto a aceitação de certificados falsos.
85
Er
A associação entre uma chave e o sujeito do certificado não pode ser mais forte que a
implementação do módulo criptográfico e os algoritmos usados para gerar a assinatura.
Tamanhos de chaves pequenos ou algoritmos de hash frágeis limitará a utilidade de um
certificado. As ACs são incentivadas os avanços da criptologia de forma que possam aplicar
técnicas fortes de criptografia. Além disso, as ACs DEVERIAM se recusar a emitir certificados para ACs ou entidades finais que geram assinaturas fracas.
Aplicações inconsistentes de regras de comparação podem resultar na aceitação de caminhos
de certificação X.509 inválidos ou rejeição de caminhos válidos. A série de especificações
X.500 define regras para comparação de nomes distintos que requerem comparações de
strings sem considerar o tamanho do caractere, conjunto de caractere, subtração de múltiplos caracteres brancos, ou desconsiderar caracteres brancos à esquerda ou à direita. Esta
especificação relaxa estes requisitos, é necessário, no mı́nimo, suporte para comparação binária.
As ACs DEVEM codificar o nome distinto no campo subject de um certificado de AC de
maneira idêntica ao nome distinto do campo issuer nos certificados emitidos pela AC. Se as
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
ACs usarem codificações diferentes, as implementações poderão falhar no reconhecimento
de cadeias de nome para os caminhos que incluı́rem este certificado. Como consequência,
caminhos válidos poderão ser rejeitados.
es
Além disso, restrições de nome para nomes distintos DEVEM ser definidas de maneira
idêntica à codificação usada no campo subject ou na extensão subjectAltName. Caso
contrário, as restrições de nome definidas como excludedSubtrees não corresponderão e caminhos inválidos serão aceitos e as restrições de nome expressadas como permittedSubtrees
não corresponderão e caminhos válidos serão rejeitados. Para evitar a aceitação de caminhos inválidos, as AC DEVERIAM definir as restrições de nome para nomes distintos como
permittedSubtrees sempre que possı́vel.
Em geral, o uso da extensão nameConstraints para restringir uma forma de nome (ex: nomes DNS) não oferece proteção contra o uso de outras formas de nome (ex: endereço de
correio eletrônico).
na
nd
Enquanto o X.509 determina que não exista ambiguidade nos nomes, existe o risco que
duas autoridades não relacionadas emitam certificados ou LCRs embaixo do mesmo nome
de emissor. Como meio de reduzir problemas e questões de segurança relacionadas a colisões de nome de emissor, nomes de AC e emissor de LCR DEVERIAM ser formados de
maneira a reduzir a probabilidade de colisão de nomes. Implementadores deveriam levar
em conta a possı́vel existência de múltiplas ACs não relacionadas e emissores de LCR com
o mesmo nome. No mı́nimo, as implementações que validam LCRs DEVEM garantir que
o caminho de certificação de um certificado e o caminho de certificação do emissor de LCR
usado para validar o certificado terminam na mesma âncora de confiança.
Er
Enquanto a parte local de um endereço de correio eletrônico diferencia maiúsculas de minúsculas [RFC2821], os valores de atributo emailAddress não fazem distinção entre maiúsculas
e minúsculas [RFC2985]. Como resultado, existe o risco de que dois endereços de correio
eletrônico distintos sejam tratados como o mesmo endereço quando a regra de correspondência para atributo emailAddress for usada, se o servidor de email explorar a diferenciação
de maiúsculas e minúsculas da parte local da caixa postal. Os implementadores não deveriam incluir o endereço de email no atributo emailAddress quando o servidor de email que
detém aquele endereço de email tratar a parte local do endereço de email com diferenciação
entre maiúsculas e minúsculas.
Implementadores deveriam ter conhecimento dos riscos envolvidos se as extensões CRL
distribution points ou authority information access de certificados corrompidos ou LCRs
tiverem links para códigos maliciosos. Os implementadores deveriam sempre tomar as medidas de validação de dados recuperados para garantir que o dado foi formado de maneira
apropriada.
Quando os certificados incluı́rem a extensão cRLDistributionPoints com uma URI https
ou esquema semelhante, pode ser introduzido uma depedência circular. A parte confiável é forçada a executar uma validação adicional de caminho para obter a LCR desejada
para completar a validação inicial de caminho. Condições circulares também podem ser
criadas com uma URI https (ou esquema simelhante) nas extensões authorityInfoAccess ou
subjectInfoAccess. Na pior das hipóteses, esta situação pode gerar dependências insolúveis.
As ACs NÃO DEVERIAM incluir URIs que especificam https, ldaps, ou esquemas semeCooper, et al.
Standards Track
Tradução para Estudo
86
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
lhantes nas extensões. As ACs que incluem uma URI https em uma desses extensões DEVE
garantir que o certificado do servidor pode ser validado sem a informação que é apontada
pela URI. Terceiras partes confiáveis que escolherem validar o certificado do servidor obtendo a informação apontada por uma URI https nas extensões cRLDistributionPoints,
authorityInfoAccess, ou subjectInfoAccess DEVEM estar preparadas para a possibilidade
disto resultar em uma recursão infinita.
nd
es
Certificados auto-emitidos fornecem às ACs um mecanismo automatizado para indicar mudanças nas operações da AC. Em particular, certificados auto-emitidos podem ser usado
para implementar uma mudança de chaves tranquila de um par de chaves de AC não comprometidas para o próximo. Procedimentos detalhados para “atualização de chave de AC”
são especificados em [RFC4210], onde a AC protege a sua nova chave pública usando a sua
chave privada anterior e vice-versa, usando dois certificados auto-emitidos. Implementações
cliente em conformidade processarão o certificado auto-emitido e determinarão se o certificado emitido sob a nova chave pode ser confiável. Certificados auto-emitidos PODEM ser
usados para suportar outras mudanças nas operações da AC, como adições ao conjunto de
polı́ticas da AC, usando procedimentos semelhantes.
Algumas implementações legadas suportam nomes codificados em ISO 8859-1 conjunto de
caractere (LatinString) [ISO8859], mas marcam eles como TeletexString. TeletexString codificam um conjunto de caracteres maior que o definido na ISO 8859-1, mas ela codifica
alguns caracteres de maneira diferente. As regras de comparação de nome especificadas
na seção 7.1 consideram que TeletexString são codificados como o conjunto de caracteres
LatinString, possibilitando falto positivos e falso negativos.
9
Er
na
Quando strings são mapeados de representações internas para representação visual, algumas vezes dois strings distintos terão o mesma representação visual, ou representação
semelhante. Isto pode acontecer por diversas razões, incluindo o uso de glifos semelhantes
e uso de caracteres compostos (como e + ´ equivalentes a U+00E9, os caracteres coreanos
compostos, e vogais acima de consoantes agrupados em certas lı́nguas). Como resultado
dessa situação, pessoas fazendo comparação visual entre dois nomes diferentes pode pensar
que eles são os mesmos quando de fato eles não são. Também, as pessoas podem confundir
um string com outro. Emissores de certificados e terceiras partes confiáveis necessitam ter
conhecimento desta situação.
Considerações IANA
Extensões em certificados e LCRs são identificadas à partir de identificadores de objeto
(OID). Os objetos são definidos em um arco delegado pelo IANA ao PKIX Working Group.
Nenhuma ação adicional, por parte do IANA, se faz necessário para este documento ou
quaisquer atualizações antecipadas.
10
Agradecimento
Warwick Ford participou com os autores de algumas das reuniões do projeto da equipe que
dirigiu o desenvolvimento deste documento. Os esforços da equipe de design foram guiados
por contribuições de Matt Crawford, Gindin Tom, Steve Hanna, Stephen Henson, Hoffman
Paulo, Ito Takashi, Pinkas Denis, e Wen-Cheng Wang.
Cooper, et al.
Standards Track
Tradução para Estudo
87
PKIX Certificate and CRL Profile
11
11.1
RFC 5280
Maio de 2008
Referências
Referências Normativas
[RFC791]
Postel, J., “Internet Protocol”, STD 5, RFC 791, September 1981.
[RFC1034] Mockapetris, P., “Domain Names - Concepts and Facilities”, STD 13, RFC
1034, November 1987.
es
[RFC1123] Braden, R., Ed., “Requirements for Internet Hosts – Application and Support”, STD 3, RFC 1123, October 1989.
[RFC2119] Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels”,
BCP 14, RFC 2119, March 1997.
[RFC2460] Deering, S. and R. Hinden, “Internet Protocol, Version 6 (IPv6) Specification”, RFC 2460, December 1998.
nd
[RFC2585] Housley, R. and P. Hoffman, “Internet X.509 Public Key Infrastructure: Operational Protocols: FTP and HTTP”, RFC 2585, May 1999.
[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P., and
T. Berners-Lee, “Hypertext Transfer Protocol – HTTP/1.1”, RFC 2616, June
1999.
[RFC2797] Myers, M., Liu, X., Schaad, J., and J. Weinstein, “Certificate Management
Messages over CMS”, RFC 2797, April 2000.
na
[RFC2821] Klensin, J., Ed., “Simple Mail Transfer Protocol”, RFC 2821, April 2001.
[RFC3454] Hoffman, P. and M. Blanchet, “Preparation of Internationalized Strings
(“stringprep”)”, RFC 3454, December 2002.
[RFC3490] Faltstrom, P., Hoffman, P., and A. Costello, “Internationalizing Domain Names in Applications (IDNA)”, RFC 3490, March 2003.
Er
[RFC3629] Yergeau, F., “UTF-8, a transformation format of ISO 10646”, STD 63, RFC
3629, November 2003.
88
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, “Uniform Resource Identifier
(URI): Generic Syntax”, STD 66, RFC 3986, January 2005.
[RFC3987] Duerst, M. and M. Suignard, “Internationalized Resource Identifiers (IRIs)”,
RFC 3987, January 2005.
[RFC4516] Smith, M., Ed., and T. Howes, “Lightweight Directory Access Protocol
(LDAP): Uniform Resource Locator”, RFC 4516, June 2006.
[RFC4518] Zeilenga, K., “Lightweight Directory Access Protocol (LDAP): Internationalized String Preparation”, RFC 4518, June 2006.
[RFC4523] Zeilenga, K., “Lightweight Directory Access Protocol (LDAP) Schema Definitions for X.509 Certificates”, RFC 4523, June 2006.
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
[RFC4632] Fuller, V. and T. Li, “Classless Inter-domain Routing (CIDR): The Internet
Address Assignment and Aggregation Plan”, BCP 122, RFC 4632, August
2006.
ITU-T Recommendation X.680 (2002) | ISO/IEC 8824-1:2002, Information
technology - Abstract Syntax Notation One (ASN.1): Specification of basic
notation.
[X.690]
ITU-T Recommendation X.690 (2002) | ISO/IEC 8825-1:2002, Information
technology - ASN.1 encoding rules: Specification of Basic Encoding Rules
(BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules
(DER).
11.2
Referências Informativas
[ISO8859]
es
[X.680]
ISO/IEC 8859-1:1998. Information technology – 8-bit single-byte coded
graphic character sets – Part 1: Latin alphabet No. 1.
nd
[ISO10646] ISO/IEC 10646:2003. Information technology – Universal Multiple-Octet
Coded Character Set (UCS).
Davis, M. and M. Duerst, “Unicode Standard Annex #15: Unicode Normalization Forms”, October 2006, <http://www.unicode.org/reports/tr15/>.
[RFC1422]
Kent, S., “Privacy Enhancement for Internet Electronic Mail: Part II:
Certificate-Based Key Management”, RFC 1422, February 1993.
[RFC2277]
Alvestrand, H., “IETF Policy on Character Sets and Languages”, BCP 18,
RFC 2277, January 1998.
[RFC2459]
Housley, R., Ford, W., Polk, W., and D. Solo, “Internet X.509 Public Key
Infrastructure Certificate and CRL Profile”, RFC 2459, January 1999.
[RFC2560]
Myers, M., Ankney, R., Malpani, A., Galperin, S., and C. Adams, “X.509 Internet Public Key Infrastructure Online Certificate Status Protocol - OCSP”,
RFC 2560, June 1999.
Er
na
[NFC]
[RFC2985]
Nystrom, M. and B. Kaliski, “PKCS #9: Selected Object Classes and Attribute Types Version 2.0”, RFC 2985, November 2000.
[RFC3161]
Adams, C., Cain, P., Pinkas, D., and R. Zuccherato, “Internet X.509 Public
Key Infrastructure Time-Stamp Protocol (TSP)”, RFC 3161, August 2001.
[RFC3279]
Bassham, L., Polk, W., and R. Housley, “Algorithms and Identifiers for the
Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile”, RFC 3279, April 2002.
[RFC3280]
Housley, R., Polk, W., Ford, W., and D. Solo, “Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile”, RFC
3280, April 2002.
Cooper, et al.
Standards Track
Tradução para Estudo
89
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
[RFC4055] Schaad, J., Kaliski, B., and R. Housley, “Additional Algorithms and Identifiers for RSA Cryptography for use in the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile”, RFC
4055, June 2005.
[RFC4120] Neuman, C., Yu, T., Hartman, S., and K. Raeburn, “The Kerberos Network
Authentication Service (V5)”, RFC 4120, July 2005.
[RFC4210] Adams, C., Farrell, S., Kause, T., and T. Mononen, “Internet X.509 Public
Key Infrastructure Certificate Management Protocol (CMP)”, RFC 4210,
September 2005.
es
[RFC4325] Santesson, S. and R. Housley, “Internet X.509 Public Key Infrastructure
Authority Information Access Certificate Revocation List (CRL) Extension”,
RFC 4325, December 2005.
nd
[RFC4491] Leontiev, S., Ed., and D. Shefanovski, Ed., “Using the GOST R 34.10-94,
GOST R 34.10-2001, and GOST R 34.11-94 Algorithms with the Internet
X.509 Public Key Infrastructure Certificate and CRL Profile”, RFC 4491,
May 2006.
[RFC4510] Zeilenga, K., Ed., “Lightweight Directory Access Protocol (LDAP): Technical
Specification Road Map”, RFC 4510, June 2006.
[RFC4512] Zeilenga, K., Ed., “Lightweight Directory Access Protocol (LDAP): Directory
Information Models”, RFC 4512, June 2006.
na
[RFC4514] Zeilenga, K., Ed., “Lightweight Directory Access Protocol (LDAP): String
Representation of Distinguished Names”, RFC 4514, June 2006.
[RFC4519] Sciberras, A., Ed., “Lightweight Directory Access Protocol (LDAP): Schema
for User Applications”, RFC 4519, June 2006.
[RFC4630] Housley, R. and S. Santesson, “Update to DirectoryString Processing in the
Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile”, RFC 4630, August 2006.
[X.501]
[X.509]
ITU-T Recommendation X.500 (2005) | ISO/IEC 9594-1:2005, Information
technology - Open Systems Interconnection - The Directory: Overview of
concepts, models and services.
Er
[X.500]
[X.520]
Cooper, et al.
ITU-T Recommendation X.501 (2005) | ISO/IEC 9594-2:2005, Information
technology - Open Systems Interconnection - The Directory: Models.
ITU-T Recommendation X.509 (2005) | ISO/IEC 9594-8:2005, Information
technology - Open Systems Interconnection - The Directory: Public-key and
attribute certificate frameworks.
ITU-T Recommendation X.520 (2005) | ISO/IEC 9594-6:2005, Information
technology - Open Systems Interconnection - The Directory: Selected attribute types.
Standards Track
Tradução para Estudo
90
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
[X.660] ITU-T Recommendation X.660 (2004) | ISO/IEC 9834-1:2005, Information
technology - Open Systems Interconnection - Procedures for the operation of
OSI Registration Authorities: General procedures, and top arcs of the ASN.1
Object Identifier tree.
[X.683] ITU-T Recommendation X.683 (2002) | ISO/IEC 8824-4:2002, Information
technology - Abstract Syntax Notation One (ASN.1): Parameterization of
ASN.1 specifications.
es
[X9.55] ANSI X9.55-1997, Public Key Cryptography for the Financial Services Industry: Extensions to Public Key Certificates and Certificate Revocation
Lists, January 1997.
nd
Apêndice A. Estruturas e OIDs em Pseudo-ASN.1
Este apêndice descreve objectos de dado usados por componentes ICP em conformidade,
na sintaxe “como-ANS.1”. Esta sintaxe é um hı́brido da sintaxe ASN.1 1988 e 1993. A sintaxe ASN.1 1988 é expandida com os Tipo UNIVERSAL da versão 1993, UniversalString,
BMPString e UTF8String.
na
A sintaxe ASN.1 não permite a inclusão do tipo statements no módulo ASN.1, e o padrão
ASN.1 de 1993 não permite o uso dos novos tipos UNIVERSAL nos módulos usando a
sintaxe 1988. Como resultado, este módulo não está de acordo com nenhuma das versões
padrão ASN.1.
Este apêndice pode ser convertido em ASN.1 1988 substituindo as definições do Tipo UNIVERSAL com o tipo “ANY” da versão 1988.
Er
A.1 Módulo Explicitamente Rotulado, sintaxe 1988
PKIX1Explicit88 { iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) id-mod(0) id-pkix1-explicit(18) }
DEFINITIONS EXPLICIT TAGS ::=
BEGIN
-- EXPORTE TODOS --- IMPORTS NENHUM --- Tipos UNIVERSAL definidos no ASN.1 1993 e 1998
-- necessários a esta especificaç~
ao
UniversalString ::= [UNIVERSAL 28] IMPLICIT OCTET STRING
-- UniversalString é definido em ASN.1:1993
Cooper, et al.
Standards Track
Tradução para Estudo
91
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
BMPString
::= [UNIVERSAL 30] IMPLICIT OCTET STRING
-- BMPString é o subtipo de UniversalString e modela
-- o Basic Multilingual Plane da ISO/IEC 10646
UTF8String
::= [UNIVERSAL 12] IMPLICIT OCTET STRING
-- O conteúdo deste tipo está em conformidade com a RFC 3629.
-- PKIX specific OIDs
es
id-pkix OBJECT IDENTIFIER ::=
{ iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) }
-- PKIX arcs
id-qt
id-kp
id-ad
OBJECT IDENTIFIER ::= { id-pkix 1 }
-- arco para extens~
oes privadas de certificados
OBJECT IDENTIFIER ::= { id-pkix 2 }
-- arco para tipos qualificadores de polı́tica
OBJECT IDENTIFIER ::= { id-pkix 3 }
-- arco de OID para extended key purpose
OBJECT IDENTIFIER ::= { id-pkix 48 }
-- arco para descritores de acesso
nd
id-pe
na
-- policyQualifierIds for Internet policy qualifiers
id-qt-cps OBJECT IDENTIFIER ::= { id-qt 1 }
-- OID para qualificadores de Declaraç~
ao de Práticas
-- de Certificaç~
ao
id-qt-unotice OBJECT IDENTIFIER ::= { id-qt 2 }
-- OID para qualificador de notificaç~
ao de usuário
Er
-- definiç~
oes dos descritores de acesso
id-ad-ocsp
id-ad-caIssuers
id-ad-timeStamping
id-ad-caRepository
OBJECT
OBJECT
OBJECT
OBJECT
IDENTIFIER
IDENTIFIER
IDENTIFIER
IDENTIFIER
::=
::=
::=
::=
{
{
{
{
id-ad
id-ad
id-ad
id-ad
1
2
3
5
}
}
}
}
92
-- tipos de dado de atributo
Attribute
type
values
::= SEQUENCE {
AttributeType,
SET OF AttributeValue }
-- é necessário no mı́nimo um valor
AttributeType
::= OBJECT IDENTIFIER
AttributeValue
::= ANY -- DEFINED BY AttributeType
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
AttributeTypeAndValue ::= SEQUENCE {
type
AttributeType,
value
AttributeValue }
-- Arco para atributos de nome padr~
ao
id-at
es
-- atributos de nome sugeridos: Definiçoes do seguinte
-conjunto de objetos de informaç~
ao pode ser aumentada para satisfazer
-requisitos locais. Note que apagar membros deste conjunto pode
-impedir a interoperabilidade de implementaç~
oes em conformidade.
-- apresentado em pares: o AttributeType seguido pela definiç~
ao do
-tipo para o AttributeValue correspondente
OBJECT IDENTIFIER ::= { joint-iso-ccitt(2) ds(5) 4 }
id-at-name
id-at-surname
id-at-givenName
id-at-initials
id-at-generationQualifier
nd
-- Atributos de nome do tipo X520name
AttributeType
AttributeType
AttributeType
AttributeType
AttributeType
::=
::=
::=
::=
::=
{
{
{
{
{
id-at
id-at
id-at
id-at
id-at
41 }
4 }
42 }
43 }
44 }
Er
na
-- Atributos de nome do tipo X520Name:
-X520name ::= DirectoryString (SIZE (1..ub-name))
--- Expandido para evitar tipo parametrizado:
X520name
::= CHOICE {
teletexString
TeletexString (SIZE (1..ub-name)),
printableString
PrintableString (SIZE (1..ub-name)),
universalString
UniversalString (SIZE (1..ub-name)),
utf8String
UTF8String (SIZE (1..ub-name)),
bmpString
BMPString (SIZE (1..ub-name)) }
-- Atributos de nome do tipo X520CommonName
id-at-commonName
93
AttributeType ::= { id-at 3 }
-- Atributos de nome do tipo X520CommonName:
-X520CommonName ::= DirectoryName (SIZE (1..ub-common-name))
--- Expandido para evitar tipo parametrizado:
X520CommonName
::= CHOICE {
teletexString
TeletexString (SIZE (1..ub-common-name)),
printableString
PrintableString (SIZE (1..ub-common-name)),
universalString
UniversalString (SIZE (1..ub-common-name)),
utf8String
UTF8String (SIZE (1..ub-common-name)),
bmpString
BMPString (SIZE (1..ub-common-name)) }
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
-- Atributos de nome do tipo X520LocalityName
id-at-localityName
AttributeType ::= { id-at 7 }
es
-- Atributos de nome do tipo X520LocalityName:
-X520LocalityName ::= DirectoryName (SIZE (1..ub-locality-name))
--- Expandido para evitar tipo parametrizado:
X520LocalityName ::= CHOICE {
teletexString
TeletexString
(SIZE (1..ub-locality-name)),
printableString PrintableString (SIZE (1..ub-locality-name)),
universalString UniversalString (SIZE (1..ub-locality-name)),
utf8String
UTF8String
(SIZE (1..ub-locality-name)),
bmpString
BMPString
(SIZE (1..ub-locality-name)) }
-- Atributos de nome do tipo X520StateOrProvinceName
AttributeType ::= { id-at 8 }
nd
id-at-stateOrProvinceName
na
-- Atributos de nome do tipo X520StateOrProvinceName:
-X520StateOrProvinceName ::= DirectoryName (SIZE (1..ub-state-name))
--- Expandido para evitar tipo parametrizado:
X520StateOrProvinceName ::= CHOICE {
teletexString
TeletexString
(SIZE (1..ub-state-name)),
printableString
PrintableString (SIZE (1..ub-state-name)),
universalString
UniversalString (SIZE (1..ub-state-name)),
utf8String
UTF8String
(SIZE (1..ub-state-name)),
bmpString
BMPString
(SIZE (1..ub-state-name)) }
-- Atributos de nome do tipo X520OrganizationName
Er
id-at-organizationName AttributeType ::= { id-at 10 }
-- Atributos de nome do tipo X520OrganizationName:
-X520OrganizationName ::=
-DirectoryName (SIZE (1..ub-organization-name))
--- Expandido para evitar tipo parametrizado:
X520OrganizationName
::= CHOICE {
teletexString
TeletexString
(SIZE (1..ub-organization-name)),
printableString
PrintableString
(SIZE (1..ub-organization-name)),
universalString
UniversalString
(SIZE (1..ub-organization-name)),
utf8String
UTF8String
(SIZE (1..ub-organization-name)),
bmpString
BMPString
(SIZE (1..ub-organization-name)) }
Cooper, et al.
Standards Track
Tradução para Estudo
94
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
-- Atributos de nome do tipo X520OrganizationalUnitName
id-at-organizationalUnitName AttributeType ::= { id-at 11 }
nd
es
-- Atributos de nome do tipo X520OrganizationalUnitName:
-X520OrganizationalUnitName ::=
-DirectoryName (SIZE (1..ub-organizational-unit-name))
--- Expandido para evitar tipo parametrizado:
X520OrganizationalUnitName ::= CHOICE {
teletexString
TeletexString
(SIZE (1..ub-organizational-unit-name)),
printableString
PrintableString
(SIZE (1..ub-organizational-unit-name)),
universalString
UniversalString
(SIZE (1..ub-organizational-unit-name)),
utf8String
UTF8String
(SIZE (1..ub-organizational-unit-name)),
bmpString
BMPString
(SIZE (1..ub-organizational-unit-name)) }
-- Atributos de nome do tipo X520Title
na
id-at-title AttributeType ::= { id-at 12 }
Er
-- atributos de nome do tipo X520Title:
-X520Title ::= DirectoryName (SIZE (1..ub-title))
--- Expandido para evitar tipo parametrizado:
X520Title
::= CHOICE {
teletexString
TeletexString
(SIZE (1..ub-title)),
printableString
PrintableString (SIZE (1..ub-title)),
universalString
UniversalString (SIZE (1..ub-title)),
utf8String
UTF8String
(SIZE (1..ub-title)),
bmpString
BMPString
(SIZE (1..ub-title)) }
95
-- Atributo de nome do tipo X520dnQualifier
id-at-dnQualifier
X520dnQualifier
AttributeType ::= { id-at 46 }
::= PrintableString
-- Atributo de nome do tipo X520countryName (digraph do IS 3166)
id-at-countryName
X520countryName
AttributeType ::= { id-at 6 }
::= PrintableString (SIZE (2))
-- Atributo de nome do tipo X520SerialNumber
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
id-at-serialNumber
X520SerialNumber
RFC 5280
Maio de 2008
AttributeType ::= { id-at 5 }
::= PrintableString (SIZE (1..ub-serial-number))
-- Atributo de nome do tipo X520Pseudonym
id-at-pseudonym AttributeType ::= { id-at 65 }
nd
es
-- Atributo de nome do tipo X520Pseudonym:
-X520Pseudonym ::= DirectoryName (SIZE (1..ub-pseudonym))
--- Expandido para evitar tipo parametrizado:
X520Pseudonym
::= CHOICE {
teletexString
TeletexString
(SIZE (1..ub-pseudonym)),
printableString
PrintableString (SIZE (1..ub-pseudonym)),
universalString
UniversalString (SIZE (1..ub-pseudonym)),
utf8String
UTF8String
(SIZE (1..ub-pseudonym)),
bmpString
BMPString
(SIZE (1..ub-pseudonym)) }
-- Atributo de nome do tipo DomainComponent (from RFC 4519)
id-domainComponent
::= IA5String
na
DomainComponent
AttributeType ::= { 0 9 2342 19200300 100 1 25 }
-- Atributos legados
pkcs-9 OBJECT IDENTIFIER ::=
{ iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 9 }
id-emailAddress
::= IA5String (SIZE (1..ub-emailaddress-length))
Er
EmailAddress
AttributeType ::= { pkcs-9 1 }
-- tipos de dado Name -Name
::= CHOICE { -- atualmente apenas uma possibilidade -rdnSequence RDNSequence }
RDNSequence
::= SEQUENCE OF RelativeDistinguishedName
DistinguishedName
::= RDNSequence
RelativeDistinguishedName ::= SET SIZE (1..MAX) OF AttributeTypeAndValue
-- Tipo Directory string -DirectoryString
::= CHOICE {
teletexString
TeletexString
Cooper, et al.
(SIZE (1..MAX)),
Standards Track
Tradução para Estudo
96
PKIX Certificate and CRL Profile
printableString
universalString
utf8String
bmpString
RFC 5280
PrintableString
UniversalString
UTF8String
BMPString
(SIZE
(SIZE
(SIZE
(SIZE
Maio de 2008
(1..MAX)),
(1..MAX)),
(1..MAX)),
(1..MAX)) }
-- a estrutura do certificado e da LCR começa neste ponto
extensions
Version
na
subjectUniqueID
SEQUENCE {
[0] Version DEFAULT v1,
CertificateSerialNumber,
AlgorithmIdentifier,
Name,
Validity,
Name,
SubjectPublicKeyInfo,
[1] IMPLICIT UniqueIdentifier OPTIONAL,
-- quando presente, a vers~
ao DEVE ser v2 ou v3
[2] IMPLICIT UniqueIdentifier OPTIONAL,
-- quando presente, a vers~
ao DEVE ser v2 ou v3
[3] Extensions OPTIONAL
-- quando presente, a vers~
ao DEVE ser v3 -- }
nd
TBSCertificate
::=
version
serialNumber
signature
issuer
validity
subject
subjectPublicKeyInfo
issuerUniqueID
es
Certificate
::= SEQUENCE {
tbsCertificate
TBSCertificate,
signatureAlgorithm AlgorithmIdentifier,
signature
BIT STRING }
::= INTEGER { v1(0), v2(1), v3(2) }
CertificateSerialNumber ::= INTEGER
Time
::= SEQUENCE {
Time,
Time }
Er
Validity
notBefore
notAfter
utcTime
generalTime
UniqueIdentifier
::= CHOICE {
UTCTime,
GeneralizedTime }
97
::= BIT STRING
SubjectPublicKeyInfo ::= SEQUENCE {
algorithm
AlgorithmIdentifier,
subjectPublicKey
BIT STRING }
Extensions
::= SEQUENCE SIZE (1..MAX) OF Extension
Extension
extnID
critical
::= SEQUENCE {
OBJECT IDENTIFIER,
BOOLEAN DEFAULT FALSE,
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
extnValue
RFC 5280
Maio de 2008
OCTET STRING
-- Contém a codificaç~
ao DER de um valor ASN.1
-- correspondente ao tipo de extens~
ao identificado
-- por extnID
}
-- Estruturas da LCR
SEQUENCE {
TBSCertList,
AlgorithmIdentifier,
BIT STRING }
es
CertificateList
::=
tbsCertList
signatureAlgorithm
signature
na
nd
TBSCertList ::= SEQUENCE {
version
Version OPTIONAL,
-- quando presente, a vers~
ao DEVE ser v2
signature
AlgorithmIdentifier,
issuer
Name,
thisUpdate
Time,
nextUpdate
Time OPTIONAL,
revokedCertificates SEQUENCE OF SEQUENCE {
userCertificate
CertificateSerialNumber,
revocationDate
Time,
crlEntryExtensions
Extensions OPTIONAL
-- quando presente, a vers~
ao DEVE ser v2
} OPTIONAL,
crlExtensions
[0] Extensions OPTIONAL }
-- quando presente, a vers~
ao DEVE ser v2
-- Version, Time, CertificateSerialNumber, and Extensions s~
ao
-- definidos anteriormente para serem usados na estrutura do certificado
::= SEQUENCE {
OBJECT IDENTIFIER,
ANY DEFINED BY algorithm OPTIONAL }
-- contém o valor de um tipo
-- registrado para uso com o algoritmo
-- de identificador de objeto com valor
-- endereço X.400, a sintaxe começa
-- neste ponto
Er
AlgorithmIdentifier
algorithm
parameters
ORAddress ::= SEQUENCE {
built-in-standard-attributes BuiltInStandardAttributes,
built-in-domain-defined-attributes
BuiltInDomainDefinedAttributes OPTIONAL,
-- veja também teletex-domain-defined-attributes
extension-attributes
ExtensionAttributes OPTIONAL }
-- Atributos padr~
ao embutidos
Cooper, et al.
Standards Track
Tradução para Estudo
98
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
es
BuiltInStandardAttributes
::= SEQUENCE {
country-name
CountryName OPTIONAL,
administration-domain-name
AdministrationDomainName OPTIONAL,
network-address
[0] IMPLICIT NetworkAddress OPTIONAL,
-- veja também extended-network-address
terminal-identifier
[1] IMPLICIT TerminalIdentifier OPTIONAL,
private-domain-name
[2] PrivateDomainName OPTIONAL,
organization-name
[3] IMPLICIT OrganizationName OPTIONAL,
-- veja também teletex-organization-name
numeric-user-identifier [4] IMPLICIT NumericUserIdentifier
OPTIONAL,
personal-name
[5] IMPLICIT PersonalName OPTIONAL,
-- veja também teletex-personal-name
organizational-unit-names [6] IMPLICIT OrganizationalUnitNames
OPTIONAL }
-- veja também teletex-organizational-unit-names
iso-3166-alpha2-code
printable
NetworkAddress
::= X121Address
-- see also extended-network-address
::= NumericString
(SIZE (1..ub-x121-address-length))
Er
X121Address
::= [APPLICATION 2] CHOICE {
NumericString
(SIZE (0..ub-domain-name-length)),
PrintableString
(SIZE
(0..ub-domain-name-length)) }
na
AdministrationDomainName
numeric
::= [APPLICATION 1] CHOICE {
NumericString
(SIZE (ub-country-name-numeric-length)),
PrintableString
(SIZE (ub-country-name-alpha-length)) }
nd
CountryName
x121-dcc-code
TerminalIdentifier
::= PrintableString
(SIZE (1..ub-terminal-id-length))
PrivateDomainName
numeric
::= CHOICE {
NumericString
(SIZE (1..ub-domain-name-length)),
PrintableString
(SIZE (1..ub-domain-name-length)) }
printable
OrganizationName
::= PrintableString
(SIZE (1..ub-organization-name-length))
-- veja também teletex-organization-name
NumericUserIdentifier
Cooper, et al.
::= NumericString
(SIZE (1..ub-numeric-user-id-length))
Standards Track
Tradução para Estudo
99
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
::= SET {
[0] IMPLICIT PrintableString
(SIZE (1..ub-surname-length)),
given-name
[1] IMPLICIT PrintableString
(SIZE (1..ub-given-name-length))
OPTIONAL,
initials
[2] IMPLICIT PrintableString
(SIZE (1..ub-initials-length))
OPTIONAL,
generation-qualifier
[3] IMPLICIT PrintableString
(SIZE
(1..ub-generation-qualifier-length))
OPTIONAL }
-- veja também teletex-personal-name
es
PersonalName
surname
::= SEQUENCE SIZE (1..ub-organizational-units)
OF OrganizationalUnitName
-- veja também teletex-organizational-unit-names
OrganizationalUnitName
nd
OrganizationalUnitNames
::= PrintableString (SIZE
(1..ub-organizational-unit-name-length))
-- Atributos Domain-defined embutidos
na
BuiltInDomainDefinedAttributes ::= SEQUENCE SIZE
(1..ub-domain-defined-attributes) OF
BuiltInDomainDefinedAttribute
Er
BuiltInDomainDefinedAttribute ::= SEQUENCE {
type
PrintableString (SIZE
(1..ub-domain-defined-attribute-type-length)),
value
PrintableString (SIZE
(1..ub-domain-defined-attribute-value-length))}
-- Atributos de extens~
ao
ExtensionAttributes ::= SET SIZE (1..ub-extension-attributes) OF
ExtensionAttribute
100
ExtensionAttribute ::= SEQUENCE {
extension-attribute-type [0] IMPLICIT INTEGER
(0..ub-extension-attributes),
extension-attribute-value [1]
ANY DEFINED BY
extension-attribute-type }
-- Tipos e valores de atributos de extens~
ao
common-name
Cooper, et al.
INTEGER ::= 1
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
CommonName
RFC 5280
Maio de 2008
::= PrintableString (SIZE (1..ub-common-name-length))
teletex-common-name
INTEGER ::= 2
TeletexCommonName ::= TeletexString (SIZE (1..ub-common-name-length))
teletex-organization-name
INTEGER ::= 3
teletex-personal-name
es
TeletexOrganizationName ::= TeletexString
(SIZE (1..ub-organization-name-length))
INTEGER ::= 4
nd
TeletexPersonalName ::= SET {
surname
[0] IMPLICIT TeletexString
(SIZE (1..ub-surname-length)),
given-name
[1] IMPLICIT TeletexString
(SIZE (1..ub-given-name-length)) OPTIONAL,
initials
[2] IMPLICIT TeletexString
(SIZE (1..ub-initials-length)) OPTIONAL,
generation-qualifier [3] IMPLICIT TeletexString
(SIZE (1..ub-generation-qualifier-length))
OPTIONAL }
na
teletex-organizational-unit-names INTEGER ::= 5
TeletexOrganizationalUnitNames ::= SEQUENCE SIZE
(1..ub-organizational-units) OF TeletexOrganizationalUnitName
TeletexOrganizationalUnitName ::= TeletexString
(SIZE (1..ub-organizational-unit-name-length))
INTEGER ::= 7
Er
pds-name
PDSName ::= PrintableString (SIZE (1..ub-pds-name-length))
physical-delivery-country-name INTEGER ::= 8
PhysicalDeliveryCountryName ::= CHOICE {
x121-dcc-code
NumericString (SIZE
(ub-country-name-numeric-length)),
iso-3166-alpha2-code PrintableString
(SIZE (ub-country-name-alpha-length)) }
postal-code
INTEGER ::= 9
PostalCode ::= CHOICE {
numeric-code
printable-code
Cooper, et al.
NumericString
(SIZE (1..ub-postal-code-length)),
PrintableString
Standards Track
Tradução para Estudo
101
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
(SIZE (1..ub-postal-code-length)) }
physical-delivery-office-name INTEGER ::= 10
PhysicalDeliveryOfficeName
::= PDSParameter
physical-delivery-office-number
INTEGER ::= 11
PhysicalDeliveryOfficeNumber ::= PDSParameter
INTEGER ::= 12
es
extension-OR-address-components
ExtensionORAddressComponents ::= PDSParameter
physical-delivery-personal-name
INTEGER ::= 13
PhysicalDeliveryPersonalName ::= PDSParameter
nd
physical-delivery-organization-name INTEGER ::= 14
PhysicalDeliveryOrganizationName ::= PDSParameter
extension-physical-delivery-address-components INTEGER ::= 15
ExtensionPhysicalDeliveryAddressComponents ::= PDSParameter
na
unformatted-postal-address INTEGER ::= 16
Er
UnformattedPostalAddress ::= SET {
printable-address SEQUENCE SIZE (1..ub-pds-physical-address-lines)
OF PrintableString (SIZE (1..ub-pds-parameter-length)) OPTIONAL,
teletex-string
TeletexString
(SIZE (1..ub-unformatted-address-length))
OPTIONAL }
street-address
StreetAddress
INTEGER ::= 17
::= PDSParameter
post-office-box-address
INTEGER ::= 18
102
PostOfficeBoxAddress ::= PDSParameter
poste-restante-address
INTEGER ::= 19
PosteRestanteAddress ::= PDSParameter
unique-postal-name
UniquePostalName
Cooper, et al.
INTEGER ::= 20
::= PDSParameter
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
local-postal-attributes
RFC 5280
Maio de 2008
INTEGER ::= 21
LocalPostalAttributes ::= PDSParameter
PDSParameter
::= SET {
printable-string PrintableString
(SIZE(1..ub-pds-parameter-length)) OPTIONAL,
teletex-string TeletexString
(SIZE(1..ub-pds-parameter-length)) OPTIONAL }
INTEGER ::= 22
es
extended-network-address
nd
ExtendedNetworkAddress ::= CHOICE {
e163-4-address
SEQUENCE {
number
[0] IMPLICIT NumericString
(SIZE (1..ub-e163-4-number-length)),
sub-address [1] IMPLICIT NumericString
(SIZE (1..ub-e163-4-sub-address-length))
OPTIONAL },
psap-address [0] IMPLICIT PresentationAddress }
terminal-type
OCTET STRING OPTIONAL,
OCTET STRING OPTIONAL,
OCTET STRING OPTIONAL,
SET SIZE (1..MAX) OF OCTET STRING }
na
PresentationAddress ::= SEQUENCE {
pSelector
[0] EXPLICIT
sSelector
[1] EXPLICIT
tSelector
[2] EXPLICIT
nAddresses
[3] EXPLICIT
INTEGER ::= 23
Er
TerminalType ::= INTEGER {
telex
(3),
teletex
(4),
g3-facsimile (5),
g4-facsimile (6),
ia5-terminal (7),
videotex
(8) } (0..ub-integer-options)
-- Atributos de extens~
ao
Domain-defined
teletex-domain-defined-attributes
INTEGER ::= 6
103
TeletexDomainDefinedAttributes
::= SEQUENCE SIZE
(1..ub-domain-defined-attributes) OF
TeletexDomainDefinedAttribute
TeletexDomainDefinedAttribute
::= SEQUENCE {
type
TeletexString
(SIZE (1..ub-domain-defined-attribute-type-length)),
value
TeletexString
(SIZE (1..ub-domain-defined-attribute-value-length)) }
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
especificaç~
oes de Limites Superiores DEVE ser considerados mandatórios
do anexo B da ITU-T X.411 Reference Definition of MTS Parameter
Limites Superiores (Upper Bounds)
Upper Bounds
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
Er
na
nd
ub-name
ub-common-name
ub-locality-name
ub-state-name
ub-organization-name
ub-organizational-unit-name
ub-title
ub-serial-number
ub-match
ub-emailaddress-length
ub-common-name-length
ub-country-name-alpha-length
ub-country-name-numeric-length
ub-domain-defined-attributes
ub-domain-defined-attribute-type-length
ub-domain-defined-attribute-value-length
ub-domain-name-length
ub-extension-attributes
ub-e163-4-number-length
ub-e163-4-sub-address-length
ub-generation-qualifier-length
ub-given-name-length
ub-initials-length
ub-integer-options
ub-numeric-user-id-length
ub-organization-name-length
ub-organizational-unit-name-length
ub-organizational-units
ub-pds-name-length
ub-pds-parameter-length
ub-pds-physical-address-lines
ub-postal-code-length
ub-pseudonym
ub-surname-length
ub-terminal-id-length
ub-unformatted-address-length
ub-x121-address-length
-------
Maio de 2008
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
32768
64
128
128
64
64
64
64
128
255
64
2
3
4
8
128
16
256
15
40
3
16
5
256
32
64
32
4
16
30
6
16
128
40
24
180
16
es
-----
RFC 5280
Nota - upper bounds nos tipos string, tal como TeletexString, s~
ao
medidos em caracteres. Com exceç~
ao do PrintableString ou IA5String, um
significativamente maior de octetos ser necessário para conter tal
valor. Como mı́nimo, 16 octetos, ou duas vezes o upper bound
especificado, o que for maior, deve ser permitida para
TeletexString. Para UTF8String ou UniversalString no mı́nimo
Cooper, et al.
Standards Track
Tradução para Estudo
104
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
-- quatro vezes o upper bound deve ser permitido.
END
A.2 Módulo Implicitamente Rotulado, sintaxe 1988
es
PKIX1Implicit88 { iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) id-mod(0) id-pkix1-implicit(19) }
DEFINITIONS IMPLICIT TAGS ::=
BEGIN
-- EXPORTE Todos --
na
nd
IMPORTS
id-pe, id-kp, id-qt-unotice, id-qt-cps,
-- delete following line if ‘‘new’’ types are supported -BMPString, UTF8String, -- end ‘‘new’’ types -ORAddress, Name, RelativeDistinguishedName,
CertificateSerialNumber, Attribute, DirectoryString
FROM PKIX1Explicit88 { iso(1) identified-organization(3)
dod(6) internet(1) security(5) mechanisms(5) pkix(7)
id-mod(0) id-pkix1-explicit(18) };
-- Arco ISO para certificado e extens~
oes de LCR
id-ce OBJECT IDENTIFIER ::= {joint-iso-ccitt(2) ds(5) 29}
-- OID e sintaxe de authority key identifier
Er
id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 35 }
AuthorityKeyIdentifier ::= SEQUENCE {
keyIdentifier
[0] KeyIdentifier
OPTIONAL,
authorityCertIssuer
[1] GeneralNames
OPTIONAL,
authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL }
-- authorityCertIssuer e authorityCertSerialNumber MUST estar ambos
-- presente ou ambos ausente
105
KeyIdentifier
::= OCTET STRING
-- OID e sintaxe de subject key identifier
id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 14 }
SubjectKeyIdentifier
Cooper, et al.
::= KeyIdentifier
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
-- OID e sintaxe da extens~
ao key usage
id-ce-keyUsage OBJECT IDENTIFIER
::= { id-ce 15 }
es
KeyUsage ::= BIT STRING {
digitalSignature (0),
nonRepudiation
(1), -- recent editions of X.509 have
-- renamed this bit to contentCommitment
keyEncipherment
(2),
dataEncipherment (3),
keyAgreement
(4),
keyCertSign
(5),
cRLSign
(6),
encipherOnly
(7),
decipherOnly
(8) }
nd
-- OID e sintaxe d a extens~
ao private key usage period
id-ce-privateKeyUsagePeriod OBJECT IDENTIFIER ::= { id-ce 16 }
PrivateKeyUsagePeriod ::= SEQUENCE {
notBefore
[0] GeneralizedTime OPTIONAL,
notAfter
[1] GeneralizedTime OPTIONAL }
-- either notBefore or notAfter MUST be present
na
-- OID e sintaxe da extens~
ao certificate policies
id-ce-certificatePolicies OBJECT IDENTIFIER
::= { id-ce 32 }
anyPolicy OBJECT IDENTIFIER ::= { id-ce-certificatePolicies 0 }
CertificatePolicies ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation
Er
PolicyInformation
::= SEQUENCE {
policyIdentifier CertPolicyId,
policyQualifiers SEQUENCE SIZE (1..MAX) OF
PolicyQualifierInfo OPTIONAL }
CertPolicyId
::= OBJECT IDENTIFIER
PolicyQualifierInfo ::= SEQUENCE {
policyQualifierId PolicyQualifierId,
qualifier
ANY DEFINED BY policyQualifierId }
-- As implementaç~
oes que reconhecerem additional policy qualifiers DEVEM
-- aumentar as seguintes definiç~
oes para PolicyQualifierId
PolicyQualifierId ::= OBJECT IDENTIFIER ( id-qt-cps | id-qt-unotice )
-- Pointer qualifier para DPC
Cooper, et al.
Standards Track
Tradução para Estudo
106
PKIX Certificate and CRL Profile
CPSuri
RFC 5280
Maio de 2008
::= IA5String
-- user notice qualifier
NoticeReference
::= SEQUENCE {
organization DisplayText,
noticeNumbers SEQUENCE OF INTEGER }
CHOICE {
IA5String
VisibleString
BMPString
UTF8String
(SIZE
(SIZE
(SIZE
(SIZE
(1..200)),
(1..200)),
(1..200)),
(1..200)) }
nd
DisplayText
::=
ia5String
visibleString
bmpString
utf8String
es
UserNotice
::= SEQUENCE {
noticeRef
NoticeReference OPTIONAL,
explicitText
DisplayText
OPTIONAL }
-- OID e sintaxe da extens~
ao policy mapping
id-ce-policyMappings OBJECT IDENTIFIER
::= { id-ce 33 }
na
PolicyMappings
::= SEQUENCE SIZE (1..MAX) OF SEQUENCE {
issuerDomainPolicy CertPolicyId,
subjectDomainPolicy CertPolicyId }
-- OID e sintaxe da extens~
ao subject alternative name
id-ce-subjectAltName OBJECT IDENTIFIER
::= { id-ce 17 }
SubjectAltName ::= GeneralNames
::= SEQUENCE SIZE (1..MAX) OF GeneralName
Er
GeneralNames
GeneralName
::= CHOICE {
otherName
rfc822Name
dNSName
x400Address
directoryName
ediPartyName
uniformResourceIdentifier
iPAddress
registeredID
[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
AnotherName,
IA5String,
IA5String,
ORAddress,
Name,
EDIPartyName,
IA5String,
OCTET STRING,
OBJECT IDENTIFIER }
107
-- AnotherName substitui OTHER-NAME ::= TYPE-IDENTIFIER, já que
-- TYPE-IDENTIFIER n~
ao é suportado na sintaxe ASN.1 de 1988
AnotherName
Cooper, et al.
::= SEQUENCE {
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
type-id OBJECT IDENTIFIER,
value
[0] EXPLICIT ANY DEFINED BY type-id }
EDIPartyName ::= SEQUENCE {
nameAssigner [0] DirectoryString OPTIONAL,
partyName
[1] DirectoryString }
-- OID e sintaxe da extens~
ao issuer alternative name
::= { id-ce 18 }
es
id-ce-issuerAltName OBJECT IDENTIFIER
IssuerAltName ::= GeneralNames
id-ce-subjectDirectoryAttributes OBJECT IDENTIFIER ::= { id-ce 9 }
SubjectDirectoryAttributes ::= SEQUENCE SIZE (1..MAX) OF Attribute
nd
-- OID e sintaxe da extens~
ao basic constraints
id-ce-basicConstraints OBJECT IDENTIFIER
::= { id-ce 19 }
BasicConstraints ::= SEQUENCE {
cA
BOOLEAN DEFAULT FALSE,
pathLenConstraint INTEGER (0..MAX) OPTIONAL }
na
-- OID e sintaxe de da extesn~
ao name constraints
id-ce-nameConstraints OBJECT IDENTIFIER
::= { id-ce 30 }
NameConstraints ::= SEQUENCE {
permittedSubtrees [0] GeneralSubtrees OPTIONAL,
excludedSubtrees [1] GeneralSubtrees OPTIONAL }
Er
GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree
GeneralSubtree ::= SEQUENCE {
base
GeneralName,
minimum
[0] BaseDistance DEFAULT 0,
maximum
[1] BaseDistance OPTIONAL }
BaseDistance ::= INTEGER (0..MAX)
-- OID e sintaxe da extens~
ao policy constraints
id-ce-policyConstraints OBJECT IDENTIFIER
108
::= { id-ce 36 }
PolicyConstraints ::= SEQUENCE {
requireExplicitPolicy [0] SkipCerts OPTIONAL,
inhibitPolicyMapping [1] SkipCerts OPTIONAL }
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
SkipCerts ::= INTEGER (0..MAX)
-- OID e sintaxe da extens~
ao CRL distribution points
id-ce-cRLDistributionPoints OBJECT IDENTIFIER ::= {id-ce 31}
CRLDistributionPoints ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint
es
DistributionPoint
::= SEQUENCE {
distributionPoint
[0] DistributionPointName OPTIONAL,
reasons
[1] ReasonFlags OPTIONAL,
cRLIssuer
[2] GeneralNames OPTIONAL }
DistributionPointName ::= CHOICE {
fullName
[0] GeneralNames,
nameRelativeToCRLIssuer [1] RelativeDistinguishedName }
na
nd
ReasonFlags ::= BIT STRING {
unused
(0),
keyCompromise
(1),
cACompromise
(2),
affiliationChanged
(3),
superseded
(4),
cessationOfOperation
(5),
certificateHold
(6),
privilegeWithdrawn
(7),
aACompromise
(8) }
-- OID e sintaxe da extens~
ao extended key usage
id-ce-extKeyUsage OBJECT IDENTIFIER
::= {id-ce 37}
Er
ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId
KeyPurposeId ::= OBJECT IDENTIFIER
-- uso de chave n~
ao especificada
anyExtendedKeyUsage OBJECT IDENTIFIER ::= { id-ce-extKeyUsage 0 }
-- OIDs para extended key purpose
id-kp-serverAuth
id-kp-clientAuth
id-kp-codeSigning
id-kp-emailProtection
id-kp-timeStamping
id-kp-OCSPSigning
OBJECT
OBJECT
OBJECT
OBJECT
OBJECT
OBJECT
IDENTIFIER
IDENTIFIER
IDENTIFIER
IDENTIFIER
IDENTIFIER
IDENTIFIER
::=
::=
::=
::=
::=
::=
{
{
{
{
{
{
id-kp
id-kp
id-kp
id-kp
id-kp
id-kp
1
2
3
4
8
9
}
}
}
}
}
}
-- OID e sintaxe de inhibit any policy
Cooper, et al.
Standards Track
Tradução para Estudo
109
PKIX Certificate and CRL Profile
RFC 5280
id-ce-inhibitAnyPolicy OBJECT IDENTIFIER
InhibitAnyPolicy
Maio de 2008
::= { id-ce 54 }
::= SkipCerts
-- OID e sintaxe da extens~
ao freshest (delta)CRL
id-ce-freshestCRL
::= { id-ce 46 }
::= CRLDistributionPoints
es
FreshestCRL
OBJECT IDENTIFIER
-- authority info access
id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 }
nd
AuthorityInfoAccessSyntax ::=
SEQUENCE SIZE (1..MAX) OF AccessDescription
AccessDescription ::= SEQUENCE {
accessMethod
OBJECT IDENTIFIER,
accessLocation GeneralName }
-- subject info access
na
id-pe-subjectInfoAccess OBJECT IDENTIFIER
::= { id-pe 11 }
SubjectInfoAccessSyntax ::=
SEQUENCE SIZE (1..MAX) OF AccessDescription
-- OID e sintaxe da extens~
ao CRL number
id-ce-cRLNumber
::= { id-ce 20 }
::= INTEGER (0..MAX)
Er
CRLNumber
OBJECT IDENTIFIER
-- OID e sintaxe da extens~
ao issuing distribution point
id-ce-issuingDistributionPoint OBJECT IDENTIFIER ::= { id-ce 28 }
IssuingDistributionPoint ::= SEQUENCE {
distributionPoint
[0] DistributionPointName OPTIONAL,
onlyContainsUserCerts
[1] BOOLEAN DEFAULT FALSE,
onlyContainsCACerts
[2] BOOLEAN DEFAULT FALSE,
onlySomeReasons
[3] ReasonFlags OPTIONAL,
indirectCRL
[4] BOOLEAN DEFAULT FALSE,
onlyContainsAttributeCerts [5] BOOLEAN DEFAULT FALSE }
-- at most one of onlyContainsUserCerts, onlyContainsCACerts,
-- and onlyContainsAttributeCerts may be set to TRUE.
id-ce-deltaCRLIndicator OBJECT IDENTIFIER ::= { id-ce 27 }
Cooper, et al.
Standards Track
Tradução para Estudo
110
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
BaseCRLNumber ::= CRLNumber
-- OID e sintaxe da extens~
ao reason code
nd
CRLReason ::= ENUMERATED {
unspecified
(0),
keyCompromise
(1),
cACompromise
(2),
affiliationChanged
(3),
superseded
(4),
cessationOfOperation (5),
certificateHold
(6),
removeFromCRL
(8),
privilegeWithdrawn
(9),
aACompromise
(10) }
::= { id-ce 21 }
es
id-ce-cRLReasons OBJECT IDENTIFIER
-- OID e sintaxe da extens~
ao certificate issuer CRL entry
id-ce-certificateIssuer OBJECT IDENTIFIER
::= { id-ce 29 }
CertificateIssuer ::= GeneralNames
na
-- OID e sintaxe da extens~
ao hold instruction
id-ce-holdInstructionCode OBJECT IDENTIFIER ::= { id-ce 23 }
HoldInstructionCode ::= OBJECT IDENTIFIER
-- Arco
holdinstruction do ANSI x9
Er
holdInstruction OBJECT IDENTIFIER ::=
{joint-iso-itu-t(2) member-body(2) us(840) x9cm(10040) 2}
-- holdinstructions do ANSI X9
id-holdinstruction-none OBJECT IDENTIFIER ::=
{holdInstruction 1} -- deprecated
id-holdinstruction-callissuer OBJECT IDENTIFIER ::= {holdInstruction 2}
id-holdinstruction-reject OBJECT IDENTIFIER ::= {holdInstruction 3}
-- OID e sintaxe da extens~
ao invalidity date CRL entry
id-ce-invalidityDate OBJECT IDENTIFIER
Cooper, et al.
::= { id-ce 24 }
Standards Track
Tradução para Estudo
111
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
InvalidityDate ::= GeneralizedTime
END
Apêndice B. Notas ASN.1
es
As ACs DEVEM forçar o número serialNumber ser um número inteiro não-negativo, ou
seja, o bit sign na codificação DER do valor INTEGER DEVE ser zero. Isso pode ser
feito um octeto lider (mais a esqueda) ‘00’H se necessário. Isso remove uma ambiguidade
potencial no mapeamento entre um string de octetos e um valor inteiro.
Como observado na seção 4.1.2.2, números seriais poder conter inteiros longos. Os usuários
de certificado DEVEM ser capazes de manipular valores de serialNumber de até 20 octetos. Emissores de LCR em conformidade NÃO DEVEM usar cRLNumber maiores que 20
octetos.
nd
O construtor “SEQUENCE SIZE (1..MAX) OF” aparece em diversos construtores ASN.1.
Uma sequência válida terá 0 ou mais entradas. O construtor SIZE (1..MAX) restringe a
sequência a ter no mı́nimo uma entrada. MAX indica que o upper bound não é especificado.
As implementações ficam livres para a escolha de um limite superior apropriado aos seus
ambientes.
na
O tipo caractere string PrintableString suporta um conjunto bem básico de Latin: as letras
minúsculas de ‘a’ a ‘z’, as letras miúsculas de ´A’ a ‘Z’, os dı́gitos de ‘0’ a ‘9’, onze caracteres
especiais ´ = ( ) + , - . / : ? e espaço.
Er
Os implementadores devem observar que caracteres sinal ‘em’ (´@’) e underscore (‘ ’) não
são suportados pelo tipo ASN.1 PrintableString. Esses caracteres normalmente aparecem
em endereços Internet. Tais endereços DEVEM ser codificados usando um tipo ASN.1 que
os suporte. Eles são codificados geralmente como IA5String nos atributos emailAddress
com um distinguished name ou campo rfc822Name do GeneralName. Implementações em
conformidade NÃO DEVEM codificar strings que incluem esses caracteres como PrintableString.
O tipo caracter string TeletexSring é um superconjunto de PrintableString. TeletexString
suporta um padrão relativo (ASCII-afins) do conjunto de caracteres Latin: caracteres Latin
com acentos não espaçados e caracteres japoneses.
Listas de bit nomeados são do tipo BIT STRINGs onde os valores estão associados a nomes.
Esta especificação faz uso de listas de bit nomeados nas definições das extensões key usage,
CRL distribution points, e extensão de certificado freshest CRL, assim como nas definições
de extensão de LCR freshest CRL e issuing distribution point. Quando o DER codifica uma
lista de bit nomeados, os últimos zeros DEVEM ser omitidos. Ou seja, o valor codificado
encerra com o último bit nomeado ao qual é atribuı́do o valor 1.
O tipo caractere string UniversalString suporta qualquer dos caracteres permitidos em
[ISO10646]. O ISO 10646 é o conjunto o conjunto de caracteres multi-octetos Universal
(UCS).
Cooper, et al.
Standards Track
Tradução para Estudo
112
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
O tipo caractere string UTF8String foi introduzido na versão 1997 do ASN.1, e UTF8String
foi adicionado na lista de escolhas do DirectoryString na versão 2001 de [X.520]. UTF8String
é um tipo universal e tem sido atribuı́do o número da etiqueta 12. O conteúdo de UTF8String
foi definido na RFC 2044 e atualizado pela RFC 2279, que foi atualizada em [RFC3629].
Em antecipação a estas mudanças, e em conformidade com as melhores práticas IETF
codificada em [RFC2277, IETF Policy on Character Sets and Languages, este documento
inclui UTF8String como uma das escolhas em DirectoryString e no qualificador userNotice
certificate policy.
nd
es
Para muito dos tipos de atributo definidos em [X.520], o AtributeValue usa o tipo DirectoryString. Dos atributos especificados no Apêndice A, todos os atributos name, surname,
givenName, initials, generationQualifier, commonName, localityName, stateOrProvinceName, organizationName, organizationUnitName, title, e pseudonym usam tipo DirectoryString. X.520 usa uma definição de tipo parametrizada [X.683] de DirectoryString
para especificar a sintaxe de cada um desses atributos. O parâmetro é usado para indicar o
tamanho do string permitido no atributo. No Apêndice A, para evitar o uso de definição de
tipo parametrizada, o tipo DirectoryString é escrito em sua forma expandida na definição
de cada um desses tipos de atributo. Assim, o ASN.1 no Apêndice A descreve a sintaxe
para cada um desses atributos como sendo uma CHOICE of TeletexString, PrintableString, UniversalString, UTF8String, e BMPString, com as restrições apropriadas para para
o tamanho do string de cada um dos tipos da CHOICE, ao invés de usar o tipo ASN.1
DirectoryString para descrever a sintaxe.
na
Os implementadores deveriam observar que a codificação DER de valores SET OF necessita a ordenação das codificações dos valores. Em particular, esta questão diz respeito aos
nomes distintos (distinguished names).
Os implementadores deveriam observar que a codificação DER dos componentes SET ou
SEQUENCE cujo valor é DEFAULT omite o componente no certificado ou LCR codificada.
Por exemplo, a extensão BasicConstraints cujo valor booleano cA é falso, omitira o valor
booleano cA do certificado codificado.
Er
Os Identificadores de Objetos (OIDs) são utilizados nesta especificação para identificação
de polı́ticas de certificados, chave pública e algoritmos de assinatura, extensões de certificado, etc. Não existe um número máximo para OIDs. Esta especificação exige suporte
aos OIDs que possuem elementos de arco com valores que são menores que 2ˆ28, ou seja,
eles DEVEM estar entre 0 e 268.435,455, inclusive. Isto permite que o elemento do arco
seja representado em um palavre de 32 bits. As implementações DEVEM também suportar
OIDs onde o tamanho de decimais pontuados (ver seção1.4 de [RFC4512]) representados
em string possa ser de até 100 bytes (inclusive). As implementações DEVEM ser capazes de
tratar OIDs com até 20 elementos (inclusive). As ACs NÃO DEVERIAM emitir certificados que contenham OIDs que excedam esses requisitos. De maneira semelhante, emissores
de LCR NÃO DEVERIAM emitir LCRs que contenham OIDs que excedam esses requisitos.
As regras para contexto especı́ficdo de codificação de valores de campo GeneralName na extensão nameConstraints diferem das regras que se aplicam às outras extensões. Em todas as
outras extensões de certificado, LCR, e extensões de entrada LCR, especificadas no presente
documento, as regras de codificação estão de acordo com as regras para o tipo subjacente.
Por exemplo, valores no campo uniformResourceIdentifier devem conter um valor URI conCooper, et al.
Standards Track
Tradução para Estudo
113
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
forme especificado em [RFC3986]. As regras especı́ficas para contexto usadas para codificar
valores na extensão nameConstraints são especificadas na seção 4.2.1.10, e essas regras podem não estar em conformidade com as regras usadas nos tipos subjecentes. Por exemplo,
quando um campo uniformResourceIdentifier aparece em uma extensão nameConstraints,
ele deve conter um nome DNS (ex: “host.example.com” ou “example.com”) ao invés da URI.
es
Os implementadores são avisados que a comunidade de padrões X.500 desenvolveu uma
série de regras de extensibilidade. Essas regras determinam quando uma definição ASN.1
pode ser modificada sem a atribuição de um novo Identificador de Objeto (OID). Por
exemplo, no mı́nimo duas definições de extensão incluı́das em [RFC2459], o predecessor
deste documento de perfil, possuem definições ASN.1 diferentes nesta especificação, mas
o mesmo OID é utilizado. Se elementos desconhecidos aparecerem em uma extensão, e
a extensão não estiver marcada como crı́tica, aqueles elementos desconhecidos podem ser
ignorados, da seguinte forma:
(a) ignore todo bit desconhecido atribuı́do dentro de um bit string;
nd
(b) ignore todos os números nomeado em um tipo ENUMERATE ou tipo INTEGER
que esta sendo usado no estilo enumerado, desde que o número ocorra como um
elemento opcional de um SET ou SEQUENCE; e
(c) ignore todos os elementos desconhecidos em SETs, no final de SEQUENCEs, ou em
CHOICEs onde a CHOICE é um elemento opcional de um SET ou SEQUENCE.
na
Se uma extensão contendo um valor não esperado é marcada como crı́tica, a implementação
DEVE rejeitar o certificado ou LCR que contenha a extensão não reconhecida.
Apêndice C. Exemplos
Este anexo contém quatro exemplos: três certificados e uma CRL. Os dois primeiros certificados e a CRL compreendem um caminho de certificação mı́nima.
Er
O Apêndice C.1 contém um hexadecimal comentado de um certificado “auto-assinado” emitido por uma AC cujo nome distinto é cn=Example CA, dc=example, dc=com. O certificado contém uma chave RSA pública, e é assinado pela chave RSA privada correspondente.
O Apêndice C.2 contém um hexadecimal comentado de um certificado de entidade final.
O certificado de entidade final contém uma chave RSA pública, e é assinado pela chave
privada correspondente ao certificado “auto-assinado” do Apêndice C.1.
O Apêndice C.3 contém um hexadecimal comentado de um certificado de entidade final
que contém uma chave pública DSA com parâmetros, e é assinado com DSA e SHA-1. Este
certificado não é parte do caminho de certificação mı́nimo.
O Apêndice C.4 contém um hexadecimal comentado de uma LCR. A LCR é emitida pela
AC cujo nome distinto é cn=Example CA, dc=example, dc=com, e a lista de certificados
revogados inclui o certificado de entidade final apresentado no Apêndice C.2.
O certificado foi processado usando o utilitário dumpsan1 de Peter Gutmann para gerar a
saı́da. O fonte para o utilitário dumpasn1 está disponı́vel em <http://www.cs.auckland.ac.nz/
˜pgut001/dumpasn1.c>. Os binários para os certificados e LCRs estão disponı́veis em
Cooper, et al.
Standards Track
Tradução para Estudo
114
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
http://csrc.nist.gov/groups/ST/crypto apps infra/documents/pkixtools.
Nos locais deste apêndice onde nomes distintos são especificados usando representação
string, os strings são formados usando as regras especificadas em [RFC4514].
C.1 Certificado “auto-assinado” RSA
Este apêndice contem uma imagem hexadecimal comentada de um certificado de 578 bytes
versão 3. O certificado contém as seguintes informações
es
(a) o número serial é 17;
(b) o certificado é assinado com RSA e algoritmo de hash SHA-1;
(c) o nome distinto do emissor é cn=Example CA,dc=example,dc=com;
(d) o nome distinto do sujeito é cn=Example CA,dc=example,dc=com;
nd
(e) o certificado foi emitido em 30 de abril de 2004, e expirado em 30 de abril de 2005;
(f) o certificado contém uma chave pública RSA de 1024 bit;
(g) o certificado contém uma extensão subject key identifier gerada com o método (1)
da seção 4.2.1.2; e
13
16
18
29
31
33
35
37
49
54
56
58
70
574: SEQUENCE {
423:
SEQUENCE {
3:
[0] {
1:
INTEGER 2
:
}
1:
INTEGER 17
13:
SEQUENCE {
9:
OBJECT IDENTIFIER
:
sha1withRSAEncryption (1 2 840 113549 1 1 5)
0:
NULL
:
}
67:
SEQUENCE {
19:
SET {
17:
SEQUENCE {
10:
OBJECT IDENTIFIER
:
domainComponent (0 9 2342 19200300 100 1 25)
3:
IA5String ‘com’
:
}
:
}
23:
SET {
21:
SEQUENCE {
10:
OBJECT IDENTIFIER
:
domainComponent (0 9 2342 19200300 100 1 25)
7:
IA5String ‘example’
Er
0
4
8
10
na
(h) O certificado é um certificado de AC (como indicado através da extensão basic
constraints).
Cooper, et al.
Standards Track
Tradução para Estudo
115
PKIX Certificate and CRL Profile
150
155
157
159
171
180
182
184
189
201
204
206
217
219
223
226
es
}
SET {
SEQUENCE {
OBJECT IDENTIFIER commonName (2 5 4 3)
PrintableString ‘Example CA’
}
}
}
SEQUENCE {
UTCTime 30/04/2004 14:25:34 GMT
UTCTime 30/04/2005 14:25:34 GMT
}
SEQUENCE {
SET {
SEQUENCE {
OBJECT IDENTIFIER
domainComponent (0 9 2342 19200300 100
IA5String ‘com’
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER
domainComponent (0 9 2342 19200300 100
IA5String ‘example’
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER commonName (2 5 4 3)
PrintableString ‘Example CA’
}
}
}
SEQUENCE {
SEQUENCE {
OBJECT IDENTIFIER
rsaEncryption (1 2 840 113549 1 1 1)
NULL
}
BIT STRING, encapsulates {
SEQUENCE {
INTEGER
00 C2 D7 97 6D 28 70 AA 5B CF 23 2E 80
DB 6F D5 2D D5 6A 4F 7A 34 2D F9 22 72
EF 80 E9 CA 30 8C 00 C4 9A 6E 5B 45 B4
6C 94 0D FA 91 E9 40 FC 25 9D C7 B7 68
11 70 6A D7 F1 C9 11 4F 3A 7E 3F 99 8D
74 5F 5E A4 55 53 E5 C7 68 36 53 C7 1D
nd
132
134
136
138
}
1 25)
1 25)
na
100
102
117
Maio de 2008
Er
79
81
83
88
:
:
19:
17:
3:
10:
:
:
:
30:
13:
13:
:
67:
19:
17:
10:
:
3:
:
:
23:
21:
10:
:
7:
:
:
19:
17:
3:
10:
:
:
:
159:
13:
9:
:
0:
:
141:
137:
129:
:
:
:
:
:
:
RFC 5280
Cooper, et al.
Standards Track
70
47
6E
19
6E
3B
39
70
A5
56
76
12
EE
1D
E6
8F
A5
A6
Tradução para Estudo
116
PKIX Certificate and CRL Profile
Maio de 2008
85 FE BD 6E A1 CA DF 35 50 AC 08 D7 B9 B4 7E 5C
FE E2 A3 2C D1 23 84 AA 98 C0 9B 66 18 9A 68 47
E9
INTEGER 65537
}
}
na
nd
es
}
[3] {
SEQUENCE {
SEQUENCE {
OBJECT IDENTIFIER subjectKeyIdentifier (2 5 29 14)
OCTET STRING, encapsulates {
OCTET STRING
08 68 AF 85 33 C8 39 4A 7A F8 82 93 8E 70 6A 4A
20 84 2C 32
}
}
SEQUENCE {
OBJECT IDENTIFIER keyUsage (2 5 29 15)
BOOLEAN TRUE
OCTET STRING, encapsulates {
BIT STRING 1 unused bits
‘0000011’B
}
}
SEQUENCE {
OBJECT IDENTIFIER basicConstraints (2 5 29 19)
BOOLEAN TRUE
OCTET STRING, encapsulates {
SEQUENCE {
BOOLEAN TRUE
}
}
}
}
}
}
SEQUENCE {
OBJECT IDENTIFIER
sha1withRSAEncryption (1 2 840 113549 1 1 5)
NULL
}
BIT STRING
6C F8 02 74 A6 61 E2 64 04 A6 54 0C 6C 72 13 AD
3C 47 FB F6 65 13 A9 85 90 33 EA 76 A3 26 D9 FC
D1 0E 15 5F 28 B7 EF 93 BF 3C F3 E2 3E 7C B9 52
FC 16 6E 29 AA E1 F4 7A 6F D5 7F EF B3 95 CA F3
66 88 83 4E A1 35 45 84 CB BC 9B B8 C8 AD C5 5E
46 D9 0B 0E 8D 80 E1 33 2B DC BE 2B 92 7E 4A 43
A9 6A EF 8A 63 61 B3 6E 47 38 BE E8 0D A3 67 5D
Er
:
:
:
358
3:
:
:
:
363
66:
365
64:
367
29:
369
3:
374
22:
376
20:
:
:
:
:
398
14:
400
3:
405
1:
408
4:
410
2:
:
:
:
414
15:
416
3:
421
1:
424
5:
426
3:
428
1:
:
:
:
:
:
:
43 1 13:
433
9:
:
444
0:
:
446 129:
:
:
:
:
:
:
:
RFC 5280
Cooper, et al.
Standards Track
Tradução para Estudo
117
PKIX Certificate and CRL Profile
:
:
RFC 5280
Maio de 2008
F3 FA 91 81 3C 92 BB C5 5F 25 25 EB 7C E7 D8 A1
}
C.2 Certificado de Entidade Final Usando RSA
Este apêndice contem uma imagem hexadecimal comentada de um certificado de 629 bytes
versão 3. O certificado contém as seguintes informações
(a) o número serial é 18;
es
(b) o certificado é assinado com RSA e algoritmo de hash SHA-1;
(c) o nome distinto do emissor é cn=Example CA,dc=example,dc=com;
(d) o nome distinto do sujeito é cn=End Entity CA,dc=example,dc=com;
(e) o certificado era válido de 15 de setembro de 2004, até 15 de março de 2005;
nd
(f) o certificado contém uma chave pública RSA de 1024 bit;
(g) o certificado é um certificado de entidade final, assim, a extensão basic constrains
não está presente;
(h) o certificado contém a extensão authority key identifier correspondendo ao subject
key identifier do certificado do apêndice C.1; e
na
(i) o certificado inclui um nome alternativo – um endereço de correio eletrônico (rfc822Name)
de “[email protected]”.
(j) O certificado é um certificado de AC (como indicado na extensão basic constraints).
13
16
18
29
31
33
35
37
49
54
56
625: SEQUENCE {
474:
SEQUENCE {
3:
[0] {
1:
INTEGER 2
:
}
1:
INTEGER 18
13:
SEQUENCE {
9:
OBJECT IDENTIFIER
:
sha1withRSAEncryption (1 2 840 113549 1 1 5)
0:
NULL
:
}
67:
SEQUENCE {
19:
SET {
17:
SEQUENCE {
10:
OBJECT IDENTIFIER
:
domainComponent (0 9 2342 19200300 100 1 25)
3:
IA5String ‘com’
:
}
:
}
23:
SET {
21:
SEQUENCE {
Er
0
4
8
10
Cooper, et al.
Standards Track
Tradução para Estudo
118
PKIX Certificate and CRL Profile
132
134
136
138
150
155
157
159
171
180
182
184
189
201
204
206
217
219
223
226
es
100
102
117
}
SET {
SEQUENCE {
OBJECT IDENTIFIER commonName (2 5 4 3)
PrintableString ‘Example CA’
}
}
}
SEQUENCE {
UTCTime 15/09/2004 11:48:21 GMT
UTCTime 15/03/2005 11:48:21 GMT
}
SEQUENCE {
SET {
SEQUENCE {
OBJECT IDENTIFIER
domainComponent (0 9 2342 19200300 100
IA5String ‘com’
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER
domainComponent (0 9 2342 19200300 100
IA5String ‘example’
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER commonName (2 5 4 3)
PrintableString ‘End Entity’
}
}
}
SEQUENCE {
SEQUENCE {
OBJECT IDENTIFIER
rsaEncryption (1 2 840 113549 1 1 1)
NULL
}
BIT STRING, encapsulates {
SEQUENCE {
INTEGER
00 E1 6A E4 03 30 97 02 3C F4 10 F3 B5
14 7B F6 F5 D0 78 E9 A4 8A F0 A3 75 EC
96 7F 88 99 85 9A F2 3E 68 77 87 EB 9E
nd
79
81
83
88
OBJECT IDENTIFIER
domainComponent (0 9 2342 19200300 100 1 25)
IA5String ‘example’
}
na
70
10:
:
7:
:
:
19:
17:
3:
10:
:
:
:
30:
13:
13:
:
67:
19:
17:
10:
:
3:
:
:
23:
21:
10:
:
7:
:
:
19:
17:
3:
10:
:
:
:
159:
13:
9:
:
0:
:
141:
137:
129:
:
:
:
Maio de 2008
1 25)
1 25)
Er
58
RFC 5280
Cooper, et al.
Standards Track
1E 4D 7F
ED B6 56
D1 9F C0
Tradução para Estudo
119
PKIX Certificate and CRL Profile
433
435
440
442
444
466
468
473
476
478
AB
AA
E9
32
8B
89
E3
1A
B2
21
23
1A
B6
7B
58
A4
49
C1
D5
14
1D
09
0C
AA
13
7E
F4
53
CF
4C
16
4B
8B
01
46
23
26
6C
14
A3
4C
DB
FC
C6
9A
4F
27
2F
12
F2
A8
67
7A
EC
16
4D
30
43
13
95
F5
82
EC
F2
FF
65537
}
es
}
[3] {
SEQUENCE {
SEQUENCE {
OBJECT IDENTIFIER subjectAltName (2 5 29 17)
OCTET STRING, encapsulates {
SEQUENCE {
[1] ‘[email protected]’
}
}
}
SEQUENCE {
OBJECT IDENTIFIER subjectKeyIdentifier (2 5 29 14)
OCTET STRING, encapsulates {
OCTET STRING
17 7B 92 30 FF 44 D6 66 E1 90 10 22 6C 16 4F C0
8E 41 DD 6D
}
}
SEQUENCE {
OBJECT IDENTIFIER
authorityKeyIdentifier (2 5 29 35)
OCTET STRING, encapsulates {
SEQUENCE {
[0]
08 68 AF 85 33 C8 39 4A 7A F8 82 93 8E 70 6A
4A 20 84 2C 32
}
}
}
SEQUENCE {
OBJECT IDENTIFIER keyUsage (2 5 29 15)
BOOLEAN TRUE
OCTET STRING, encapsulates {
BIT STRING 6 unused bits
‘11’B
}
}
}
}
}
nd
402
404
409
411
DC
7C
4A
7E
7A
na
363
365
367
369
374
376
378
B4 17
31 B8
12 01
33 36
2D 14
23
INTEGER
}
Maio de 2008
Er
358
:
:
:
:
:
:
3:
:
:
:
117:
115:
33:
3:
26:
24:
22:
:
:
:
29:
3:
22:
20:
:
:
:
:
31:
3:
:
24:
22:
20:
:
:
:
:
:
14:
3:
1:
4:
2:
:
:
:
:
:
:
RFC 5280
Cooper, et al.
Standards Track
Tradução para Estudo
120
482
484
495
497
13:
9:
:
0:
:
129:
:
:
:
:
:
:
:
:
:
RFC 5280
SEQUENCE {
OBJECT IDENTIFIER
sha1withRSAEncryption
NULL
}
BIT STRING
00 20 28 34 5B 68 32 01
1A E1 04 CF AE AD C7 62
3D D9 1E C0 00 DC 10 A0
4C 63 81 26 5E D2 80 45
26 4A 9C 3B F2 26 36 69
61 8B A1 AB 91 64 E0 F3
B2 BF 73 D4 4D E4 58 E4
CE 84 60 76 E9 73 BB C7
}
Maio de 2008
(1 2 840 113549 1 1 5)
BB
14
BA
5E
08
37
62
85
0A
A4
85
33
79
61
EA
D3
36
1B
6F
E7
BB
3C
BC
91
0E
36
41
70
FB
1A
20
45
AD
31
CB
45
96
A3
74
EA
71
C0
62
3B
43
A4
92
62
C5
E2
7A
39
77
C9
86
5D
es
PKIX Certificate and CRL Profile
95
0C
B7
3B
4B
8A
0E
CD
nd
C.3 Certificado de Entidade Final Usando DSA
Este apêndice contem uma imagem hexadecimal comentada de um certificado de 914 bytes
versão 3. O certificado contém as seguintes informações
(a) o número serial é 256;
(b) o certificado é assinado com DSA e algoritmo de hash SHA-1;
na
(c) o nome distinto do emissor é cn=Example DSA CA,dc=example,dc=com;
(d) o nome distinto do sujeito é cn=DSA End Entity,dc=example,dc=com;
(e) o certificado foi emitido em 2 de maio de 2004, e expirado em 2 de maio de 2005;
(f) o certificado contém uma chave pública DSA de 1024 bit com parâmetros;
Er
(g) o certificado é um certificado de entidade final (não um certificado de AC);
(h) o certificado inclui um subject alternative name de
“<http://www.example.com/users/DSAendentity.html>” e um alternative name
de “<http://www.examplo.com>” – ambos são URLs;
(i) O certificado inlcui uma extensão authority key identifier e uma extensão certificate
policies especificando o OID da polı́tica 2.16.840.1.101.3.2.1.48.9; e
(j) o certificado inclui uma extensão crı́tica key usage especificando que a chave pública
se destina a verificação de assinaturas digitais.
0
4
8
10
13
17
910: SEQUENCE {
846:
SEQUENCE {
3:
[0] {
1:
INTEGER 2
:
}
2:
INTEGER 256
9:
SEQUENCE {
Cooper, et al.
121
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
67
76
78
80
85
101
103
118
133
135
137
139
151
156
158
160
172
181
183
185
190
es
51
53
55
Cooper, et al.
4 3)
1 25)
1 25)
nd
46
Maio de 2008
OBJECT IDENTIFIER dsaWithSha1 (1 2 840 10040
}
SEQUENCE {
SET {
SEQUENCE {
OBJECT IDENTIFIER
domainComponent (0 9 2342 19200300 100
IA5String ‘com’
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER
domainComponent (0 9 2342 19200300 100
IA5String ‘example’
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER commonName (2 5 4 3)
PrintableString ‘Example DSA CA’
}
}
}
SEQUENCE {
UTCTime 02/05/2004 16:47:38 GMT
UTCTime 02/05/2005 16:47:38 GMT
}
SEQUENCE {
SET {
SEQUENCE {
OBJECT IDENTIFIER
domainComponent (0 9 2342 19200300 100
IA5String ‘com’
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER
domainComponent (0 9 2342 19200300 100
IA5String ‘example’
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER commonName (2 5 4 3)
PrintableString ‘DSA End Entity’
}
}
}
na
28
30
32
34
7:
:
71:
19:
17:
10:
:
3:
:
:
23:
21:
10:
:
7:
:
:
23:
21:
3:
14:
:
:
:
30:
13:
13:
:
71:
19:
17:
10:
:
3:
:
:
23:
21:
10:
:
7:
:
:
23:
21:
3:
14:
:
:
:
Er
19
RFC 5280
Standards Track
1 25)
1 25)
Tradução para Estudo
122
PKIX Certificate and CRL Profile
Er
514
518
es
382
SEQUENCE {
SEQUENCE {
OBJECT IDENTIFIER dsa (1 2 840 10040 4 1)
SEQUENCE {
INTEGER
00 B6 8B 0F 94 2B 9A CE A5 25 C6 F2 ED FC FB 95
32 AC 01 12 33 B9 E0 1C AD 90 9B BC 48 54 9E F3
94 77 3C 2C 71 35 55 E6 FE 4F 22 CB D5 D8 3E 89
93 33 4D FC BD 4F 41 64 3E A2 98 70 EC 31 B4 50
DE EB F1 98 28 0A C9 3E 44 B3 FD 22 97 96 83 D0
18 A3 E3 BD 35 5B FF EE A3 21 72 6A 7B 96 DA B9
3F 1E 5A 90 AF 24 D6 20 F0 0D 21 A7 D4 02 B9 1A
FC AC 21 FB 9E 94 9E 4B 42 45 9E 6A B2 48 63 FE
43
INTEGER
00 B2 0D B0 B1 01 DF 0C 66 24 FC 13 92 BA 55 F7
7D 57 74 81 E5
INTEGER
00 9A BF 46 B1 F5 3F 44 3D C9 A5 65 FB 91 C0 8E
47 F1 0A C3 01 47 C2 44 42 36 A9 92 81 DE 57 C5
E0 68 86 58 00 7B 1F F9 9B 77 A1 C5 10 A5 80 91
78 51 51 3C F6 FC FC CC 46 C6 81 78 92 84 3D F4
93 3D 0C 38 7E 1A 5B 99 4E AB 14 64 F6 0C 21 22
4E 28 08 9C 92 B9 66 9F 40 E8 95 F6 D5 31 2A EF
39 A2 62 C7 B2 6D 9E 58 C4 3A A8 11 81 84 6D AF
F8 B4 19 B4 C2 11 AE D0 22 3B AA 20 7F EE 1E 57
18
}
}
BIT STRING, encapsulates {
INTEGER
30 B6 75 F7 7C 20 31 AE 38 BB 7E 0D 2B AB A0 9C
4B DF 20 D5 24 13 3C CD 98 E5 5F 6C B7 C1 BA 4A
BA A9 95 80 53 F0 0D 72 DC 33 37 F4 01 0B F5 04
1F 9D 2E 1F 62 D8 84 3A 9B 25 09 5A 2D C8 46 8E
2B D4 F5 0D 3B C7 2D C6 6C B9 98 C1 25 3A 44 4E
8E CA 95 61 35 7C CE 15 31 5C 23 13 1E A2 05 D1
7A 24 1C CB D3 72 09 90 FF 9B 9D 28 C0 A1 0A EC
46 9F 0D B8 D0 DC D0 18 A6 2B 5E F9 8F B5 95 BE
}
}
[3] {
SEQUENCE {
SEQUENCE {
OBJECT IDENTIFIER subjectAltName (2 5 29 17)
OCTET STRING, encapsulates {
SEQUENCE {
[6]
‘http://www.example.com/users/DSAendentity.’
‘html’
nd
359
439:
300:
7:
287:
129:
:
:
:
:
:
:
:
:
:
21:
:
:
129:
:
:
:
:
:
:
:
:
:
:
:
132:
128:
:
:
:
:
:
:
:
:
:
:
202:
199:
57:
3:
50:
48:
46:
:
:
Maio de 2008
na
206
210
214
223
227
RFC 5280
649
652
655
657
662
664
666
Cooper, et al.
Standards Track
Tradução para Estudo
123
PKIX Certificate and CRL Profile
787
789
791
813
815
820
822
824
826
838
840
845
848
850
}
es
}
SEQUENCE {
OBJECT IDENTIFIER issuerAltName (2 5 29 18)
OCTET STRING, encapsulates {
SEQUENCE {
[6] ‘http://www.example.com’
}
}
}
SEQUENCE {
OBJECT IDENTIFIER subjectKeyIdentifier (2 5 29 14)
OCTET STRING, encapsulates {
OCTET STRING
DD 25 66 96 43 AB 78 11 43 44 FE 95 16 F9 D9 B6
B7 02 66 8D
}
}
SEQUENCE {
OBJECT IDENTIFIER
authorityKeyIdentifier (2 5 29 35)
OCTET STRING, encapsulates {
SEQUENCE {
[0]
86 CA A5 22 81 62 EF AD 0A 89 BC AD 72 41 2C
29 49 F4 86 56
}
}
}
SEQUENCE {
OBJECT IDENTIFIER certificatePolicies (2 5 29 32)
OCTET STRING, encapsulates {
SEQUENCE {
SEQUENCE {
OBJECT IDENTIFIER ‘2 16 840 1 101 3 2 1 48 9’
}
}
}
}
SEQUENCE {
OBJECT IDENTIFIER keyUsage (2 5 29 15)
BOOLEAN TRUE
OCTET STRING, encapsulates {
BIT STRING 7 unused bits
‘1’B (bit 0)
}
}
}
nd
780
782
}
na
749
751
756
758
Maio de 2008
Er
714
716
721
723
725
:
:
:
33:
3:
26:
24:
22:
:
:
:
29:
3:
22:
20:
:
:
:
:
31:
3:
:
24:
22:
20:
:
:
:
:
:
23:
3:
16:
14:
12:
10:
:
:
:
:
14:
3:
1:
4:
2:
:
:
:
:
:
RFC 5280
Cooper, et al.
}
124
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
865
868
870
892
Maio de 2008
:
}
9: SEQUENCE {
7:
OBJECT IDENTIFIER dsaWithSha1 (1 2 840 10040 4 3)
:
}
47: BIT STRING, encapsulates {
44:
SEQUENCE {
20:
INTEGER
:
65 57 07 34 DD DC CA CC 5E F4 02 F4 56 42 2C 5E
:
E1 B3 3B 80
20:
INTEGER
:
60 F4 31 17 CA F4 CF FF EE F4 08 A7 D9 B2 61 BE
:
B1 C3 DA BF
:
}
:
}
: }
nd
C.4 Lista de Certificados Revogados
es
854
856
RFC 5280
23
25
27
29
31
43
48
50
52
64
73
352: SEQUENCE {
202:
SEQUENCE {
1:
INTEGER 1
13:
SEQUENCE {
9:
OBJECT IDENTIFIER
:
sha1withRSAEncryption (1 2 840 113549 1 1 5)
0:
NULL
:
}
67:
SEQUENCE {
19:
SET {
17:
SEQUENCE {
10:
OBJECT IDENTIFIER
:
domainComponent (0 9 2342 19200300 100 1 25)
3:
IA5String ‘com’
:
}
:
}
23:
SET {
21:
SEQUENCE {
10:
OBJECT IDENTIFIER
:
domainComponent (0 9 2342 19200300 100 1 25)
7:
IA5String ‘example’
:
}
:
}
19:
SET {
Er
0
4
7
10
12
na
Este apêndice contém uma imagem hexadecimal comentada de uma LCR versão 2 com duas
extensões (cRLNumber e authorityKeyIdentifier). A LCR foi emitida por cn=Example
CA,dc=example,dc=com em 5 de ferereiro de 2005; a próxima emissão agendada era 6
de fevereiro de 2005. A LCR inclui um certificado revogado: serial number 18, que foi
revogado em 19 de novembro de 2004 devido a keyCompromise. A LCR propriamente dita
tem número 12, e foi assinada com RSA e SHA-1.
125
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
171
173
175
197
199
204
206
209
211
222
224
es
}
UTCTime 05/02/2005 12:00:00 GMT
UTCTime 06/02/2005 12:00:00 GMT
SEQUENCE {
SEQUENCE {
INTEGER 18
UTCTime 19/11/2004 15:57:03 GMT
SEQUENCE {
SEQUENCE {
OBJECT IDENTIFIER cRLReason (2 5 29 21)
OCTET STRING, encapsulates {
ENUMERATED 1
}
}
}
}
}
[0] {
SEQUENCE {
SEQUENCE {
OBJECT IDENTIFIER
authorityKeyIdentifier (2 5 29 35)
OCTET STRING, encapsulates {
SEQUENCE {
[0]
08 68 AF 85 33 C8 39 4A 7A F8 82 93 8E 70 6A
4A 20 84 2C 32
}
}
}
SEQUENCE {
OBJECT IDENTIFIER cRLNumber (2 5 29 20)
OCTET STRING, encapsulates {
INTEGER 12
}
}
}
}
}
SEQUENCE {
OBJECT IDENTIFIER
sha1withRSAEncryption (1 2 840 113549 1 1 5)
NULL
}
BIT STRING
nd
160
162
164
166
SEQUENCE {
OBJECT IDENTIFIER commonName (2 5 4 3)
PrintableString ‘Example CA’
}
}
na
94
109
124
126
128
131
146
148
150
155
157
17:
3:
10:
:
:
:
13:
13:
34:
32:
1:
13:
12:
10:
3:
3:
1:
:
:
:
:
:
47:
45:
31:
3:
:
24:
22:
20:
:
:
:
:
:
10:
3:
3:
1:
:
:
:
:
:
13:
9:
:
0:
:
129:
Maio de 2008
Er
75
77
82
RFC 5280
126
Cooper, et al.
Standards Track
Tradução para Estudo
PKIX Certificate and CRL Profile
22
76
1F
92
A3
E7
72
C1
DC
23
EE
F8
4C
2B
6A
A6
18
B4
90
9F
25
62
CB
AF
7D
81
17
10
38
E2
CE
C1
F7
6E
A2
12
15
2B
7A
55
08
B5
6F
27
FF
C3
ED
17
CE
6D
60
AF
00
46
67
A2
CC
BE
E4
4A
FD
80
99
33
75
0E
BD
D4
3E
EF
8B
4C
Maio de 2008
D0
FB
AA
2F
7E
78
6E
D6
D0
15
8C
85
EE
82
70
06
6A
14
55
E2
3D
D1
81
98
9B
6C
DE
36
26
15
7D
2B
AD
C8
8E
44
12
C6
43
A4
10
17
84
7D
EB
D0
42
FC
F4
6D
6F
AA
D8
9C
74
2E
}
es
:
:
:
:
:
:
:
:
:
RFC 5280
Endereço dos Autores
na
Stefan Santesson
Microsoft
One Microsoft Way
Redmond, WA 98052
USA
EMail: [email protected]
nd
National Institute of Standards and Technology
100 Bureau Drive, Mail Stop 8930
Gaithersburg, MD 20899-8930
USA
EMail: [email protected]
Er
Stephen Farrell
Distributed Systems Group
Computer Science Department
Trinity College Dublin
Ireland
EMail: [email protected]
Sharon Boeyen
Entrust
1000 Innovation Drive
Ottawa, Ontario
Canada K2K 3E7
EMail: [email protected]
Russell Housley
Vigil Security, LLC
918 Spring Knoll Drive
Herndon, VA 20170
USA
EMail: [email protected]
Cooper, et al.
Standards Track
Tradução para Estudo
127
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
es
Tim Polk
National Institute of Standards and Technology
100 Bureau Drive, Mail Stop 8930
Gaithersburg, MD 20899-8930
USA
EMail: [email protected]
Declaração Plena de Propriedade Direitos Autorais
Copyright (C) The IETF Trust (2008).
nd
Este documento está sujeito aos direitos, licenças e restrições contidas em BCP 78, e exceto
o estabelecido no documento referenciado, os autores conservam todos os seus direitos.
na
Este documento e as informações aqui contidas são fornecidas por uma base “COMO ESTÁ”
e O COLABORADOR, A ORGANIZAÇÃO QUE ELA(E) REPRESENTA OU É PATROCINADO (SE ALGUMA), A INTERNET SOCIETY, O IETF TRUST E O INTERNET
ENGINEERING TASK FORCE REJEITAM TODAS AS GARANTIAS, EXPRESSAS
OU IMPLÍCITAS, INCLUINDO, MAS NÃO LIMITADO A QUALQUER GARANTIA
QUE O USO DA INFORMAÇÃO AQUI CONTIDA NÃO INFRINGIRÁ QUAISQUER
DIREITOS OU QUAISQUER GARANTIAS DE COMERCIALIZAÇÃO OU ADEQUAÇÃO PARA UM DETERMINADO PROPÓSITO.
Propriedade Intelectual
Er
O IETF não toma posição quanto à validade ou âmbito de qualquer Direitos de Propriedade
Intelectual ou outros direitos que podem ser reclamados à figura da execução ou utilização da tecnologia descrita nesse documento ou à medida em que qualquer licença sob tais
direitos pode ou não estar disponı́vel; nem representa que ele tenha feito qualquer esforço
independente para identificar quaisquer tipo de direitos. Informações sobre os procedimentos no que diz respeito aos direitos dos documentos RFC podem encontradas no BCP 78 e
BCP 79.
Cópias de divulgações IPR feitas para a Secretaria do IETF e quaisquer garantias de licenças a ser disponibilizado, ou o resultado de uma tentativa de obtenção de uma licença
ou autorização geral para a utilização de tais direitos proprietários pelos implementadores
ou usuários da presente especificação, podem ser obtidas a partir do repositório on-line do
IETF em http://www.ietf.org/ipr.
O IETF convida qualquer parte interessada, para trazer ao seu conhecimento, qualquer
direitos de autor, patentes ou pedidos de patentes, ou outros direitos de propriedade que
Cooper, et al.
Standards Track
Tradução para Estudo
128
PKIX Certificate and CRL Profile
RFC 5280
Maio de 2008
Er
na
nd
es
podem abranger tecnologia que possam ser necessárias para a implementação desta norma.
Favor enviar as informações para o IETF em [email protected].
Cooper, et al.
Standards Track
Tradução para Estudo
129