Boa noite galera
Tudo bom?
Eu estou com um problema, já faz uns 3 dias que estou procurando e não encontro a solução.
Eu estou consumindo um wsdl da NotaFiscal eletronica, e para isso eu preciso fazer uma conexão SSL, segue o link do wsdl https://www.nfp.fazenda.sp.gov.br/ws/arquivocf.asmx?WSDL
Eu baixei o certificado pelo browser, um arquivo DER, e eu importei ele para minha JVM com o seguinte comando
sudo keytool -import -alias example -keystore %JAVA_HOME%/jre/lib/security/cacerts -file notafiscal.der
E funciona corretamente, eu consigo consumir o serviço de buenas.
Eu queria saber um jeito de consumir esse serviço sem precisar importar o certificado para jvm, gostaria de importar ele pelo código java mesmo
Eu achei um código, porem eu passo o certificado ele está dizendo que o certificado está no formatado errado
SSLContext sc = SSLContext.getInstance("SSLv3");
KeyManagerFactory kmf =
KeyManagerFactory.getInstance( KeyManagerFactory.getDefaultAlgorithm() );
KeyStore ks = KeyStore.getInstance( KeyStore.getDefaultType() );
ks.load(new FileInputStream("/home/bruno/MaterialNotaFiscal/notafiscaCF"), "changeit".toCharArray() );
kmf.init( ks, "changeit".toCharArray() );
sc.init( kmf.getKeyManagers(), null, null );
ArquivoCF service;
ArquivoCFSoap12 port;
service = new ArquivoCF();
port = service.getArquivoCFSoap12();
Binding binding = ((BindingProvider) port).getBinding();
List<Handler> handlersList = new ArrayList<Handler>();
handlersList.add(new HeaderHandler(cbo.autenticacaoDAO.getAutenticacao()));
binding.setHandlerChain(handlersList);
((BindingProvider) port).getRequestContext()
.put(
"com.sun.xml.internal.ws.transport.https.client.SSLSocketFactory",
sc.getSocketFactory() );
Segue a exception
Exception in thread "main" java.io.IOException: Invalid keystore format
at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:650)
at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:55)
at java.security.KeyStore.load(KeyStore.java:1214)
at br.com.rotanotafiscalcf.business.CupomFiscalBO.main(CupomFiscalBO.java:69)
Gostaria de saber se tem um jeito de eu conseguir consumir esse serviço sem precisar importar o certificado para JVM, e sim importando diretamente pelo código.
Se alguém puder ajudar agradeço desde já
Até + e obrigado