Fala ai pessoal, juntando códigos daqui e dali pegos aqui mesmo no GUJ.
Utilizei um certificado A1 comprado no Serasa (arquivo PFX) e assinei e chamei um webservice de status do serviço do SEFAZ.
Então criei um jar que faz esse teste utilizando o certificado e executei em maquinas windows XP e vista, todos funcionaram numa boa.
Porém quando executo no linux ou no windows 2008 (server) retorna erro 403.17 (O certificado do cliente não se encontra no período de validade.)
Alguém já teve esse problema? sabe por que que não funciona nesses ambiantes?
No site do serasa diz que só funciona em ambiente windows XP, mas como quem lê o PFX é o próprio java, e não tem nenhum certificado instalado no SO, imagino que todos deveriam funcionar da mesma forma.
Obs: Então Bé, se você realmente tem certeza de que o certificado não é instalado no S.O e que o S.O. não interfere no processo, convenhamos que o problema está no Java ou no Browser certo?
Então, mas… voce tem certeza de que o S.O. nao interfere nesse processo ?
Eu também estou muito curioso com esse caso. Trabalho ha 2 anos com suporte a configuracao e instalacao de certificado digital e nunca testei no SVR 2008 e Linux.
Bom, de repente voce poderia verificar pq com o certificado HSM em server funciona e com o seu A1(browser) nao.
Olha, acredito que o certificado A1 seja apenas um arquivo contendo dados que podem ser validados pelo servidor, fazendo com que este tenha certeza da origem da requisição.
O que talvez aconteça é que o servidor tenha capacidade de detectar qual o SO que gerou a requisição e só aceita esse tipo de certificado quando for um Windows que não é Server, quando ele detecta server ele da aquela mensagem que não tem nada a ver.
O motivo pra isso?
Talvez o fato de obrigar quem usa o server comprar um HSM e gastar mais com isso.
Talvez eu esteja falando groselha.
Mas na minha opinião não tem nenhum impedimento técnico para esse certificado não funcionar no win2008 ou linux, já que a maquina virtual é a mesma, java não é write once run anywhere?
não acredito que o problema seja com o java
apenas se for um bug (o que acho improvável)
Falei com uma pessoa entendida no assunto lá no Serasa. Ele me informou que para que o seu certificado A1 funcione no SVR 2008 ou 2003, será necessário gerar o par de chaves no Windows XP ou Vista e exportar o certificado + cadeias do certificado. Com o arquivo exportado você conseguirá importá-lo para o Browser no SVR 2008. Mamão com açúcar! :lol:
Ele me explicou que o HSM só pode ser instalado em servidores por conta da plataforma de Hardware. O HSM é fabricado para arquiterura de servidores. A IBM vende esse tipo de serviço. O certificado A1 funciona em qualquer sistema operacional que trabalhe com Browsers, o que você precisa é apenas gerar o arquivo nos sistemas operacionais indicados e depois importá-los para onde vocÊ quiser!
o que acho estranho é que da maneira como configuramos o certificado para o java utilizar, independe do browser, segue um trecho de código:
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore",caminhoCertificado);//Aqui vem o arquivo do certificado do seu cliente
System.setProperty("javax.net.ssl.keyStorePassword", senha);//Aqui a senha deste certificado
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", caminhoCertificadoSefaz);//Aqui vem o arquivo
Se eu tenho que especificar qual o arquivo do tipo PFX para o java, qual a necessidade de instalar no browser?
e ainda sim
ele reconhece o PFX exportado pelo IE (esse PFX que tenho foi exportado numa maquina windows XP) porém o servidor recusa a requisição pois fala q a data expirou.
Outro detalhe, a minha maquina (onde fiz o teste e funcionou) é um windows vista que o certificado NÃO está instalado no browser, ou seja, eu acesso o PFX diretamente pelo java e o servidor aceita a requisição numa boa e responde com o status da maneira correta.
Você instalou as cadeias de certificado (Raiz Completa) no SVR 2008 ? “Geralmente” essa mensagem de data aparece quando o S.O. não tem as cadeias de certificados instalados no micro.
Então Bé. Fiz um atendimento hoje para a exportação(backup) de um certificado A1 e importação no IE de um Mac da Apple.
Deu certo!
Use os links que eu mandei pra você nos posts aí em cima. Vai dar certo, é só gerar o par de chaves no Windows XP e exportá-lo para o seu pen drive. Em seguida, abra o navegador e importe! Funciona que é uma beleza!
PS: Ainda não testei no SVR 2008.
PS2: NÃO GERE O PAR DE CHAVES NO WINDOWS VISTA POIS NESSE SISTEMA OPERACIONAL NÃO TEM COMO VOCÊ FAZER O BACKUP DO CERTIFICADO.
Então Bé, não sou desenvolvedor e não me entendo muito com código hehehehe…
Na verdade estou no fórum como um curioso mesmo(apesar de fazer ciência da computação).
Eu exportei um certificado e-CPF do tipo A1 para assinatura digital. Depois de importar no IE8 do cliente, realizamos um teste de assinatura com sucesso usando o site www.certificadodigital.com.br/suporte.
O NF-e A1 funciona da mesma maneira. Não sei como você vai integrar o certificado digital com o seu programa de emissão de nota fiscal, mas sei que ao menos você poderá realizar um teste de assinatura digital para verificar se o mesmo já está funcionando. Isso já ajuda bastante acredito 8)…
então
esse é o problema que estou citando desde o inicio!
num software em java, ele carrega o pfx diretamente, ele não olha as cadeias do sistema operacional, pelo menos é o que parece.
Na minha maquina eu NÃO tenho o certificado instalado (ela é windows vista) e meu código funciona, pois carrego o pfx diretamente.
Já no 2008 não funciona.
Eu vou fazer o teste de instalar, mas acredito que vai continuar sem funcionar
Então Bé, acho que você deveria solicitar ajuda para alguma empresa de certificação digital pois aqui no fórum acredito que ninguém podrá te ajudar. Essa pergunta é muito específica 8)…
Tente falar com alguém na Serasa, Certisign, Gemalto ou Imprensa Oficial. Acho que é a melhor opção no seu caso.
Alguém aí por acaso ja começou do zero com o certificado A1?
No projeto aqui da empresa onde trabalho criamos todas as classes
para a criação do XML, e este por fim já está montado.
Porém, a segunda parte (Signature) que contem a assinatura digital,
precisa ser preenchida usando o certificado.
Começamos pesquisando e tentando implementar o A3, mas agora estamos
querendo mudar para o A1, em que o arquivo fica na própria máquina,
e não num cartão com chip.
Obrigado!