Alias Certificado Digital Duplicado

Bom TArde, Tenho um Programa de NFE Rodando, que pega os Certificados digitais atravez do Repositorio do Windows.
Atravez do cod. abaixo:[code] //Procedimento de listagem dos certificados digitais
public String[] funcListaCertificados(boolean booCertValido) throws NoSuchProviderException, IOException, NoSuchAlgorithmException, CertificateException {

        //Estou setando a variavel para 20 dispositivos no maximo  
        String strResult[] = new String[20];  
        Integer intCnt = 0;  
  
        try {  
            KeyStore ks = KeyStore.getInstance("Windows-MY", "SunMSCAPI");  
            ks.load(null, null);  
  
            Enumeration<String> aliasEnum = ks.aliases();  
  
            while (aliasEnum.hasMoreElements()) {  
                String aliasKey = (String) aliasEnum.nextElement();  
  
                if (booCertValido == false) {  
                    strResult[intCnt] = aliasKey;  
                } else if (ks.isKeyEntry(aliasKey)) {  
                    strResult[intCnt] = aliasKey;  
                }  
  
                if (strResult[intCnt] != null) {  
                    intCnt = intCnt + 1;  
  
                }  
  
            }  
  
        } catch (KeyStoreException ex) {  
            Nfe nfe = new Nfe();
            nfe.setErro(ex.getMessage());
            Log.logs(nfe, "Carregar Certificados");
        }  
  
        return strResult;  
  
    }[/code]

Essa Função Retorna uma Lista com os Alias dos Certificados.

Mas peguei varios casos que o cliente tem mais de um certificado com o mesmo Nome, gerando assim a mesma Alias.
Na grande maioria das vezes o primeiro certificado está vencido!
Dai quando eu pego o certificado de tal alias, ele retorna o primeiro certificado, No caso o certificado errado.
Exemplo: [code]System.setProperty(“javax.net.ssl.keyStoreProvider”, “SunMSCAPI”);
System.setProperty(“javax.net.ssl.keyStoreType”, “Windows-MY”);

		System.setProperty("javax.net.ssl.keyStoreAlias", alias);
		System.setProperty("javax.net.ssl.keyStorePassword", senha);[/code]

Algué já passou por isso, ou poderia me ajudar com a pensar em uma solução? :?:

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6483657 indica que isso é um bug que somente será resolvido no Java 8 (argh).
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6672015 reclama do mesmo erro, mas tem um trecho de código que é um quebra-galho para o problema (infelizmente acho que, no seu caso, não vai funcionar, porque modifica os “aliases” dos certificados e não sei se o seu hardware permite que os aliases sejam modificados :frowning: :frowning: :frowning: )

Credo… Um Bug!
Fazer o que né, só resta esperar. A gambiarra citada não funcionou! Não se pode alterar Alias.

Mas Valeu!

A propósito, não sei se outro provider (que não o SunMSCAPI) consegue lidar com esse problema. Ele usa o “Friendly Name” para gerar os aliases? É que nunca mexi com esse provider (porque no meu tempo isso não existia e tive de fazer as coisas de outro jeito). Você pode ter N certificados com o mesmo “Friendly Name”, e é isso que não é muito amigável :frowning: