wmixvideo / nfe

Nota Fiscal Eletrônica em Java.
Apache License 2.0
654 stars 377 forks source link

Erro carregamento do keystore #446

Closed wiltomar closed 6 years ago

wiltomar commented 6 years ago

Boa noite.

Estou com um problema ao tentar consumir algum serviço, se passo no método getCadeiaCertificadosKeyStore o meu arquivo jks, recebo a seguinte mensagem de erro: Connection has been shutdown: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Contudo se informo meu arquivo cacert no mesmo método, recebo a mensagem a seguir: Connection has been shutdown: javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

Como resolver esse problema?

fincatto commented 6 years ago

Bom dia @wiltomar. Tivemos o mesmo problema aqui na empresa onde trabalho e o problema estava no certificado, e não na cadeia. Ele funcionava em quase todos os serviços e endpoints, mas, em alguns, dava esse erro. Na época trocamos o certificado para outro emissor e tudo voltou a funcionar corretamente. A titulo de curiosidade, o certificado problemático tinha sido emitido pelos Correios, e trocamos para a Fenacon. Se tiver condições, faça o teste com outro certificado, emitido por outra certificadora, para ver se não se trata do mesmo problema.

wiltomar commented 6 years ago

Diego boa noite. Mas o que achei extranho nesse processo foi que, ele estava funcionando com meu certificado, em todos os endpoints, e do nada começou a me retornar essa mensagem, depois disso foi uma dor de cabeça só. Cordialmente,Wiltomar DUARTE

Em sexta-feira, 1 de junho de 2018 11:12:22 BRT, Diego Fincatto <notifications@github.com> escreveu:  

Bom dia @wiltomar. Tivemos o mesmo problema aqui na empresa onde trabalho e o problema estava no certificado, e não na cadeia. Ele funcionava em quase todos os serviços e endpoints, mas, em alguns, dava esse erro. Na época trocamos o certificado para outro emissor e tudo voltou a funcionar corretamente. A titulo de curiosidade, o certificado problemático tinha sido emitido pelos Correios, e trocamos para a Fenacon. Se tiver condições, faça o teste com outro certificado, emitido por outra certificadora, para ver se não se trata do mesmo problema.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

henriquelssantiago commented 6 years ago

Também estou tendo o mesmo problema. O certificado que estou utilizando está ok pois é utilizado em outras ferramentas e funciona. O certificado que utilizo é um .pfx, o .jks eu consegui gerar a partir desse .pfx com o keytool, só que tomo o mesmo erro que o colega acima.

segue stacktrace:

https://gist.github.com/henriquelssantiago/fcac673174c451171af88209f401af61

fincatto commented 6 years ago

Quem emitiu esse certificado?

2018-06-08 17:08 GMT-03:00 Henrique Santiago notifications@github.com:

Também estou tendo o mesmo problema. O certificado que estou utilizando está ok pois é utilizado em outras ferramentas e funciona. O certificado que utilizo é um .pfx, o .jks eu consegui gerar a partir desse .pfx com o keytool, só que tomo o mesmo erro que o colega acima.

segue stacktrace:

https://gist.github.com/henriquelssantiago/fcac673174c451171af88209f401af 61

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/wmixvideo/nfe/issues/446#issuecomment-395875837, or mute the thread https://github.com/notifications/unsubscribe-auth/AADj8NyeulLydKeeO2AraGkgI4FyGEOKks5t6tmogaJpZM4UVykh .

henriquelssantiago commented 6 years ago

AC ONLINE RFB

henriquelssantiago commented 6 years ago

https://www.onlinecertificadora.com.br/visualizaRepositorio?conteudo=191

fincatto commented 6 years ago

Você emitiu direto na RFB?

On Fri, Jun 8, 2018 at 5:19 PM, Henrique Santiago notifications@github.com wrote:

AC ONLINE RFB

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/wmixvideo/nfe/issues/446#issuecomment-395878699, or mute the thread https://github.com/notifications/unsubscribe-auth/AADj8Kmcm1d5Vg4ifF1gtr8ji3gJur5Sks5t6txSgaJpZM4UVykh .

henriquelssantiago commented 6 years ago

Sim, direto na rfb

fincatto commented 6 years ago

Esse seu certificado não funciona pra nenhum serviço? Nem consulta de status?

On Fri, Jun 8, 2018 at 5:32 PM, Henrique Santiago notifications@github.com wrote:

Sim, direto na rfb

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/wmixvideo/nfe/issues/446#issuecomment-395881943, or mute the thread https://github.com/notifications/unsubscribe-auth/AADj8HBcSCdpE2TnmnZ6rTVMEfJppnFeks5t6t9SgaJpZM4UVykh .

henriquelssantiago commented 6 years ago

Não, com nenhum serviço utilizando essa biblioteca. Mas utilizando outros sistemas e outras bibliotecas ele funciona.

henriquelssantiago commented 6 years ago

Acha que pode ser a forma como gerei o .jks? Pois eu tinha o .pfx e utilizando o keytool eu gerei o .jks. Só que a minha implementação de NFeConfig consegue ler normalmente o certificado, consigo extrair as informações do certificado por meio do NFeConfig normalmente.

fincatto commented 6 years ago

Porque você converteu seu PFX? O PFX já é no padrão PKCS12, então você não precisa converter. Por favor, leia o readme do projeto, tem um exemplo implementado lá. Att

2018-06-10 13:29 GMT-03:00 Henrique Santiago notifications@github.com:

Acha que pode ser a forma como gerei o .jks? Pois eu tinha o .pfx e utilizando o keytool eu gerei o .jks. Só que a minha implementação de NFeConfig consegue ler normalmente o certificado, consigo extrair as informações do certificado por meio do NFeConfig normalmente.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/wmixvideo/nfe/issues/446#issuecomment-396062276, or mute the thread https://github.com/notifications/unsubscribe-auth/AADj8OP4FVXB4ER1Ou-nphJRp7W8AD0_ks5t7Ul8gaJpZM4UVykh .

henriquelssantiago commented 6 years ago

Mas a biblioteca também pede um jks, por isso dei um jeito de converter o pfx em jks.

Segue minha implementação de NFeConfig. https://gist.github.com/henriquelssantiago/9910ce26792705bcf183fd02ae85619c

Não existe a necessidade de ter 2 os arquivos? Só precisa ter o .pfx? Eu segui exatamente o exemplo.

fincatto commented 6 years ago

Essa implementação está correta, mas como você gerou sua cadeia de certificados?

2018-06-11 8:24 GMT-03:00 Henrique Santiago notifications@github.com:

Mas a biblioteca também pede um jks, por isso dei um jeito de converter o pfx em jks.

Segue minha implementação de NFeConfig. https://gist.github.com/henriquelssantiago/9910ce26792705bcf183fd02ae8561 9c

Não existe a necessidade de ter 2 os arquivos? Só precisa ter o .pfx? Eu segui exatamente o exemplo.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/wmixvideo/nfe/issues/446#issuecomment-396210605, or mute the thread https://github.com/notifications/unsubscribe-auth/AADj8KM2RHL7Y38Ug6lq9giXTG_TGOzTks5t7lOAgaJpZM4UVykh .

henriquelssantiago commented 6 years ago

Da seguinte maneira:

keytool -importkeystore -srckeystore certificado.pfx -srcstoretype pkcs12 -destkeystore certificado-cadeia.jks -deststoretype JKS

ref: https://stackoverflow.com/questions/4217107/how-to-convert-pfx-file-to-keystore-with-private-key

henriquelssantiago commented 6 years ago

Perdão, eu não tinha entendido o que era pra fazer. Gerei o cacerts com o helper disponibilizado e apontei pra ele. Estou um pouco perdido nessa questão de certificado e cacerts, essa sopa de letrinhas ainda não peguei direito. Mas fica a dica de colocar em Wiki ou na documentação que o cacerts gerado deve ser colocado como path pro getCadeiaCertificadosKeyStore(). Até pra ajudar quem não sabe. Deu certo aqui.

fincatto commented 6 years ago

Essa informação está no readme. Inclusive a forma de gerá-lo, está mastigadinho lá.