NFe - Conexão usando KeySotore de um SmartCard

7 respostas
PatricMaffi

Bom dia galera do GUJ
estou com problemas para criar uma conexão para NFe
estou tentando configurar as propriedades através de um KeyStore pegando de um smart card
se alguem puder dar um auxilio
gostaria que dessem uma olhada e vejam como configurar as propriedades do System
e o que eu possa estar fazendo de errado

KeyStore ks =null;
        try {
            Provider p = new sun.security.pkcs11.SunPKCS11(CONFIGNAME);
            Security.addProvider(p);
            ks = KeyStore.getInstance("pkcs11");
            ks.load(null, PIN);
            KeyStore.PrivateKeyEntry pkEntry = null;
          
        }
KeyStore key= ks;

        System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
        Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
        System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
        System.setProperty("javax.net.ssl.keyStore", ""); //Aqui vem o arquivo do certificado do seu cliente   
        System.setProperty("javax.net.ssl.keyStorePassword", "xxxxxx"); 
       // System.setProperty("javax.net.ssl.keyStore",key.getCertificate("Empresa Ltda").toString()); 

        System.setProperty("javax.net.ssl.trustStoreType", "JKS");        
        System.setProperty("javax.net.ssl.trustStore", " ");//
String url = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico";
        // Criando e configurando o serviço
        try {
            Call call = (Call) new Service().createCall();
            // Configurando o endereço    
            call.setTargetEndpointAddress(url);
            // Marcando o método a ser chamado. 
            call.setOperationName("NfeStatusServico");
            call.setReturnType(XMLType.XSD_STRING);
            //PARAMETROS DA FUNÃ?Ã?O      
           Object[] param = new Object[]{soap,nfeDadosMsg};
           //  envelope.addTextNode(nfeCabecMsg);
         
            System.out.println(call.invoke(param));

7 Respostas

T

tá, mas que erro vc está visualizando?

PatricMaffi

retorno que eu recebo é
404 - not found

mais gostaria de saber as configurações para passar
no system.setProperty();

pois vejo todos os exemplos pegando arquivo pfx
mais gostaria de pegar as informações direto do smart card

T

para “pegar” as informações do smartcard use o tipo pkcs#11 (para A3) Não se esqueça de todo o trabalho que se tem para acessar um dispositivo externo em java…rs Dá uma procurada por certificação digital tipo A3 po pkcs#11 no forum que tu acha tudo.

PatricMaffi

eu consigo pegar as informações eu gero o KeyStore
meu grande problema eh utilizar nas configurações do de segurança
ali em cima como eu havia pedido

System.setProperty("javax.net.ssl.keyStore", "");

aqui onde vem o arquivo pfx por exemplo, se tem como eu pegar as informações direto do smart card

e os certificados validos

System.setProperty("javax.net.ssl.trustStore", " ");

essas informações que eu estou com dúvidas de como pega-los no smart card
ou se eu preciso obrigatoriamente gerar o arquivo pfx

T

Cara vc não extrai nada do pfx…

System.setProperty("javax.net.ssl.keyStoreType", "PKCS11");

só isso… Ae vc coloca o alias e o password do keystore.

T

opa que tem o truststore a ver com o smartcard?

PatricMaffi

bom o truestore não deve apontar os certificados confiáveis??
não sei se é obrigatório seu uso

Criado 10 de novembro de 2008
Ultima resposta 11 de nov. de 2008
Respostas 7
Participantes 2