Categories: Java, Segurança

Validação de certificados digitais para hosts confiáveis (bypass)

O erro abaixo ocorre quando tentamos chamar uma url HTTPS cujo Web Server não possui um certificado digital assinado por uma Autoridade Certificadora.

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1611)
…  (omitindo linhas do trace)
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:285)
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:191)
…  (omitindo linhas do trace)
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:174)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:238)
…  (omitindo linhas do trace)

Quando isto ocorre, existem duas abordagens possíveis para que o cliente do Web Server possa realizar a chamada HTTPS sem receber o erro acima apresentado.


Categories: Segurança

Conhecendo a segurança declarativa do Java (JAAS) – Parte 1

Afinal, o que é esse JAAS ?

O JAAS ou “Java Authentication and Authorization Service” é um conjunto de API’s que visam desacoplar as aplicações dos controles de acesso a recursos da mesma, ficou bonita essa frase hein ? na prática isso significa retirar do desenvolvedor a responsabilidade de ter que controlar o acesso a recursos por perfis de maneira programática( filtros e outros meios ilicitos que eu também já fiz /o\ ). Todo o controle passa a ser feito de maneira declarativa no descritor da aplicação, daí o nome segurança declarativa, intuituivo, não ?

Basicamente o JAAS pode ser atilizado para dois propósitos:
– Autenticação de usuários, ou seja, verificar se o usuário é registrado;
– Autorização de usuários, ou seja, verificar se o usuário já autenticado tem permissão de acesso para determinado recurso protegido;

Tá, mas…o que eu ganho usando o JAAS ?

Muitas coisas, você passa a se preocupar de fato com o código que é importante para a sua aplicação, as restrições a determinados recursos não vão mais interferir na maneira como você desenvolver sua aplicação, você pode por exemplo após ter concluído o desenvolvimento fazer as devidas declarações de quais recursos serão protegidos e quem poderá acessá-los. Implicitamente isso tornará seu código mais legível e focado nas regras de negócio. Sem contar que qualquer modificação nas restrições implicará na mudança de apenas um arquivo(web.xml) e não mais em diversos pontos espalhados pela aplicação.