Problema certificado digital - PKIX path building failed

Pessoal,

Estou com um problema que já foi discutido aqui. Li todos, fiz todos os testes mas continua o mesmo problema.
Estou colocando um sistema de NFE para rodar, mas agora está dando o seguinte erro:

PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Pelo que eu li o java não identifica o certificado digital.

Estou testando pelo webservice
https://homologacao.nfe.sefazvirtual.rs.gov.br

Baixei o arquivo .p7b com a cadeia de certificado, instalei e não funcinou.
Usei o InstallCert para instalar tb não funcionou.

Até mesmo adicionei um método que desabilita está verificação do certificado mas tb não funcionou.

Alguém poderia dar uma ajuda, dar uma luz pra eu ver como isso funciona.

Estou testando o sistema usando o Junit e também pelo Maven.

Meu windows é o 7.

Estou pedido nissso hheehhe

geralmente essa exception é pq não localizou o certificado.

posta o código onde vc o utiliza.

vc gerou o keystore?

att,

Bom, esse é um problema.
Estou tentando executar um projeto chamado JNFE que é open source.
Dai estou apanhando para entender como ele faz as coisas. Tb piora por ser a primeira vez que trabalho com certificado digital.
Esse projeto nao existe documentação nenhuma.
Não gerei esse keystore. Nem sei a sua finalidade na verdade.

Achei esse método aqui que ele passa.


public class TransportKeyStoreBean implements InitializingBean {
	
	private final static String DEFAULT_KEYSTORE_URI  = "file:#{ systemProperties['user.home'] }/jnfe.pfx";
	private final static String DEFAULT_KEYSTORE_TYPE = "pkcs12";
	
	private String keyStoreUri;
	private String keyStoreType;
	private String keyStorePassword;
	private String trustStoreType;
	private String trustStore;
	private String trustStorePassword;

	/**
	 * A URI para a keystore usada para autenticar o transporte.
	 * 
	 * @param keyStoreUri
	 */
	public void setKeyStoreUri(String keyStoreUri) {
		this.keyStoreUri = keyStoreUri;
	}

	/**
	 * O tipo de keystore empregado para o transporte.
	 * 
	 * @param keyStoreType
	 */
	public void setKeyStoreType(String keyStoreType) {
		this.keyStoreType = keyStoreType;
	}

	/**
	 * A senha para acesso ao keystore empregado para o transporte.
	 * 
	 * @param keyStorePassword
	 */
	public void setKeyStorePassword(String keyStorePassword) {
		this.keyStorePassword = keyStorePassword;
	}
	
	/**
	 * Localização do aramzém seguro.
	 * 
	 * @param trustStore
	 */
	public void setTrustStore(String trustStore) {
		this.trustStore = trustStore;
	}
	
	/**
	 * Tipo do armazém do armazém seguro (cacerts).
	 * 
	 * @param trustStoreType
	 */
	public void setTrustStoreType(String trustStoreType) {
		this.trustStoreType = trustStoreType;
	}
	
	/**
	 * Senah do armazém seguro (cacerts).
	 * 
	 * @param trustStorePassword
	 */
	public void setTrustStorePassword(String trustStorePassword) {
		this.trustStorePassword = trustStorePassword;
	}

	public void afterPropertiesSet() throws Exception {
		if (keyStoreType==null || keyStoreType.length()==0) {
			logger.warn("Using default keyStoreType.");
			setKeyStoreType(DEFAULT_KEYSTORE_TYPE);
		}
		System.setProperty("javax.net.ssl.keyStoreType", keyStoreType);
		if (keyStoreUri==null || keyStoreUri.length()==0) {
			logger.warn("Using default keyStoreUri.");
			setKeyStoreUri(DEFAULT_KEYSTORE_URI);
		}
		System.setProperty("javax.net.ssl.keyStore", keyStoreUri);
		// TODO proteger senha da keystore de transporte com MD5 ou SHA
		if (keyStorePassword!=null && keyStorePassword.length()>0) {
			System.setProperty("javax.net.ssl.keyStorePassword", keyStorePassword);
		}
		if (trustStore!=null) {
			System.setProperty("javax.net.ssl.trustStore", trustStore);
		}
		if (trustStoreType!=null) {
			System.setProperty("javax.net.ssl.trustStoreType", trustStoreType);
		}
		if (trustStorePassword!=null) {
			System.setProperty("javax.net.ssl.trustStorePassword", trustStorePassword);
		}
		logger.info("Propriedades de transporte: {}", toString());
	}
	
    /**
     * toString
     * @return String
     */
    public String toString() {
        StringBuffer buffer = new StringBuffer();

        buffer.append(getClass().getName()).append("@").append(Integer.toHexString(hashCode())).append(" [");
        buffer.append("javax.net.ssl.keyStore").append("='").append(System.getProperty("javax.net.ssl.keyStore")).append("' ");
        buffer.append("javax.net.ssl.keyStoreType").append("='").append(System.getProperty("javax.net.ssl.keyStoreType")).append("' ");
        buffer.append("javax.net.ssl.trustStoreType").append("='").append(System.getProperty("javax.net.ssl.trustStoreType")).append("' ");
        buffer.append("javax.net.ssl.trustStore").append("='").append(System.getProperty("javax.net.ssl.trustStore")).append("' ");
        buffer.append("]");
      
        return buffer.toString();
    }

	
	/**
	 * Abre o  armazém seguro (cacerts).
	 * 
	 * @throws Exception 
	 */
	public KeyStore openTransportStore() throws Exception {
    	return SecurityUtils.openStore(keyStoreType, keyStoreUri, keyStorePassword.toCharArray());
	}
	
	/**
	 * Abre o gerenciador de chaves do armazém de transporte.
	 * 
	 * @throws Exception 
	 */
	public KeyManagerFactory openTransportKeyManagerFactory() throws Exception {
    	KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
    	kmf.init(openTransportStore(), keyStorePassword.toCharArray());
    	return kmf;
	}
	
	private static final Logger logger = LoggerFactory.getLogger(TransportKeyStoreBean.class);

consegui resolver uma parte
agora o erro é o seguinte:

javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source) [na:1.6]
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source) [na:1.6]
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(Unknown Source) [na:1.6]
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source) [na:1.6]
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source) [na:1.6]