Bom dia Pessoal,

preciso da ajuda de alguem que conheca de seguranca e me indique o "caminho
das pedras". Meu objetivo e' praticar JAVA + SSL + JSSE e fazer alguns
exemplos apenas de teste, localmente, para aprender como todo funciona. 

Ja dei uma estudada em toda a parte Java de seguranca, a nivel conceptual
(digital signature, certificate, cryptography algorithm, encryption,
message digest, providers, etc),  de API (java.security.*, JSSE) e
ferramentas (keytool, jarsigner, policytool) do Java 2, tudo menos JCE, por
causa das restricoes de download de USA (saben quando a Sun vai liverar
este produto, porque, pelo que sei, USA ja abriu mao das restricoes).


Especificamente, minha ideia e' fazer os seguintes exemplos de teste:

1) um exemplo de acesso a um servidor com HTTPs atraves de Netscape, sem
java, e que retorne um HTML bobo, estatico, tipo "Hello World", mas
criptografado.

Nao consegui achar um bom tutorial de HTTPs, mas pelo que entendi, forma
parte do protocolo que o servidor mande, antes de mais nada, seu
certificado. O browser checa que o certificado esteja regisrtado por algum
cartorio reconhecido (na lista de cartorios locais ao browser). Se nao
estiver, nada feito. Se reconhece o certificado como valido, comeca a
transmitir dados criptografados com a chave publica do certificado, que
somente poderao ser de-criptografados e lidos pelo servidor, porque so ele
possui a chave privada. O servidor, por sua vez, manda dados criptografados
com sua chave privada; estes dados serao de-criptografados pelo browser
atraves da chave publica que tirou do certificado (porem qq hacker que
fique no meio, que pegue os dados enviados pelo servidor e tenha a chave
publica do mesmo, podera ler esta informacao; ai a necessidade de ter o
certificado tambem do cliente e por isto o crescimento do padrao SET). 


Para rodar este exemplo vou precisar, e' claro, de um certificado para o
servidor. Vcs imaginam que nao quero pagar um certificado. Atraves do
Keytool e' possivel gerar chaves (publicas,privadas) e o correspondente
self-certificate. Este self-certificate pode ate ser exportado para
arquivo. Eu tentei importar no Netscape este certificao, na parte de
"yours", mas nao funcionou.

Primeira pergunta:

a) e' possivel gerar self-certificados com o Keytool para fazer este tipo
de teste ? Como ? O Netscape apenas importa certificados do tipo PKCS12 ?
Como gerar estes tipos com o Keytool ou API ? Existe alguma outra
alternativa ?

Como disse anteriormente, nao consegui um link com informacao "para leigos"
de HTTPs e por tanto nao imagino se devo colocar na pagina HTML algum
cabecalho especial, ou se o Webserver se encarrega de fazer tudo isto
automaticamente.

Segunda pergunta:

b) Como deve ser o cabecalho das paginas para HTTPs ?

Terceira pergunta:

c) Eu tenho apenas o servidor que vem com o jswdk, e agora tambem fiz o
download do Tomcat 3.0, que aparentemente suporta algo de seguranca. Pelo
que vi o Apache nem vem com a parte de seguranca por causa das restricoes
de USA, de qq forma nao tenho ele. Mas, e' possivel fazer este exemplo
teste com o jswdk ou Tomcat ? Se nao, existe algum webserver simples,
gratis, pequeno, pata WIN, com o qual possa fazer meus testes ?



2) um segundo exemplo de acesso que quero fazer e' atraves de Netscape,
porem chamando a um servlets, com alguns parametros, e que retorne um HTML
bobo, criptografado, usando JSSE. Imagino que se consigo fazer o teste
anterior nao terei problemas em fazer este. Porem:

Quarta Pergunta:


d) existe alguma forma de usar browsers e webserevers, ou servelts + JSSE,
de tal forma de que o cliente tambem tenha um certificado e a autenticacao
seja dupla ? ou , e' possivel usar browsers e o SET ? Teria como eu fazer
uma exemplo local usando esta forma de autenticacao/criptografia com
browsers ? Como ? Como esta o "estado da arte" para que todas as empresas e
individuos possam ser reconhecidos atraves de seu proprio certificado ?


Bom, disculpem que o e-mail seja um pouco longo. Mas resulta dificil falar
de seguranca e nao explicar direito o que se pretende, e desde ja, muito
obrigado a todos os pela ajuda,


Daniel (de Rio)


Daniel

    --------------------------- LISTA SOUJAVA ---------------------------
    http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
    [dúvidas mais comuns: http://www.soujava.org.br/faq.htm]
    [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
    ---------------------------------------------------------------------

Responder a