1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Conectar webservice

Ola a todos ,

Boa noite , estou quebrando a cabeça faz alguns dias já pra tentar conectar em um webservice para emissao da nfse . Eu comprei um certificado da caixa e veio no formato .p12 (3kb)

Instalei o certificado e via browser consigo olhar o wsdl da url :

https://www1.webiss.com.br/camanducaiamg_wsnfse_homolog/NfseServices.svc?wsdl

Tentei gerar o webservice via axis com o seguinte código

import java.io.IOException;

import java.security.GeneralSecurityException;

import org.apache.axis.wsdl.WSDL2Java;
import org.apache.commons.httpclient.HttpException;


public class GeradorWSDL {


    public static void main(String[] args) throws HttpException, IOException, GeneralSecurityException {

         String nfseservico = "https://www1.webiss.com.br/camanducaiamg_wsnfse_homolog/NfseServices.svc?wsdl";

          GeradorWSDL gerador = new GeradorWSDL(); 
          gerador.setProperties();
          gerador.geraWSDL(nfseservico, "service");


    }

    public void geraWSDL(String wsdl, String pack) {

        WSDL2Java.main(new String[] { wsdl, "-o", "src/main/java", "-p",
                "nfse." + pack });
        System.out.println("*** Geração concluída ***");
    }

    public void setProperties() {

        System.setProperty("javax.net.ssl.keyStoreType", "PKCS12"); 
        System.setProperty("javax.net.ssl.keyStore", "C:\\key.p12");
        System.setProperty("javax.net.ssl.keyStorePassword", "xxxx"); 


    }
}

mas o servidor retorna

java.io.IOException: Server returned HTTP response code: 403 for URL: https://www1.webiss.com.br/camanducaiamg_wsnfse_homolog/NfseServices.svc?wsdl
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
    at org.apache.axis.utils.XMLUtils.newDocument(XMLUtils.java:369)
    at org.apache.axis.utils.XMLUtils.newDocument(XMLUtils.java:420)
    at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:482)
    at org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:361)
    at java.lang.Thread.run(Unknown Source)

o que eu preciso fazer pra conseguir acessar esse webservice ?

Li algo sobre gerar um keystore , mas estou meio perdido de como gerar . Partam do principio que só tenho um arquivo.p12 .

Obrigado .

-- UPDATE

Seguindo alguns manuais fiz a seguinte rotina

importei meu certificado p12 no chrome e exportei no formato cer (vi que nao possui a cadeia completa dentro do p12 . Isso é um problema ? A seguir baixei toda a cadeia do meu certificado e toda cadeia do webiss que desejo me conectar e gerei uma keyStore e uma trustStore

Geracao da trustStore (servidor no qual desejo me conectar . Apresenta esses 3 certificados )
keytool -import -alias global-sign -file "GLOBAL SIGN.cer" -keystore webiss.jks (CA)
keytool -import -alias alpha-ssl -file "ALPHA SSL-G2.cer" -keystore webiss.jks (CA intermediario)
keytool -import -alias webiss -file "webiss.com.cer" -keystore webiss.jks (Site)


Geracao da keyStore (Meus certificados Apresenta a cadeia da caixa que meu certificado pertence )
keytool -import -alias jslsolucoes -file "jslsolucoes.cer" -keystore jslsolucoes.jks (Meu certificado)
keytool -importcert -file "AC CAIXA PJ v2.cer" -alias ac-caixa-pj-v2 -keystore jslsolucoes.jks (CA intermediario)
keytool -importcert -file "AC CAIXA v2.cer" -alias ac-caixa-v2 -keystore jslsolucoes.jks (CA intermediario)
keytool -importcert -file "ICP-Brasil v2.cer" -alias icp-brasil-v2 -keystore jslsolucoes.jks (CA)

Com o trecho de código 

System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");
        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", "JKS");
        System.setProperty("javax.net.ssl.keyStore","D:\\jslsolucoes.jks");
        System.setProperty("javax.net.ssl.keyStorePassword", "changeit");

        System.setProperty("javax.net.ssl.trustStoreType", "JKS");
        System.setProperty("javax.net.ssl.trustStore", "D:\\webiss.jks");
        System.setProperty("javax.net.ssl.trustStorePassword", "changeit");

Mas não está funcionando ainda continua retorna 403 (Forbidden) . Alguma luz do que ainda falta ?

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags webservices ssl ou faça a sua própria pergunta.