To tentando fazer aqui em casa a autenticação client-cert
gerei um certificado x509 que está dentro da minha pasta home.
alterei o tomcat-users e o web.xml conforme tem que ser, e alterei o arquivo server.xml habilitando o HTTPS para a porta 8443.
oq falta eu fazer? ou oq eu posso estar fazendo errado, a mensagem que recebo é HTTP Status 400 - No client certificate chain in this request
description The request sent by the client was syntactically incorrect (No client certificate chain in this request).
Se vc configurou o tomcat para, no ssl, exigir o certificado do cliente (concordo que autenticar via client-cert sans client cert é interessante) - o cliente (browser, por exemplo) deve enviar um certificado de uma CA confiável (ou seja, que o trust manager goste) ou uma chain que contenha ao menos uma CA confiável.
Olhe:
http://emo.sourceforge.net/cert-login-howto.html
http://www.vorburger.ch/blog1/2006/08/setting-up-two-way-mutual-ssl-with.html
http://www.oreilly.com/catalog/tomcat/chapter/ch06.pdf
Em especial as partes sobre a configuração do cliente.
Ps- client-cert funciona, mas lembre-se a maioria das implementações (que eu conheça) NÃO olha crl, ocsp, etc…
Estudei pelo oq eu vi, eu preciso importar no browser o certificado do cliente, ceritificado pessoal dele…
e a extensão desse certificado é PKCS12 ou .p12, mas nao sei como gerar ele.
alguem sabe?
irmão, alguns conceitos (simplificados) antes:
certificado: no contexto de PKI, 90% das vezes significa um X.509v3. Este tipo de certificado é basicamente um record/struct que tem os dados pessoais do “dono” (subject) + chave pública do subject + dados de quem emitiu (issuer, uma CA normalmente) mais a assinatura digital do emissor. É esta assinatura que dá a garantia para quem recebe o mesmo (tb conhecido como ter fé ). O objetivo final é fazer um bind seguro entre os dados e a chave pública do subject.
chave privada (priv key): é o par da chave pública. É esta que vc vende o seu primogênito mas não entrega a chave. O que vc “faz” com uma vc só “desfaz” com a outra, por exemplo “assinar” é usar esta, pq qualquer uma com a pub key confere, da mesma forma se algúem quiser mandar algo p/ que só vc veja, ele usaria a pub key pq apenas vc com a priv conseguiria olhar.
PKCS12 (p12) - é uma estrutura que funciona como se fosse uma “carteira digital”, nela vc tem a sua priv key, o seu certificado e o da sua CA (usualmente numa chain). Em termos java é um keystore com uma key entry e várias certificate entries. Não é um “certificado”
Para criar, exitem várias ferramentas que geram ou convertem de <-> para keystore. Tem uma app. maneirinha da IBM chamada Key Manager (Keyman) que é molezinha de usar (http://www.alphaworks.ibm.com/tech/keyman)
Mas claro, sempre tem a openssl e o keytool… mas provavelmente a a sua fé na humanidade seria abalada (http://mark.foster.cc/kb/openssl-keytool.html)
Se eu não me engano na distribuição do jetty (em extra ou contrib) tinha um utilitário que convertia, mas não lembro se ele gera um p12.
Então para responder a sua pergunta, o seu cliente, para fazer ssl, tem que ter uma chave privada, e um certificado emitido por uma CA que o seu web server / trust manager engula. Um p12 é a maneira usual de agrupar isso, já que todos eles conseguem importar/exportar um p12.
Ps1- Se vc ver alguma referencia à pfx ignore… 8)
Ps2- Se vc gostou do pkcs12, vc vai adorar o pkcs15 :twisted:
qq coisa grita…
Eu já consegui gerar o meu PKCS12 através do keytool.
O lançe para fazer a autenticação client-cert o cliente precisa de um certificado digital dele, no caso o ideal seria o pkcs12 pq o browser reconhece melhor…
configurei todo certinho a autenticação client-cert só que quando eu rodo a aplicação aparece a seguinte mensagem HTTP Status 400 - No client certificate chain in this request.
O ruim é que nao se econtra quase nenhum material referente ao client-cert
Vamos tentar uma receita em português não estruturado:
No cliente (browser), ingredientes:
i) Uma chave privada
ii) Um certificado X509 emitido por uma CA que vc tenha posto como confiável
iii) [nem tanto opcional] A chain desta CA
modo de preparo:
misture bem os ingredientes num pkcs12, temperando a password a gosto e importe no browser. Verifique a importação: No IE é em tools->internet options->content>certificates, na aba “pessoal” está o seu certificado, o meio da chain está em “autoridades intermediárias” e a ca root está em “…raiz confiável”. No Firefox 2 é em ferramentas->opções->avançado->criptografia->certificados. Aqueça em banho-maria e conecte no seu servidor. Se esquentar demais o seu hd torra, cuidado.
Qual é o problema:
- O browser conecta e inicia o SSL
- O servidor responde “Oi, eu sou o server e tenho este certificado. Eu mostrei o meu agora vc mostra o seu, ok ?”
- O browser se faz de malandro diz ok e não manda nada
- O server se sentindo abusado, aborta com o code 400.
- O browser diz para vc que a culpa é do server que fechou a porta na cara dele.
se localizou ?
Amigos,
- O Serasa me enviou o meu certificado empresa.cer e ITI.cer, SerasaACP.cer e SerasaCD.cer
- Através do keyMan (IBM) importe o meu empresakeystore, empresa.cer, ITI.cer,SerasaACP.cer e SerasaCD.cer
- Salve tudo isso no formato .pfx (PCKS12)
- Instalei pelo internet Explorer
- Ao verificar no internet explorer as propriedades deste .pfx instalado, tem a seguinte mensagem:
este certificado raiz da autoridade de certificação não é confiável.Para ativar a confiabilidade, instale este
certificado no armazenamento de autoridades de certificações de raiz de confiança
1o. Detalhe: o período de validade está conforme o dia que criei o keystore pelo keytool . Exemplo: 28/10/2008 a 26/01/2008
e o certificado a validade é 14/11/2008 a 14/11/2009
2o. Detalhe: no caminho de certificação
está com x em vermelho com o nome do keystore criado
exemplo: empresakeystore
Status do certificado: Este certificado raiz da autoridade de certificação não é confiável
porque não está no armazenamento das autoridades de certificação da raiz de confiança
Qual seria o passo correto de criar o .pfx através da minha keystore (chave privada) e o .cer (fornecido pela AC Serasa)
O meu certificado é A1 Servidor.
Abraços,
Revelino
Pessoal, favor desconsiderar este problema acima, o que ocorreu é que o certificado estava com server/client ativado, não serve para a situação da
NF-e, desta forma já solicitei outro PJ Client ativado.
Obrigado pelo empenho de todos.