quinta-feira, 17 de setembro de 2009

Configurando SSL/TLS no JBoss/Tomcat

Segurança sempre soa como uma falácia na maioria dos projetos de software. É como aquele pessoal que não gosta ou não sabe testar: eles sabem que a coisa existe e que é preciso ou muito recomendável usar, mas no fim das contas dão de ombros e se funcionar, funcionou.

Isso acontece muito quando o âmbito é segurança. Qual cliente ou usuário não se preocupa com segurança? Ao menos um controle de acesso com autenticação através de usuário e senha eles sempre exigem. E qualquer desenvolvedor que se preze se preocupa com isso.

Quando pensamos em segurança em aplicações Java, temos que conhecer bem como funciona a arquitetura de segurança da plataforma Java, que é bem completa e útil. A divisão se dá em três "áreas" distintas, que são:

  • JCA (Java Cryptography Architecture): Define classes e interfaces que são responsáveis por trabalhar com criptografia e descriptografia de dados e informações;
  • JSSE (Java Secure Socket Extension): Usa a JCA para criar conexões seguras para troca de dados e informações;
  • JAAS (Java Authentication and Authorization Service): Responsável por autenticação e autorização nas aplicações Java.

Neste artigo vou abordar somente um pouco do JSSE. Para saber mais sobre JAAS veja no arquivo do blog.

O SSL (Secure Socket Layer) e o TLS (Transport Layer Security) são protocolos criptográficos usados para garantir a comunicação segura entre serviços de internet. Não vou entrar em detalhes sobre os protocolos e nem nas suas diferenças, para maiores informações sugiro esta leitura.

A necessidade fundamental de uma implementação com SSL é garantir a privacidade e a integridade dos dados trafegados entre as aplicações que estão se comunicando. E isso é realizado através da autenticação das aplicações e da utilização de algoritmo criptográfico nos dados que estão sendo trafegados.

Dizer isso é meio bonitinho mas ninguém consegue compreender como isso ocorre de verdade, o que acontece por "por baixo dos panos". Vamos imaginar um cliente utilizando um browser qualquer para acessar uma aplicação instalada num servidor JBoss, com certificado SSL implantado. Quando a comunicação entre eles é iniciada, o servidor envia uma chave pública ao browser, que usa esta chave para criar uma chave privada temporária que é enviada de volta ao servidor. Desta forma as duas partes, servidor e browser, usarão estas chaves para estabelecer uma comunicação segura. Para saber mais sobre chaves públicas, privadas, criptografia simétrica e assimétrica veja a minha apresentação sobre certificação digital.

Vamos então por a mão na massa e configurar a aplicação.

Criando as chaves

Usaremos o keytool para criar um keystore e nele armazenar as chaves.

keytool -genkey -keystore jeve.keystore -storepass jevepass -keypass jevepass -keyalg RSA -alias jeve_key -validity 3650 -dname "cn=Jeveaux,ou=Jeveaux,c=Vitoria,s=ES,c=BR"

Detalhamento do comando:

  • keytool: comando
  • -genkey: parâmetro para criação das chaves
  • -keystore: indica o caminho/nome do keystore (jeve.keystore)
  • -storepass: indica a senha do keystore (jevepass)
  • -keypass: indica a senha da chave (jevepass)
  • -keyalg: indica o algoritmo de criptografia utilizado (RSA)
  • -alias: indica o nome da chave a ser criada dentro do keystore (jeve_key)
  • -validity: Validade do certificado em dias (3650)
  • -dname "[...]": Informações do certificado (CN = nome comum, OU = unidade organizacional (departamento, divisão), O = nome da organização, L = nome da localidade (cidade), S = estado, C = código do país)

Próximos passos, informar ao JBoss/Tomcat onde está o keystore e qual chave usar.

Instalando as chaves

Basicamente temos que copiar o arquivo do keystore, gerado no passo anterior, para o JBoss. O ideal seria em:

$JBOSS_HOME/server/default/conf

Configurando o JBoss ou o Tomcat

Trabalharemos agora no arquivo server.xml para configurar qual keystore usar. Este é um arquivo de configuração do Tomcat.

Se você estiver usando JBoss:

$JBOSS_HOME/server/default/deploy/jbossweb.sar/server.xml

Se estiver usando Tomcat:

$TOMCAT_HOME/conf/server.xml

Procure por um comentário semelhante a este:

Haverá um trecho do arquivo comentado logo abaixo, vamos retirar os comentários e ativar este trecho de código. Ajustando as propriedades adequadas chegaremos em algo próximo disso:

<Connector protocol="HTTP/1.1" SSLEnabled="true"
port="8443" address="${jboss.bind.address}"
maxThreads="100" strategy="ms" maxHttpHeaderSize="8192"
emptySessionPath="true"
scheme="https" secure="true" clientAuth="false"
keystoreFile="${jboss.server.home.dir}/conf/jeve.keystore"
keystorePass="jevepass" sslProtocol = "TLS" />

Os pontos mais importantes são: port, keystoreFile e keystorePass, que são responsáveis por, respectivamente, definir a porta para utilização do SSL, qual o arquivo contém as chaves e qual a senha do arquivo que contém as chaves.

Neste ponto já conseguimos utilizar a aplicação através do protocolo HTTPS, basta acessar:

https://localhost:8443/aplicacao

Configurando a aplicação

Até aqui a aplicação está disponível tanto através de HTTP quando através de HTTPS. Em algumas situações isso é desejado, em outras não. Existem casos onde precisaremos que algumas partes ou módulos da aplicação só funcionem com HTTPS e outras situações que toda a aplicação responda somente sob HTTPS, e ambas são possíveis de serem atendidas, veremos.

        <security-constraint>
<web-resource-collection>
<web-resource-name>app-nameweb-resource-name>
<url-pattern>/*url-pattern>
web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIALtransport-guarantee>
user-data-constraint>
security-constraint>

Inserindo este trecho no seu web.xml nós faremos com que a aplicação inteira responda apenas sob protocolo HTTPS.

Importando um certificado válido

Tudo foi feito utilizando um certificado fictício e poderá correr assim durante o desenvolvimento, não há problema algum. Mas em produção este certificado terá o mesmo valor que uma nota de um cruzado novo. Então você ou sua empresa farão a aquisição de um certificado válido através de um autoridade certificadora e, quando isso ocorrer, importaremos o certificado válido para nosso keystore, utilizando a mesma ferramenta que usamos para criar o certificado anterior (keytool) vejamos:

keytool -import -alias jeve_key -keystore $JBOSS_HOME/server/default/conf/jeve.keystore -trustcacerts -file $ENDERECO_DO_CERTIFICADO_VALIDO/certificado_valido.cer

E, pronto, certificado válido importado e comunicação segura garantida.

NOTA importante :A senha do seu certificado deve ser a mesma senha do seu keystore. Se forem diferentes você vai tomar uma java.io.IOException: Cannot recover key! Mais

Fonte: http://imasters.uol.com.br/artigo/14188/seguranca/configurando_ssltls_no_jbosstomcat/

Informo que essa publicação é somente para armazenamento e informação particular, não tendo a intenção de divulgação pública.

Wilson Milagres

quarta-feira, 14 de janeiro de 2009

Velhos ditados, novos tempos

1. A pressa é inimiga da conexão.
2. Amigos, amigos, senhas à parte.
3. À arquivo dado não se olha o formato.
4. Diga-me que chat freqüentas e te direi quem és.
5. Para bom provedor uma senha basta.
6. Não adianta chorar sobre arquivo deletado.
7. Em briga de namorados virtuais não se mete o mouse.
8. Em terra off-line, quem tem um 486 é rei.
9. Hacker que ladra, não morde.
10. Mais vale um arquivo no HD do que dois baixando.
11. Melhor prevenir do que formatar.
12. Quando a esmola e demais, o santo desconfia que tem virus anexado.
13. Quando um não quer, dois nao teclam.
14. Quem ama um 486, Pentium 5 lhe parece.
15. Quem clica seus males multiplica.
16. Quem com virus infecta, com vírus será infectado.
17. Quem não tem banda larga, caça com modem.
18. Quem nunca errou, que aperte a primeira tecla.
19. Quem semeia e-mails, colhe spams.
20. Quem tem dedo vai a Roma.com
21. Um é pouco, dois é bom, três é chat ou lista virtual.
22. Vão-se os arquivos, ficam os back-ups.
23. Há dois tipos de pessoas na informática. Os que perderam o HD e os que ainda vao perder…
24. Aluno de informática não cola, faz backup.
25. Na informática nada se perde, nada se cria. Tudo se copia… e depois se cola.

quarta-feira, 15 de outubro de 2008

Driblando o proxy

34 Comentários:
Denis Barbosa Cacique disse...
Aqui no trampo o orkut é
bloqueado, mas eu entro assim:

http://images.orkut.com/

Por eqto tá dando certo.
Abraços

Denis
ps: parabéns pelo blog!

11/9/06 20:47
Fueda disse...
Já eu, não consigo abaixar Torrents utilizando o uTorrent ou outro Torrent Client qualquer... ALGUM SER CARIDOSO PODE ME AJUDAR ?!???

11/9/06 20:49
Anonymous disse...
As vezes funciona:
www.mathtunnel.com

11/9/06 21:00
Anonymous disse...
www.http-tunnel.com
Não tem erro, só baixar instalar e trocar no browser o proxy para 'localhost' (sem aspas !!) e porta 1080
Se não funcionar ainda tem o HTTPort e o Freedom => explicações futuras se alguém precisar (voltarei a ler os comentários aqui).
Quem tiver tempo ainda pode usar o que fala em: http://sebsauvage.net/punching/

11/9/06 21:03
Anonymous disse...
hahah! pode deixar que já damo um jeito..vou ver com a galera do callcenter da Brasiltelecom - HelpDesk ADSL...eles SEMPRe dão um jeitinho pra conectar..haah

11/9/06 21:09
Paulo Filho disse...
no LINK de hj no Estadão: partido pirata concorre à proxima eleição, lutando a favor da pirataria digital.
Vame um post!

11/9/06 21:48
Anonymous disse...
Tem um tal de bloqueador chamado WebSense (usado na Petrobras) que é foda... Estranho é que eles nunca bloquearam o Kibeloco. Já o Orkut, nem entrando só com o IP dá certo.

Parabéns pela iniciativa!

11/9/06 22:01
Anonymous disse...
Alguem sabe como burlar o BRMA? este porra delimita ate o horario q o usuario pode conectar.

11/9/06 22:05
in_darkness® disse...
Uma lista de sites Proxys:
http://anonycat.com/webproxylist.htm

agora e so testar

11/9/06 22:18
Anonymous disse...
"ajudar os outros leitores que não conseguem enrolar o trabalho devidamente"
hahaha! mto bom!

11/9/06 22:27
tck disse...
Vamos la ... entao!!!

primeiro de tudo vc tem que saber o seu caminho de saida para a internet e as portas em que vc navega. Por padrão as portas são ou a 80 (http) ou a 3128 ( é a porta padrão de muitos proxys server)

segundo passo como descobrir o caminho!!! como? tracert nele!!!
Para isso abra o prompt do dos

Iniciar -> executar -> cmd ou command


exemplo: C:\Documents and Settings\tck>tracert http://omedi.blogspot.com

Rastreando a rota para blogspot.l.google.com [72.14.219.191]
com no máximo 30 saltos:

1 33 ms 10 ms 10 ms 10.111.222.1
2 7 ms * 11 ms ifc-gw.MEUPROVEDOR.com.br [XXX.YYY.ZZZ.1]
3 9 ms * 37 ms embratel-S2-0-1-36-acc01.mpa.embratel.net.br [200.242.108.225]
4 * 603 ms 609 ms ebt-A5-0-5-gacc01.spolp.embratel.net.br [200.230.158.10]
5 592 ms * * ebt-C2-core01.spo.embratel.net.br [200.230.243.17]
6 611 ms * 604 ms ebt-P6-0-intl03.spo.embratel.net.br [200.230.0.13]
7 * 837 ms * ebt-SO-1-0-1-intl02.mianap.embratel.net.br [200.230.3.158]
8 791 ms 917 ms * if-4-2.core1.MLN-Miami.teleglobe.net [66.110.68.21]
9 715 ms * 928 ms 216.6.48.9
10 * 1139 ms 996 ms 216.6.48.26
11 803 ms 785 ms * if-3-0.har1.A56-Atlanta.Teleglobe.net [64.86.8.26]
12 719 ms 765 ms 870 ms ix-2-0.har1.A56-Atlanta.teleglobe.net [64.86.9.6]
13 849 ms * 727 ms 72.14.236.173
14 * 713 ms * 216.239.43.182
15 733 ms 771 ms 766 ms 72.14.219.191

Rastreamento concluído.


complicado??? Não!!!
O que foi colado ai nada mais é que o caminho que vc percorre para chegar a determinado site, só de bater o olho vc notara que para chegar
ao omedi.blogspot.com eu passei primeiro pelo meu proxy transparente que geralmente eh um ip da mesma rede que a sua ou algo antes do 3 ou 4 salto
então a partir desse exemplo temos o proxy no 10.111.222.1 ou no ifc-gw.MEU..... (ocultei o nome de proposito... ) ate ai beleza agora vamos ver qual porta
o seu proxy esta escultando para isso temos o netstat com a sintaxe /b que vai sair algo como (execute o comando e faça um pedido em seu navegador para abrir a pagina):

TCP sofia:1290 72.14.219.191:http ESTABLISHED 2968
[firefox.exe]

Onde:

TCP = Protocolo
Sofia = hostname
1290 = porta em que meu proxy navega
72.14.219.191 = ip do omedi
http: = a porta 80 acima citada ( ou seja ... omedi na porta 80 ok!)
ESTABLISHED = Conexão ok, transferindo os dados
2968 = PID
[firefox.exe] = No caso o meu navegador ou o programa que esta a fazer a conexao, pode ser IE.exe, MSNMSGR.exe...

bem eh mais ou menos isso sabendo qual ip do seu proxy e qual porta ele ouve basta que vc procure um que esteja na mesma porta que ele
http://www.proxy4free.com/page1.html nesse endereço vc encontrara alguns.Configure seu navegador e boa sorte!!!

caso nao de certo madem me um email com TRACERT no assunto e uma copia de seu tracert que eu traduzo e vejo a melhor forma para vc conectar

---> tckbronhaman@gmail.com

abraços!!!!

11/9/06 22:32
Padeiro disse...
Vai no Google que acha muita coisa:

http://webmessenger.msn.com/

http://www.guiadohardware.net/comunidade/orkut-entrar/315789/

http://inutilidades.hex.com.br/archives/2005/09/05/proxys-acesso-rapido-acesse-sites-bloqueados/

http://inutilidades.hex.com.br/archives/2005/06/08/orkut-bloqueado-sites-alternativos/

afinal, nem só de pão vive o homem!

11/9/06 22:40
Anonymous disse...
www.safelizard.com

11/9/06 23:07
Anonymous disse...
use "https" (ao inves de http) antes do endereço, também pode digitar "images." entre o www e o endereço doi site

11/9/06 23:30
LeBret disse...
vc pode usar o www.hidemyass.com, nunca consegui q funcionasse pra orkut, mas pra outros conteúdos, dá certinho. Valeu, Chefia!

11/9/06 23:50
Edd disse...
Rodolfo, quero novamente agradecer por ter colocado o link para o meu blog (SemiÓtica) na sua lista. SemiÓica agora está melhor: aprendi a colocar minhas próprias imagens no topo e tal.. passe lé, deixe sua impressão.Obrigado.

11/9/06 23:58
Arrigo Belami disse...
http://browseatwork1.com/ ou

http://www.browseatwork.net/

12/9/06 00:36
Raging Bull disse...
"PROCRIE"

Não quero. Quero só tentar e não conseguir nunca. Tem gente pra cacete neste mundo... tinha que cortar pela metade, no mínimo.

12/9/06 01:11
Cabo Laurindo disse...
No Boingboing (boingboing.net) tem um tutorial para driblar proxies. É só clicar num link no alto da página chamado "Defeat censorware".

12/9/06 01:55
Eder Tiago disse...
http://www.megaproxy.com/freesurf/

Tai um jeito fecinhu!!!

12/9/06 02:02
Anonymous disse...
msn é simples... entre nessa conexão segura:
https://www.meebo.com

não esquecer do https !!

Não tem como bloquear por SSl

Abraço!

12/9/06 02:08
Lobo Schmidt disse...
Tem uma história que dá para fazer isso com o serviço de tradução do Google. Mas eu nunca experimentei.

12/9/06 02:11
Rodolfo Castrezana disse...
Putaqueopariu. Saio algumas horinhas e olha a lista de opções. Quero ver como farei a seleção para montar um tutorial para isso (como o do Boingboing).

Valeu gente, aguardo mais dicas.

12/9/06 02:14
Afrânio disse...
Castrezana, coloca publica esse link... o tal do gol de gandula que a Silvia Regina validou.

http://www.youtube.com/watch?v=Y-A-EnoxpJ8

12/9/06 03:46
Willian disse...
Listas de servidores proxy:

http://tools.rosinstrument.com/proxy/

http://www.proxy4free.com/index.html

http://samair.ru/proxy/

http://kryptonian-x.blogspot.com/2005/05/proxy-bypasser.html

O esquema de usar o google (nunca tentei, tenho passe livre na minha empresa :P):

http://www.oreillynet.com/pub/h/4807

Como montar seu prórpio proxy:

http://www.antims.com/2006/04/15/blockzored/

12/9/06 04:08
Anonymous disse...
Pronto Galera Usem o Your-Freedom
ele é um programinha que passa por
proxy e firewalls da vida:

ele cria um tipo de tunel, entre o seu pc e o server deles:
"This is one of our Servers. Between your PC running the Your Freedom Client and your server the http-tunnel will be established."

1- acessem:
http://www.your-freedom.net/
2 - Se cadastrem
3 - Façam o download
4 - Usem :D

"Your Freedom" is a service that enables you to mainly do two things:

Bypass Firewalls, Proxies and content Filters
Stay anonymous while surfing, playing and downloading
The basic Your Freedom service is totally free of charge, however if you need a more comprehensive or faster service than the basic you can purchase upgrades.


Bruno "brmx" Marques
msn: bruno@jjsi.com.br
icq: 2774955
www.brmx.da.ru

Abraços a todos se pude ajudar
Seu Blog eh muito bacana.

12/9/06 05:37
AntaUnha disse...
aqui na empresa que trabalho não se pode nem olhar WEBMAIL então arrumamos um solução simples utilizo o MAXTHON v1.5.6 (Maxthon Tabbed Browser), nele é possivel inserir IP´s de proxys externo e é só navegar sem restrições. e para fazer um bypass no firewall para o MSN funcionar realmente tem que ser o HTTP-Tunnel v4.03065 sem ele não da pra ser feliz.

ver links:
http://www.maxthon.com/
http://www.http-tunnel.com/html/

Por Anta.

12/9/06 12:31
sercampos disse...
Na empresa em que trabalhava nao era permitido acessar orkut e msn. Instalei o programa your-freedom no site (http://www.your-freedom.net) e conseguia acessar todos os sites bloqueados no servidor da empresa.

13/9/06 13:18
O induvidado disse...
Seguinte, na empresa que trabalho usamos um pc sem entrada pra cd, diskete e pen drive. Ele acessa a rede interna da empresa e a internet mas com sites bloqueados (orkut, msn, kibeloco, omedi...). Alguns consigo entrar usando www.unipeak.com mas as letras ficam embaralhadas e outros não consigo entrar nem abrir videos. Não entendo muito de internet mas tentei acessar usando no endereço images, https, mas nada. Aparece "Acesso Não Autorizado". Não tem como efetuar o "Executar" no pc e nem o DOS. Que faço para conseguir acessar esses sites bloqueados??? Valeu pela iniciativa de distrair um pouco os funcionários na hora do trampo hehehe

13/9/06 14:47
Anonymous disse...
dou 10 reau pra quem ensinar a passar por cima do WEBSENSE que reina na rede da petrobrás!

Aquilo é um saco,ele faz bloqueio por
"cadastro". Nunca achei um web-proxy que ele deixasse abrir..e qdo achei um,ele barrava assim mesmo..

13/9/06 15:17
Kanguru Black disse...
Ainda não testei as dicas mas o farei com certeza, aki na PetroBRas bloquearam esta semana ate o OMEDI, assim não dá pra trabalhar. Aguardo ansioso a lista. Galera esta mandando ver. É isso aí. Esta semana testei mais de 30 dicas que achei no google mas nenhuma deu certo pro msn. Assim que der coloco aí pra geral.

13/9/06 22:24
Claudio disse...
http://unipeak.net/

14/9/06 01:34
felipe disse...
Baixe o Firefox, não precisa de acesso de administrador para instalar, ou senão procure no Google por Portable Firefox, é um Firefox para você por no seu memory stick, ele vem em formato self extractor do 7 zip então não tem problema algum para precisar instalar. Depois vá em opções, lá você vai encontrar configurar conexão na aba geral. Lá você põe o endereço de algum proxy que você encontrou, procure no Google free proxy, tem um monte. Lembrando que o endereço às vezes está na forma xxx.xxx.xxx.xxx:8000, isso significa que ele vai usar como porta 8000. Então a parte que você vai por na aréa onde tem http é o xxx.xxx.xxx.xxx e a porta será a 8000 (pode ser outra, dependo do proxy). Então marque a opção usar esse endereço para todos os protocolos.
Pronto. Você já pode acessar o site desejado.
PS: se o não tiver pegando o site desejado, tente outro endereço de proxy, é comum não pegar de primeira.

14/9/06 05:32
Anonymous disse...
Bom aqui eu uso para o okut o seguinte http://images3.orkut.com
para o messenger aqui é liberado, so não é possivel a transferencia de arquivos. Agora tem um cara chamado YOUR FREEDOM, baixei, instalei, e funciona tudo, mesmo com proxy e firewall, a unica coisa foda é que vc precisa de uma conta no your freedom. Mas é show funciona tudo mesmo..