Java Cert Path

Propaganda
Java Cert Path
Notas para a UC de “Segurança Informática”
Pedro Félix
(pedrofelix em cc.isel.ipl.pt)
Instituto Superior de Engenharia de Lisboa
Sumário
• Java Certification Path API
– Criação e verificação de cadeias de certificados
– Arquitectura baseada em providers
– Implementações para certificados X.509 e perfil PKIX
Java Cert Path
2
Classes Certificate e CertificateFactory
• Certificate – classe para a representação abstracta de certificados
• X509Certificate – estende a classe Certificate para o caso concreto
de certificados X.509
• CertificateFactory – engine class para a criação de certificados ou
cadeias de certificados com base na sua representação codificada,
tipicamente em stream.
• X509Extension – Interface com métodos de acesso a todas as
extensões presentes num certificado X.509
<<abstract class>>
cria
Certificate
<<engine class>>
CertificateFactory
<<interface>>
X509Extension
contém
<<engine class>>
implementa
CertStore
estende
X509Certificate
parametriza
<<interface>>
CertStoreParameters
Java Cert Path
3
Cadeia de certificação
•
Uma cadeia (caminho) de certificação é uma sequência de n certificados
onde
–  i  {0, n-2}: C[i].subject = C[i+1].issuer
– C[0] é um certificado emitido pelo trust anchor
– C[n-1] é o certificado a validar
•
Na plataforma Java, uma cadeia de certificados é representada pela classe
abstracta CertPath
– é imutável
– contém uma lista de certificados
– No caso de certificados X.509, o primeiro é o de end-entity e o último é o emitido
pelo trust anchor (não inclui o trust anchor)
•
Construção:
– CertificateFactory – a cadeia existe em forma codificada
– CertPathBuilder – constrói uma cadeia com base num conjunto de trust anchors,
um conjunto de certificados e um critério de selecção para o certificado final (end
entity)
•
Validação: CertPathValidator
Java Cert Path
4
Construção e validação de cadeias (1)
produz como resultado
<<engine class>>
<<interface>>
CertPathValidator
CertPathValidatorResult
parametrizada por
valida
<<interface>>
CertPathParameters
cria
CertPath
<<engine class>>
CertificateFactory
cria
parametrizada por
<<engine class>>
<<interface>>
CertPathBuilder
CertPathBuilderResult
produz como resultado
Java Cert Path
5
Construção e validação de cadeias (2)
• CertPathValidator
– public final CertPathValidatorResult
validate (CertPath certPath, CertPathParameters params)
throws CertPathValidatorException,
InvalidAlgorithmParameterException
• CertPathBuilder
– public final CertPathBuilderResult
build (CertPathParameters params)
throws CertPathBuilderException,
InvalidAlgorithmParameterException
Java Cert Path
6
Parametrização (1)
<<interface>>
CertPathParameters
implementa
trust
anchor
KeyStore
PKIXParameters
CertStore
estende
PKIXBuilderParameters
critério de selecção –
certificado de end user
CertSelector
Java Cert Path
7
Parametrização (2)
• Construção:
– Conjunto de trust anchors – define os issuers dos certificados iniciais da
cadeia
– Conjunto de certificados (CertStore) – define os certificados que
podem constituir a cadeia
– Selector (X509CertSelector) – define os requisitos (ex. nome do subject)
para o certificado final (end user)
Java Cert Path
8
Classe CertStore
<<engine class>>
parametriza
CertStore
CertStoreParameters
implementa
CollectionCertStoreParameters
implementa
LDAPCertStoreParameters
Java Cert Path
9
Classe CertSelector
<<interface>>
CertSelector
boolean match(Certificate)
implementa
X509Selector
Java Cert Path
10
Debugging
• Parâmetros da máquina virtual: -Djava.security.debug=certpath
• Coloca informação adicional no standard error
Java Cert Path
11
Download