CRL ( certificate revoked list) monitor hosted in the cloud.
Final task for the MBA in Java Software Development:
- Java EE
- Openshift
- Android
- Rest
- Digital Certificate
TDC 2019 Cloud - Liberte sua arquitetura com cloud native
TCC MBA Desenvolvimento de Aplicações Java - SOA 2013
1. 1 Desenv. Soluções Corporativas Java
Projeto Java– TCC
Aluno:
Victor Yuji Maehira
Prof. Eduardo Endo
Dez/2013
2. 2 Desenv. Soluções Corporativas Java
• Motivação: Por que monitorar uma CRL?
• O que é uma CRL (Certificate Revoked List)?
• O que é um certificado digital?
• Como monitorar uma CRL?
• Tecnologias utilizadas
• Um pouco de código
• Navegando no Sistema
• Links
• Agradecimentos
Agenda
3. 3 Desenv. Soluções Corporativas Java
Motivação
• Por que monitorar uma Lista de Certificados Revogados (CLR)?
• Mas, o que é uma Lista de Certificados Revogados?
• O que é um certificado digital?
4. 4 Desenv. Soluções Corporativas Java
Certificado Digital
O que é um certificado digital?
“Um certificado digital é um arquivo de computador que contém um conjunto de
informações referentes a entidade para o qual o certificado foi emitido (seja
uma empresa, pessoa física ou computador) mais a chave pública referente a
chave privada que se acredita ser de posse unicamente da entidade
especificada no certificado”.
Fonte: wikipedia (http://pt.wikipedia.org/wiki/Certificado_digital)
5. 5 Desenv. Soluções Corporativas Java
Certificate Revoked List
Uma pessoa pode se identificar como outra, caso tenha acesso ao
certificado e senha desta, inclusive com validade jurídica.
Por isso, caso o certificado digital tenha a chave privada comprometida, é
preciso revogá-lo imediatamente. A lista “negra” dos certificados
revogados (CRL) é pública e tem um endereço na web.
Exemplo:
http://www.certificadodigital.com.br/repositorio/lcr/serasarfbv2.crl
6. 6 Desenv. Soluções Corporativas Java
Certificate Revoked List
Cada Autoridade Certificadora tem sua CRL.
Exemplo:
http://www.certificadodigital.com.br/repositorio/lcr/serasarfbv2.crl
8. 8 Desenv. Soluções Corporativas Java
Certificate Revoked List
• Votando à pergunta: Por que monitorar uma Lista de Certificados
Revogados (CLR)?
• Resposta: custo de credenciamento/descredenciamento
• Se CRL não estiver satisfazer SLA, a autoridade certificadora é
descredenciada.
• Se descredenciada, todo o investimento é perdido.
9. 9 Desenv. Soluções Corporativas Java
Como monitorar uma CRL?
Já existem softwares que monitoram CRL:
• Exemplo: sistema de monitoramento Nagios (open source) mas com
plugin proprietário
• As soluções mais comuns são de ferramentas de monitoramento
integradas com softwares desenvolvido “in-house”
Solução: desenvolvimento de monitoramento em nuvem pública
10. 10 Desenv. Soluções Corporativas Java
Escolha da solução de cloud
Fonte: http://www.infoq.com/br/articles/paas_comparison/ jan/2012
13. 13 Desenv. Soluções Corporativas Java
Tecnologias utilizadas
• Openshift (cloud)
• Maven (gestão de dependências e build)
• Android (interface mobile)
• Java EE 6 (Jboss AS 7)
• Ejb 3.1
• Ejb Timer
• Jsf
• Jpa
• Restful web services
• Json
• Gson (Json do Google)
• PrimeFaces (gráficos)
• Git (repositório de fontes)
• MySql mysql-5.1 (banco de dados)
14. 14 Desenv. Soluções Corporativas Java
Um pouco de código
Fonte Android:
Fonte Java EE
15. 15 Desenv. Soluções Corporativas Java
Um pouco de código
Principais entidades do banco:
16. 16 Desenv. Soluções Corporativas Java
Um pouco de código
O JDK já tem uma API nativa para fazer parse de CRL:
java.security.cert.X509CRL
A CRL pode estar:
• INDISPONÍVEL
• DISPONÍVEL mas desatualizada
• DISPONÍVEL e atualizada (OK)
17. 17 Desenv. Soluções Corporativas Java
Um pouco de código
O coração do monitoramento é um EJB Timer que monitora as CRLs
de minuto em minuto.
18. 18 Desenv. Soluções Corporativas Java
Um pouco de código
O último resultado da consulta das CRLs é exposto via restful web service
a ser consumido pela interface Android.
19. 19 Desenv. Soluções Corporativas Java
Um pouco de código
No Android está o client do web service Restful. Foi utilizada a API GSON
do Google para tratar o Json:
20. 20 Desenv. Soluções Corporativas Java
Um pouco de código
No Java EE 6 não é preciso declarar interfaces Locais ou Remotas para
EJB e é possível injetar o EntityManager.
21. 21 Desenv. Soluções Corporativas Java
Um pouco de código
No Openshift, é feito o restart automático do Jboss, build e deploy da
aplicação via Maven logo após fazer o upload do código no Git.
git add .
git commit –m “Fazendo commit”
git push
Found pom.xml... attempting to build with 'mvn -e clean package -
Popenshift -DskipTests'
22. 22 Desenv. Soluções Corporativas Java
Navegando no sistema
Tela principal: https://crlmonitor-victormaehira.rhcloud.com/
23. 23 Desenv. Soluções Corporativas Java
Navegando no sistema
Login: https://crlmonitor-victormaehira.rhcloud.com/login.jsf
25. 25 Desenv. Soluções Corporativas Java
Navegando no sistema
Cadastro de Autoridade Certificadora
26. 26 Desenv. Soluções Corporativas Java
Navegando no sistema
Cadastro de URL de Lista de Certificados Revogados (CRL)
27. 27 Desenv. Soluções Corporativas Java
Navegando no sistema
Consulta de Status Atual das CRLs (Auto-refresh cada minuto)
28. 28 Desenv. Soluções Corporativas Java
Navegando no sistema
Gráfico de Disponibilidade (PrimeFaces)
29. 29 Desenv. Soluções Corporativas Java
Navendo no Sistema
Restful Web Service: https://crlmonitor-victormaehira.rhcloud.com/rest/monitoredurls/status
30. 30 Desenv. Soluções Corporativas Java
Navegando no Sistema (Android)
Tela principal
31. 31 Desenv. Soluções Corporativas Java
Navegando no Sistema (Android)
Lista Status CRLs
(consome web
service restful)