|
View:
New views
3 Messages
—
Rating Filter:
Alert me
|
|
|
Validação de certificados revogados (CRL)Pessoal,
Estou batendo cabeça aqui para descobrir uma maneira de validar um certificado digital contra a sua respectiva CRL.
Preciso obter este arquivo a partir da URL contida na extensão do certificado.
O que eu fiz até agora?
A partir de um objeto do tipo "X509Certificate", utilizo o método "getExtensionValue" passando como parâmetro p OID "2.5.29.31". (ex: certificado.getExtensionValue("2.5.29.31")).
Este método me retorna um array de bytes, segundo a documentação: "Gets the DER-encoded OCTET string for the extension value (extnValue) identified by the passed-in
oid String.".E agora? Qual a melhor maneira de acessar a URL indicada para obter a CRL? Alguma sugestão?
Obrigado,
Marcelo Gonzalez.
|
|
|
Re: Validação de certificados revogados (CRL) public static Vector getCRLDistUrls(X509Certificate cert) {
CRLDistPoint crlDistPoints = UtilAssinador.getCRLDistPoint(cert); AuthorityInformationAccess authInfoAcc = getAuthorityInformationAccess(cert); Vector urls = new Vector(); if (crlDistPoints != null) { DistributionPoint[] distPoints = crlDistPoints.getDistributionPoints(); for (int i = 0; i < distPoints.length; i++) { DistributionPointName dp_name = distPoints[i].getDistributionPoint(); if (dp_name.getType() == DistributionPointName.FULL_NAME) { GeneralName[] generalNames = GeneralNames.getInstance(dp_name.getName()).getNames(); for (int j = 0; j < generalNames.length; j++) { if (generalNames[j].getTagNo() == GeneralName.uniformResourceIdentifier) { String url = ((DERIA5String) generalNames[j].getName()).getString(); urls.add(url); } } } } } return urls; } private static AuthorityInformationAccess getAuthorityInformationAccess(X509Certificate cert) { AuthorityInformationAccess authInfoAcc = null; try { DERObject auth_info_acc = getExtensionValue(cert, AUTH_INFO_ACCESS); if (auth_info_acc != null) { authInfoAcc = AuthorityInformationAccess.getInstance(auth_info_acc); } } catch (Exception e) { log.error(e); } return authInfoAcc; } private static DERObject getExtensionValue(java.security.cert.X509Extension ext, String oid) throws AnnotatedException { byte[] bytes = ext.getExtensionValue(oid); if (bytes == null) { return null; } return getObject(oid, bytes); } private static DERObject getObject(String oid, byte[] ext) { DERObject dERObject = null; try { ASN1InputStream aIn = new ASN1InputStream(ext); ASN1OctetString octs = (ASN1OctetString) aIn.readObject(); aIn = new ASN1InputStream(octs.getOctets()); dERObject = aIn.readObject(); } catch (IOException e) { log.error(e); } return dERObject; } 2009/10/23 Marcelo Gonzalez <mfgonzalez@...>
|
|
|
Re: Validação de certificados revogados (CRL)Obrigado pela resposta Renato!
Tu pode me enviar tb o que o teu método "UtilAssinador.getCRLDistPoint(cert)"? Procurei referências sobre o boucy castle para validação de certificados revogado mas não encontrei muita coisa! Depois de obter a lista de URLs, como tu conecta para obter a lista? Obrigado! Marcelo Gonzalez. 2009/10/23 Renato Diogo <renato.c.diogo@...> public static Vector getCRLDistUrls(X509Certificate cert) { |
| Free embeddable forum powered by Nabble | Forum Help |