samuel-oliveira / java_certificado Goto Github PK
View Code? Open in Web Editor NEWProjeto Java de Gerenciamento de Certificado Digital
License: MIT License
Projeto Java de Gerenciamento de Certificado Digital
License: MIT License
Estou com um projeto usando Java 8 e com este pacote e está funcionando 100% gosto muito deste pacote :D, precisaria tirar uma dúvida relacionado ao Java 11 (Por culpa de outro projeto). Quando utilizado para tentar consultar o Status de Serviço do certificado ele retorna essa mensagem de erro:
java.lang.NoSuchMethodError: sun.security.pkcs11.SunPKCS11
só precisaria saber se o pacote já tem compatibilidade com o Java 11 e precisaria ser feito algo a mais ou atualmente só teria até o Java 8?
Estou tendo a seguinte stack trace ao carregar um cerficado A1:
java.lang.ClassCastException: class org.bouncycastle.asn1.DERPrintableString cannot be cast to class org.bouncycastle.asn1.ASN1TaggedObject (org.bouncycastle.asn1.DERPrintableString and org.bouncycastle.asn1.ASN1TaggedObject are in unnamed module of loader org.springframework.boot.loader.LaunchedURLClassLoader @140d1230) at br.com.swconsultoria.certificado.CertificadoService.lambda$null$9(CertificadoService.java:398) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) at br.com.swconsultoria.certificado.CertificadoService.lambda$getDocumentoFromCertificado$10(CertificadoService.java:390) at java.base/java.util.Optional.ifPresent(Optional.java:178) at br.com.swconsultoria.certificado.CertificadoService.getDocumentoFromCertificado(CertificadoService.java:389) at br.com.swconsultoria.certificado.CertificadoService.setDadosCertificado(CertificadoService.java:102) at br.com.swconsultoria.certificado.CertificadoService.certificadoPfxBytes(CertificadoService.java:82)
Alguém já passou por esse problema?
Ao tentar instanciar um certificado onde a senha tem caracter especial a Biblioteca retorna "Senha Inválida"
Exemplo de senha com erro: Pw34$.ç
O certificado digital da matriz é aceito na filial, então se essa função permitir buscar pela raiz do cnpj vai facilitar muito.
Olá Samuel, boa tarde!
Primeiramente, parabéns pelo seu trabalho, acompanho muitos seus posts no Javac, e muitos problemas meus já resolvi usando dicas suas, sem fazer uso da sua biblioteca.
Pois bem, eu desenvolvi um gerenciador de Nfe, e utilizo a biblioteca do Fincatto (não sei se vc conhece), é uma biblioteca excelente, porém estou enfrentando problemas para implementar a função de funcionamento com dois ou mais certificados digitais. Quando o certificado é A1, utilizo direto pelo arquivo, quando é A3, quando existe apenas um certificado instalado na maquina (repositório do windows) funciona normalmente, quando tem mais de um instalado, ele só pega o primeiro da lista. Daí olhando sua biblioteca, vi que vc implementou essa função de selecionar o certificado, dei uma olhada, mas gostaria de uma aplicação mais aprofundada, se não fosse pedir muito, de como implementar e fazer funcionar.
Desde já agradeço a ajuda.
Olá Samuel tudo bem? Estou com problemas pra instanciar a classe SunPKCS11, está me jogando o seguinte:
Exception: java.lang.NoSuchMethodError: sun.security.pkcs11.SunPKCS11.(Ljava/io/InputStream;)V
Estou utilizando Java 10 e já procurei em vários fóruns mas não encontro a solução, já se deparou com esse erro ou sabe como resolve-lo?
Estou usando o exemplo do wiki
Desde já agradeço !
Ao utilizar o método CertificadoService.certificadoPfxBytes() em um sistema WEB que tem várias instancias de aplicações VHOST, ou seja, rodando no mesmo tomcat observei que somente o ultimo fica correto, isto por que no código abaixo da classe CertificadoProperties método inicia você cria um arquivo temporário com nome fixo, assim sendo causa o problema, diferente do método que ler o arquivo, e ele claro sendo diferente não causa o problema.
Vou submeter um PR com a correção que acredito resolver o problema, e quando atualizar o JAR mudo para usar lendo dos bytes, obrigado por manter o projeto e sempre que eu puder vou contribuir.
Abraços.
Atual
case ARQUIVO_BYTES:
File cert = File.createTempFile("cert", ".pfx");
Files.write(cert.toPath(),certificado.getArquivoBytes());
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", cert.getAbsolutePath());
break;
Novo
case ARQUIVO_BYTES:
String nome = UUID.randomUUID().toString();
File cert = #File.createTempFile(nome, ".pfx");
Files.write(cert.toPath(),certificado.getArquivoBytes());
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", cert.getAbsolutePath());
break;
Olá @Samuel-Oliveira , percebi que teve o erro 'certificate_unknown', e colocou uma correção no projeto para este erro, estou enfrentando este mesmo erro no meu projeto, gostaria de saber se tem algum detalhe que possa me passar pra eu poder corrigir, não encontrei ainda, ele faz as operações com NFe mas no CTe está dando este erro, e não acontece com todos os certificados, somente com um em específico, desde já agradecido, att.
Olá Samuel.
Dei uma olhada na issue #4, que já foi finalizada, e estamos com um problema parecido aqui, porém não sei se é aplicável a solução que você colocou no neste artigo.
Nós temos uma funcionalidade de assinatura de diplomas digitais com certificado A3, e alguns usuários podem ter dois certificados no PC (eCPF e eCNPJ), como por exemplo um diretor de faculdade.
Basicamente o erro acontece quando:
O usuário escolhe o seu eCPF, informa a senha e a sua biblioteca retorna o certificado corretamente. Na sequência, o usuário escolhe o seu eCNPJ, informa a senha desse certificado (é diferente da do eCPF) e a sua biblioteca retorna o eCPF (da primeira autenticação).
Ao reiniciar o processo Java, escolher na primeira vez o certificado eCNPJ, ele funciona, porém se ele escolher o eCPF ...vai sempre retornar o eCNPJ.
No artigo que você fez, tem um parâmetro chamado "serial" que você usa para diferenciar cada certificado. A minha dúvida aqui é com o valor desse parâmetro...ele é obtido de algum lugar ou pode ser aleatório?
Boa tarde! Estou usando essa API para inicializar um certificado A3, mas ocorre o seguinte erro:
br.com.swconsultoria.certificado.exception.CertificadoException: Erro ao carregar informações do certificado: Erro Ao pegar KeyStore: load failed
Estou chamando o certificado e aplicando nas configs de NFe de acordo com o que foi mostrado aqui, e aqui
Segue meu codigo:
private static Certificado certificadoA3GemPC(String pass) throws CertificadoException {
String marcaA3 = TipoCertificadoA3.LEITOR_GEMPC_PERTO.getMarca();
String dllA3 = TipoCertificadoA3.LEITOR_GEMPC_PERTO.getDll();
return CertificadoService.certificadoA3(marcaA3, dllA3, pass);
}
Eu uso esse metodo aqui:
certificado = certificadoA3GemPC(pass);
ConfiguracoesNfe config = ConfiguracoesNfe.criarConfiguracoes(EstadosEnum.SP, AmbienteEnum.PRODUCAO, certificado, CriaConfigs.raizSistema.getPath() + File.separator + "Fiscal" + File.separator + "NFe" + File.separator + "Schemas");
System.out.println("Alias Certificado :" + certificado.getNome());
System.out.println("Dias Restantes Certificado :" + certificado.getDiasRestantes());
System.out.println("Validade Certificado :" + certificado.getVencimento());
return config;
Estou usando ambas os JARs (sem Maven) no meu projeto no netbeansm sendo carregados na seguinte ordem:
java_certificado-2.2.jar
java-nfe-4.00.15.jar
Estou usando o Java 8 (32 bits)
Estou me esquecendo de algum passo para inicializar corretamente? Grato desde ja.
Adicionar logica para escolher entre dois certificados A3 na mesma Maquina!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.