Cadeia de Certificados no Certificado do Cliente

2 respostas
D

Tenho a seguinte dúvida:

Minha aplicação já faz a emissão normalmente de CTe e NFe com certificado A3.
Faço todo procedimento normal de carregar o certificado do cliente, carregar o certificado do servidor de um Cacerts, utilizo JAXB para gerar o XML, etc.

Porém no certificado do cliente, sempre tenho que importar a cadeia de certificado para ele.
Esse procedimento é NORMAL? Nos fóruns é raro encontrar esse relato.
Quando não importo, tenho o seguinte erro:

{http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXException: Processing instructions are not allowed within SOAP messages
at org.apache.axis.encoding.DeserializationContext.startDTD(DeserializationContext.java:1161)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.doctypeDecl(AbstractSAXParser.java:339)
	at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.doctypeDecl(XMLDTDValidator.java:724)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.scanDoctypeDecl(XMLDocumentScannerImpl.java:671)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:931)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)

Recentemente implementei o envio através dos certificados A1,
ele carrega, assina, mais na hora de enviar da o mesmo erro.
Utilizei a aplicação http://portecle.sourceforge.net/ para incluir no certificado A1 a cadeia respectiva, porém,
continua o mesmo erro, como se o certificado do cliente estivesse inválido para executar o consumo do web service.
A cadeia de certificado não precisa estar somente no certificado do Webservice, como exemplo:
System.setProperty(“javax.net.ssl.trustStore”, “c:\RPA\CTeCacertsSVRS”);

Observação: Estou utilizando o “Axis 1.4”. Testei com o “Axis 2.0” funciona normal sem precisar importar a cadeia de certificado para o certificado.

Obrigado.

2 Respostas

Rodrigo_Sasaki

Bom, se você testou em outra versão e funcionou, acredito que não seja necessário isso sempre.

Mas o Axis sempre se mostrou um tanto instável, por isso muitos recomendam o uso do wsimport ao invés dele.

Por isso, e porque o wsimport já vem incluso na JDK :slight_smile:

E

É normal, porque a Sun (e depois a Oracle) não incluíram a Autoridade Certificadora Brasileira (ICP-Brasil) na lista de certificados-raiz. Lembro de ter aberto um bug sobre isso (no tempo da Sun, e no tempo em que o ICP-Brasil estava começando), mas fecharam esse bug faz muito tempo atrás.

Criado 21 de novembro de 2012
Ultima resposta 22 de nov. de 2012
Respostas 2
Participantes 3