Certificados Digitais - NFe

Olá pessoal, estou implementando um módulo da Nota Fiscal Eletronica e tenho uma dúvida quanto ao acesso ao web service da receita federal.

  1. Como eu faço para aceitar o certificado digital da receita? Isso é no tomcat, no código da aplicação ou no sistema operacional?
  2. Como enviar o meu certificado digital para o web service da receita? É só configurar no tomcat?
    Existe algum tutorial? Não encontrei nada específico do certificado do cliente. Neste exato momento ainda não tenho o certificado, então ainda não tentei fazer a conexão.
    Valeu!

Seguinte. Obtive o certificado digital válido para acessar a nota fiscal eletronica, mas o mesmo se encontra em um dispositivo eToken. Consegui assinar o xml com a chave do certificado. O problema é enviar o certificado para o servidor da receita validar o certificado do cliente (o meu). Coloquei isso no arquivo server.xml do tomcat:

Criei um web service cliente usando axis1 e o wizard do eclipse. Porém na hora de acessar o service da receita dá o seguinte erro:

AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Unknown Source)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at org.apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.java:186)
at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191)
at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at projeto.com.br.nFEletronica.wsCliente.nfRecepcao.NfeRecepcaoSoapStub.nfeRecepcaoLote(NfeRecepcaoSoapStub.java:110)
at projeto.com.br.nFEletronica.ClienteWSTest.axis1ws(ClienteWSTest.java:23)
at projeto.com.br.servico.NFEService.getNotaFE(NFEService.java:138)
at projeto.com.br.servico.ProdutoNotaPedidoService.saveNotaFiscalEletronica(ProdutoNotaPedidoService.java:512)
at projeto.com.br.servico.ProdutoNotaPedidoService.save(ProdutoNotaPedidoService.java:521)
at projeto.com.br.servico.ProdutoNotaPedidoService.faturarPedido(ProdutoNotaPedidoService.java:353)
at projeto.com.br.servico.ProdutoNotaPedidoService.faturarPedido(ProdutoNotaPedidoService.java:201)
at projeto.com.br.servico.ProdutoNotaPedidoService$$FastClassByCGLIB$$916e9efe.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:694)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:629)
at projeto.com.br.servico.ProdutoNotaPedidoService$$EnhancerByCGLIB$$a8f31151.faturarPedido(<generated>)
at projeto.com.br.beans.distribuidor.financeiro.FaturamentoPedidoBean.faturarIntervalo(FaturamentoPedidoBean.java:154)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:126)
at javax.faces.component.UICommand.broadcast(UICommand.java:325)
at org.ajax4jsf.framework.ajax.AjaxViewRoot.processEvents(AjaxViewRoot.java:180)
at org.ajax4jsf.framework.ajax.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:158)
at org.ajax4jsf.framework.ajax.AjaxViewRoot.processApplication(AjaxViewRoot.java:329)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:75)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:213)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:96)
at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:220)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Unknown Source)
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(Unknown Source)
at sun.security.validator.PKIXValidator.engineValidate(Unknown Source)
at sun.security.validator.Validator.validate(Unknown Source)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)
at com.sun.net.ssl.internal.ssl.JsseX509TrustManager.checkServerTrusted(Unknown Source)
… 71 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source)
at java.security.cert.CertPathBuilder.build(Unknown Source)
… 76 more

{http://xml.apache.org/axis/}hostname:JULIANO

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:154)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at projeto.com.br.nFEletronica.wsCliente.nfRecepcao.NfeRecepcaoSoapStub.nfeRecepcaoLote(NfeRecepcaoSoapStub.java:110)
at projeto.com.br.nFEletronica.ClienteWSTest.axis1ws(ClienteWSTest.java:23)
at projeto.com.br.servico.NFEService.getNotaFE(NFEService.java:138)
at projeto.com.br.servico.ProdutoNotaPedidoService.saveNotaFiscalEletronica(ProdutoNotaPedidoService.java:512)
at projeto.com.br.servico.ProdutoNotaPedidoService.save(ProdutoNotaPedidoService.java:521)
at projeto.com.br.servico.ProdutoNotaPedidoService.faturarPedido(ProdutoNotaPedidoService.java:353)
at projeto.com.br.servico.ProdutoNotaPedidoService.faturarPedido(ProdutoNotaPedidoService.java:201)
at projeto.com.br.servico.ProdutoNotaPedidoService$$FastClassByCGLIB$$916e9efe.invoke()
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:694)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:629)
at projeto.com.br.servico.ProdutoNotaPedidoService$$EnhancerByCGLIB$$a8f31151.faturarPedido()
at projeto.com.br.beans.distribuidor.financeiro.FaturamentoPedidoBean.faturarIntervalo(FaturamentoPedidoBean.java:154)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:126)
at javax.faces.component.UICommand.broadcast(UICommand.java:325)
at org.ajax4jsf.framework.ajax.AjaxViewRoot.processEvents(AjaxViewRoot.java:180)
at org.ajax4jsf.framework.ajax.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:158)
at org.ajax4jsf.framework.ajax.AjaxViewRoot.processApplication(AjaxViewRoot.java:329)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:75)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:213)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:96)
at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:220)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Unknown Source)
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Unknown Source)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at org.apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.java:186)
at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191)
at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
… 59 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(Unknown Source)
at sun.security.validator.PKIXValidator.engineValidate(Unknown Source)
at sun.security.validator.Validator.validate(Unknown Source)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)
at com.sun.net.ssl.internal.ssl.JsseX509TrustManager.checkServerTrusted(Unknown Source)
… 71 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source)
at java.security.cert.CertPathBuilder.build(Unknown Source)
… 76 more

Parece que o tomcat não está encontrando o caminho do certificado. Estranho que na hora de assinar o xml eu consigo acessar o dispositivo, mas tb eu especifico o local do arquivo de configuração. No caso do tomcat eu adicionei a linha security.provider.7=sun.security.pkcs11.SunPKCS11 /token.cfg no arquivo java.security e no token.config eu tenho name = eToken
library = C:\WINDOWS\system32\eTpkcs11.dll.
Alguem tem uma idéia do que pode ser esse problema?

Este erro dá porque o certificado do Web Service é auto-assinado, ou você não tem o certificado root que assinou este certificado.
Veja o tópico abaixo como configurar um trustStore com o certificado do servidor:
http://www.guj.com.br/posts/list/15/71969.java

valeu pela dica oyama. Consegui resolver o problema anterior. adicionei o certificado da receita na lista de certificados confiaveis do java. Fiz o que dizia nessa página: http://blogs.sun.com/andreas/entry/no_more_unable_to_find, parece que funcionou. Tive que mexer um pouco na classe dele.
Mas agora apareceu um outro erro. Pelo visto ele não encontrou o certificado que está dentro do dispositivo eToken. O erro é o seguinte:

AxisFault
faultCode: {http://xml.apache.org/axis/}HTTP
faultSubcode:
faultString: (403)Forbidden
faultActor:
faultNode:
faultDetail:
{}:return code: 403
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>The page requires a client certificate</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
<STYLE type="text/css">
BODY { font: 8pt/12pt verdana }
H1 { font: 13pt/15pt verdana }
H2 { font: 8pt/12pt verdana }
A:link { color: red }
A:visited { color: maroon }
</STYLE>
</HEAD><BODY><TABLE width=500 border=0 cellspacing=10><TR><TD>

<h1>The page requires a client certificate</h1>
The page you are attempting to access requires your browser to have a Secure Sockets Layer (SSL) client certificate that the Web server will recognize. The client certificate is used for identifying you as a valid user of the resource.
<hr>
<p>Please try the following:</p>
<ul>
<li>Contact the Web site administrator if you believe you should be able to view this directory or page without a client certificate, or to obtain a client certificate.</li>
<li>If you already have a client certificate, use your Web browser’s security features to ensure that your client certificate is installed properly. (Some Web browsers refer
to client certificates as browser or personal certificates.)</li>
</ul>
<h2>HTTP Error 403.7 - Forbidden: SSL client certificate is required.<br>Internet Information Services (IIS)</h2>
<hr>
<p>Technical Information (for support personnel)</p>
<ul>
<li>Go to <a href=“http://go.microsoft.com/fwlink/?linkid=8180”>Microsoft Product Support Services</a> and perform a title search for the words <b>HTTP</b> and <b>403</b>.</li>
<li>Open <b>IIS Help</b>, which is accessible in IIS Manager (inetmgr),
and search for topics titled <b>About Certificates</b>, <b>Using Certificate Trust Lists</b>, <b>Enabling Client Certificates</b>, and <b>About Custom Error Messages</b>.</li>
</ul>

</TD></TR></TABLE></BODY></HTML>

{http://xml.apache.org/axis/}HttpErrorCode:403

(403)Forbidden
at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:744)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at projeto.com.br.nFEletronica.wsCliente.NfeRecepcaoSoapStub.nfeRecepcaoLote(NfeRecepcaoSoapStub.java:140)
at projeto.com.br.nFEletronica.ClienteWSTest.axis1ws(ClienteWSTest.java:26)
at projeto.com.br.servico.NFEService.getNotaFE(NFEService.java:138)
at projeto.com.br.servico.ProdutoNotaPedidoService.saveNotaFiscalEletronica(ProdutoNotaPedidoService.java:512)
at projeto.com.br.servico.ProdutoNotaPedidoService.save(ProdutoNotaPedidoService.java:521)
at projeto.com.br.servico.ProdutoNotaPedidoService.faturarPedido(ProdutoNotaPedidoService.java:353)
at projeto.com.br.servico.ProdutoNotaPedidoService.faturarPedido(ProdutoNotaPedidoService.java:201)
at projeto.com.br.servico.ProdutoNotaPedidoService$$FastClassByCGLIB$$916e9efe.invoke()
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:694)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:629)
at projeto.com.br.servico.ProdutoNotaPedidoService$$EnhancerByCGLIB$$e20d9c45.faturarPedido()
at projeto.com.br.beans.distribuidor.financeiro.FaturamentoPedidoBean.faturarIntervalo(FaturamentoPedidoBean.java:154)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:126)
at javax.faces.component.UICommand.broadcast(UICommand.java:325)
at org.ajax4jsf.framework.ajax.AjaxViewRoot.processEvents(AjaxViewRoot.java:180)
at org.ajax4jsf.framework.ajax.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:158)
at org.ajax4jsf.framework.ajax.AjaxViewRoot.processApplication(AjaxViewRoot.java:329)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:75)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:213)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:96)
at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:220)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Unknown Source)
org.springframework.orm.hibernate3.HibernateTemplate@1bea611
org.springframework.orm.hibernate3.HibernateTemplate@1cf5ee4
18:30:45,750 ERROR HtmlGridRendererBase:85 - Wrong columns attribute for PanelGrid _id4:_id5: -2147483648
18:30:45,750 ERROR HtmlGridRendererBase:85 - Wrong columns attribute for PanelGrid _id4:_id6: -2147483648
18:30:45,812 ERROR HtmlGridRendererBase:85 - Wrong columns attribute for PanelGrid _id4:_id33: -2147483648
18:30:48,312 ERROR HtmlGridRendererBase:85 - Wrong columns attribute for PanelGrid loginForm:_id0: -2147483648
Logim bean
projeto.com.br.servico.exception.PessoaException
at projeto.com.br.servico.PessoaService.getPessoaLogin(PessoaService.java:309)
at projeto.com.br.servico.PessoaService$$FastClassByCGLIB$$2eead599.invoke()
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:694)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:629)
at projeto.com.br.servico.PessoaService$$EnhancerByCGLIB$$96870620.getPessoaLogin()
at projeto.com.br.servico.LoginDistribuidorService.getPessoaLogin(LoginDistribuidorService.java:29)
at projeto.com.br.beans.distribuidor.login.LoginDistribuidorBean.actionLogar(LoginDistribuidorBean.java:35)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:126)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:72)
at Util.filter.CommomFilter.processAction(CommomFilter.java:52)
at javax.faces.component.UICommand.broadcast(UICommand.java:332)
at org.ajax4jsf.framework.ajax.AjaxViewRoot.processEvents(AjaxViewRoot.java:180)
at org.ajax4jsf.framework.ajax.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:158)
at org.ajax4jsf.framework.ajax.AjaxViewRoot.processApplication(AjaxViewRoot.java:329)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:75)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:213)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:96)
at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:220)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Unknown Source)
18:30:52,203 ERROR HtmlGridRendererBase:85 - Wrong columns attribute for PanelGrid loginForm:_id0: -2147483648
org.springframework.orm.hibernate3.HibernateTemplate@1bea611
org.springframework.orm.hibernate3.HibernateTemplate@1cf5ee4
18:30:57,328 ERROR HtmlGridRendererBase:85 - Wrong columns attribute for PanelGrid fmr:_id4: -2147483648
18:30:57,343 ERROR HtmlGridRendererBase:85 - Wrong columns attribute for PanelGrid fmr:_id5: -2147483648
18:30:57,359 ERROR HtmlGridRendererBase:85 - Wrong columns attribute for PanelGrid fmr:_id58: -2147483648
org.springframework.orm.hibernate3.HibernateTemplate@1bea611
org.springframework.orm.hibernate3.HibernateTemplate@1cf5ee4
18:31:14,859 ERROR HtmlGridRendererBase:85 - Wrong columns attribute for PanelGrid _id4:_id5: -2147483648
18:31:14,859 ERROR HtmlGridRendererBase:85 - Wrong columns attribute for PanelGrid _id4:_id6: -2147483648
18:31:14,906 ERROR HtmlGridRendererBase:85 - Wrong columns attribute for PanelGrid _id4:_id33: -2147483648
AxisFault
faultCode: {http://xml.apache.org/axis/}HTTP
faultSubcode:
faultString: (403)Forbidden
faultActor:
faultNode:
faultDetail:
{}:return code: 403
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>The page requires a client certificate</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
<STYLE type="text/css">
BODY { font: 8pt/12pt verdana }
H1 { font: 13pt/15pt verdana }
H2 { font: 8pt/12pt verdana }
A:link { color: red }
A:visited { color: maroon }
</STYLE>
</HEAD><BODY><TABLE width=500 border=0 cellspacing=10><TR><TD>

<h1>The page requires a client certificate</h1>
The page you are attempting to access requires your browser to have a Secure Sockets Layer (SSL) client certificate that the Web server will recognize. The client certificate is used for identifying you as a valid user of the resource.
<hr>
<p>Please try the following:</p>
<ul>
<li>Contact the Web site administrator if you believe you should be able to view this directory or page without a client certificate, or to obtain a client certificate.</li>
<li>If you already have a client certificate, use your Web browser’s security features to ensure that your client certificate is installed properly. (Some Web browsers refer
to client certificates as browser or personal certificates.)</li>
</ul>
<h2>HTTP Error 403.7 - Forbidden: SSL client certificate is required.<br>Internet Information Services (IIS)</h2>
<hr>
<p>Technical Information (for support personnel)</p>
<ul>
<li>Go to <a href=“http://go.microsoft.com/fwlink/?linkid=8180”>Microsoft Product Support Services</a> and perform a title search for the words <b>HTTP</b> and <b>403</b>.</li>
<li>Open <b>IIS Help</b>, which is accessible in IIS Manager (inetmgr),
and search for topics titled <b>About Certificates</b>, <b>Using Certificate Trust Lists</b>, <b>Enabling Client Certificates</b>, and <b>About Custom Error Messages</b>.</li>
</ul>

</TD></TR></TABLE></BODY></HTML>

{http://xml.apache.org/axis/}HttpErrorCode:403

(403)Forbidden
at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:744)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at projeto.com.br.nFEletronica.wsCliente.NfeRecepcaoSoapStub.nfeRecepcaoLote(NfeRecepcaoSoapStub.java:140)
at projeto.com.br.nFEletronica.ClienteWSTest.axis1ws(ClienteWSTest.java:26)
at projeto.com.br.servico.NFEService.getNotaFE(NFEService.java:138)
at projeto.com.br.servico.ProdutoNotaPedidoService.saveNotaFiscalEletronica(ProdutoNotaPedidoService.java:512)
at projeto.com.br.servico.ProdutoNotaPedidoService.save(ProdutoNotaPedidoService.java:521)
at projeto.com.br.servico.ProdutoNotaPedidoService.faturarPedido(ProdutoNotaPedidoService.java:353)
at projeto.com.br.servico.ProdutoNotaPedidoService.faturarPedido(ProdutoNotaPedidoService.java:201)
at projeto.com.br.servico.ProdutoNotaPedidoService$$FastClassByCGLIB$$916e9efe.invoke()
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:694)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:629)
at projeto.com.br.servico.ProdutoNotaPedidoService$$EnhancerByCGLIB$$e20d9c45.faturarPedido()
at projeto.com.br.beans.distribuidor.financeiro.FaturamentoPedidoBean.faturarIntervalo(FaturamentoPedidoBean.java:154)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:126)
at javax.faces.component.UICommand.broadcast(UICommand.java:325)
at org.ajax4jsf.framework.ajax.AjaxViewRoot.processEvents(AjaxViewRoot.java:180)
at org.ajax4jsf.framework.ajax.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:158)
at org.ajax4jsf.framework.ajax.AjaxViewRoot.processApplication(AjaxViewRoot.java:329)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:75)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:213)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:96)
at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:220)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Unknown Source)

Como informei anteriormente configuei o ssl do tomcat na seguinte forma:

adicionei a seguinte linha no arquivo java.security:

security.provider.7=sun.security.pkcs11.SunPKCS11 /token.cfg

e no token.cfg eu tenho:

name = eToken
library = C:\WINDOWS\system32\eTpkcs11.dll.

O que há de errado com a configuração? Devo configurar o meu certificado no tomcat ou no código da aplicação? Alguem já trabalhou com certificados PKCS11 em dispositivos eToken? ou algo parecido?

Alguém tinha comentado que o certificado foi emitido errado (sem o bit “Client”) e por isso não tinha conseguido se conectar ao site https que requer Client Certificates.

O programa do eToken informa que o certificado é do tipo de autenticação de cliente e de autenticação de e-mail. tentei pegar o certificado pelo alias, mas tb não funcionou. Eu consigo pegar o certificado X509 e a chave do eToken no códio Java. Tem como colocar o certificado ou a chave na requisição por código?

Recebi outro certificado PKCS11 de uma outra empresa e está dando o mesmo problema. Agora mudei para axis2 e aparece o erro 403 forbiden. O pior é que ele está acessando o certificado na hora de chamar o service da receita. Comprovei isso passando um alias errado pra configuração do certificado no tomcat. Ele informou que o alias estava errado. Coloquei o alias certo e ele não reclamou. E e luz do eToken pisca na hora. Ou ele não está enviando o certificado na requisição ou o certificado é inválido. Comentaram que poderia ser que o bit “Client” estaria desativado, como faço pra verificar isso? No programa do eToken tem a declaração: Certificate Usage: Autenticação de cliente, Email seguro. Só que está em portugues mesmo.
Só mais uma duvida: na hora de chamar o service eu estou mandando duas strings vazias para o cabeçalo e pra nfe. Esse erro de 403 não seria pq ele estaria tentando validar a assinatura do xml? Não tentei colocar o xml certo pq achei que é um problema de acesso ao serviço e ia colocar as informações certas depois.
Alguem já passou por um problema parecido?

Boa tarde.
Estou tendo dificuldades para eviar um certificado digital para um web service da nota fiscal eletronica. Criei o web service cliente usando o axis2. Gostaria de saber como eu faço o envio de um certificado PKCS11 para um web service. Tentei setar o certificado da seguinte forma:

System.setProperty(“javax.net.ssl.keyStoreType”, “PKCS11”);
System.setProperty(“javax.net.ssl.keyStore”, “NONE”);
System.setProperty(“javax.net.ssl.keyStorePassword”, “safeweb”);
System.setProperty(“javax.net.ssl.keyStoreProvider”, “SunPKCS11-eToken”);

Não funcionou. retorna um HTML com o erro 403.7, certificado cliente requerido. Tb tentei colocar antes esse código:

System.setProperty(“java.protocol.handler.pkgs”, “com.sun,net.ssl.internal.www.protocol”);
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

Tb não funcionou. Tb estou tentando enviar o keystore de um outro certificado que tenho armazenado na máquina. Tb não funcionou. O erro é sempre o mesmo: retorna um HTML com o erro 403.7, certificado cliente requerido. Será que o certificado não é de cliente ou simplesmente não está sendo enviado? Se fosse erro no certificado acho que iria ser retornado um xml com o código do erro e não um html. Tenho 3 certificados aqui, sendo dois A3 e um A1, e nenhum funciona. Alguem pode me dar uma luz?

Boa noite

Para quem quiser saber, Juliano e eu conseguimos estabelecer a conexão no server.

O erro foi na hora de extrair o certificado no Internet Explorer, tem que escolher a opção “Sim, exportar a chave particular”, depois escolhemos “Troca de imformações pessoais PKCS n 12(*.pfx)” selecione “Ativar proteção de alta segurança”.
Na classe que chamamos o serviço:

          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","caminho\\certificado.extensao_que_exportou");
	System.setProperty("javax.net.ssl.keyStorePassword", "Senha_do_certificado");

	System.setProperty("javax.net.ssl.trustStoreType", "JKS");
	System.setProperty("javax.net.ssl.trustStore",	"caminho\\certificados_do_server"); 

Qualquer dúvida entrar em contato teremos prazer em ajudar(GRATUITAMENTE, SEM QUERER VENDER CONSUTORIA), pois não desejo que ninguem passe o que passamos para descobir esse detalhe.
michelvalent@gmail.com, msn - michelvalentin@hotmail.com

Aqui todos se ajudam.

Parabéns!!! Vcs estão ajudando varios desenvolvedores… Agora lendo essas dicas, comecei a achar a luz no fim do tunel. Valeu…

Olá Pessoal
bom, como todos desse tópico estou com o processo de nota fiscal eletrônica.
O Michel Valentin me ajudou muito, e pediu que postasse aqui as soluções que eu encontrasse
pois já havia ajudado diversas pessoas e empresas, sem cobrar nada, pedindo apenas que postassem aqui as soluções
e como podemos ver ninguém retribuiu, então vamos lá a algumas considerações.

CERTIFICADO DIGITAL CLIENTE.
Se você está tentando transmitir, e está recebendo uma msg com o código 403.7 no corpo da resposta então o problema é o certificado cliente.
Se você está na máquina que solicitou o certificado pela internet sem problemas, mas se não você deve ter
recebido do seu cliente um disquete com um certificado .pfx e este deve ser instalado no seu IE.
Na sua aplicação, ao apontar o KeyStore, indique diretamente o arquivo do disquete, não instale e exporte que não dará certo.

  System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
  System.setProperty("javax.net.ssl.keyStore","caminho\\certificado.extensao_que_exportou"); //Este deve ser o arquivo .pfx original
  System.setProperty("javax.net.ssl.keyStorePassword", "Senha_do_certificado"); 

CERTIFICADO DO SERVIDOR.

Se está dando uma exceção parecida com :

[code]
faultDetail:
{http://xml.apache.org/axis/}stackTrace:javax.net.ssl.SSLHandshakeException
ou

at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Unknown Source)[/code]

então seu problema é com certeza o certificado do servidor.
Se seu caso for para o RS, fique tranquilo, no site da SEFA do RS tem muita informação útil
No meu caso, estou implementando para o PR, e tive dificuldades em conseguir qual era a unidade certificadora
mas depois de conversar com uma pessoa da Celepar (Pa…), que teve a boa vontade de me atender fiquei sabendo
que é a “CertSign”, e os certificados necessários são:
1 - ICP-Brasil
2 - CertiSign Multipla
3 - CertiSign Multipla V3
e podem ser encontrados no site http://www.iti.gov.br/twiki/bin/view/Certificacao/RepositoriodaACRaiz
Esses certificados devem ser instalados, e depois de instalados deve ser “empacotados” com o keytool
esse arquivo empacotado, gerado pelo keytool será informado no seguinte código.

  System.setProperty("javax.net.ssl.trustStoreType", "JKS");
  System.setProperty("javax.net.ssl.trustStore", "caminho\\arquivo_gerado_pelo_keytool"); 

Bom gente, espero ter ajudado, e caso tenham alguma dúvida podem entrar em contato
pelo email julianomatias.grupos @ gmail.com
com o assunto NOTA FISCAL ELETRONICA
terei o maior prazer em ajudar, assim como fui ajudado pelo Michel.
e quem tiver soluções, poste por favor, ajude também.

[]´s

Juliano Matias

 System.setProperty("javax.net.ssl.trustStoreType", "JKS");
 System.setProperty("javax.net.ssl.trustStore", "caminho\\arquivo_gerado_pelo_keytool"); 

Cara, como que faz pra empacotar os certificados no keytool???

Bom dia

Cara também não sabia direito, li um tópico de um castelhano e consegui resolver todas minhas dúvidas.
Ai o site: http://www.programacion.net/java/tutorial/apachesoap/3/

keytool -import -alias nfe -keystore <caminho_para_o_keystore> -file <caminho_completo_para_o_cert>

Assim o KeyTool vai importar o teu certificado para dentro do keystore que tu acaba de criar. Ele vai pedir uma nova senha para o novo keystore.

O caminho para o KeyStore vai ser usado no segundo trecho de código passado pelo julianomatias.

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

Se eu entendi certo, esse keystore já deve existir previamente, certo? Só que o certificado que possuo não gerei ele pelo keytool, peguei de uma Entidade certificadora, com o formato .p12…

Cara… se ele não existir, o keytool vai criar. Te pedindo uma nova senha para este NOVO keystore.

Se ele já existir, vai te pedir a senha dele, para poder importar o certificado para dentro dele.

Nunca usei para este tipo de certificado. Neste caso específico, foi para o ACCertiSignMultipla_2004.crt disponível no site do ITI o qual o link está no post do juliano.

Então, resumindo, pra ver se eu entendi:

  • Eu tenho que pegar o meu certificado, no formato p12, e setar o keystoretype;
  • Eu tenho que pegar o certificado do servidor, no formato .crt, ou .cer, que estiver no link do ITI e exportar prum arquivo .keystore.

É isso, resumidamente?

Não cara…

tu só vai usar o KeyTool para o certificado do server. Como eu te demostrei.
E apontar para o keystore via java.

O teu certificado tu vai apontar direto para ele via java.

Exatamente como foi explicado pelo julianomatias no post dele nesta mesma thread do fórum.

Bom dia a todos,

 Estou tentando comunicar com o Web Service  NFE, estou tentando inicialmente verificar o status do serviço, alguem já conseguiu fazer este processo ?

 Vou descrever as etapas que eu utilizei, talvez esteja fazendo alguma coisa errada:

1º Instalei o “NF-e CERTIFICADO.pfx”, abri o IE e exportei o “(x) X.509 Binário codificado DER (*.cer)”
2º Gerei o .jks usando o código: “keytool -import -alias nfe -keystore nfe.jks -file c:\cer_nfe.cer”
3º Importei o wsdl “nfeStatusServicoNF.wsdl” no eclipse, onde foi gerado todas as classes do wsdl.
4º No metodo main() criei o código abaixo:

public class StatusNFE {

public static void main(String[] args) {
	// TODO Auto-generated method stub

	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", "a:\\NF-e CERTIFICADO.pfx"); // Arquivo Original
	System.setProperty("javax.net.ssl.keyStorePassword", "xxxx");

	System.setProperty("javax.net.ssl.trustStoreType", "JKS");
	System.setProperty("javax.net.ssl.trustStore","c:\\nfe.jks");

	System.out.println("Verificado status...");

	NfeStatusServico_Service hService = new NfeStatusServico_ServiceLocator();
	System.out.println("Criou hService");
	try {
		NfeStatusServico_PortType port = hService.getNfeStatusServico();
		System.out.println("Criou port");
		try {
			System.out.println(port.nfeStatusServicoNF("1.02", "STATUS"));
			System.out.println("verificou status");
		} catch (RemoteException e) {
			System.out.println("-------------------------------------");
			System.out.println(e.getMessage());
			System.out.println("-------------------------------------");
			e.printStackTrace();
		}

	} catch (ServiceException e1) {
		e1.printStackTrace();
	}
}

}

Ao rodar o código acima, sempre esta retornando a mensagem de erro abaixo:

; nested exception is:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Alguem já passou por este problema, será que estou fazendo algum processo errado na geração do .jks ???

me ajudem por favor ??