Keystore com mais de uma chave privada

Bom dia,

Gostaria de saber se alguém já conseguiu alterar o certificado padrão usado pelo SSLContext quando acessado via HTTPS.

Tenho uma aplicação que usa a keystore WINDOWS-MY (certificados do internet explorer), porém, estou com três certificados instalados e preciso informar qual deles deverá ser usado na conexão https. A assinatura digital eu consigo sem problemas, mas, quando a conexão https e a configuração ssl é feita, não consigo informar o certificado a ser usado e ele sempre utiliza o primeiro.

laurowag não sei bem se entendi, mas eu faço da seguinte maneira:

//listo tds os certificados e forneço dps uma maneira para o usuário selecionar o certificado
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 (ks.isKeyEntry(aliasKey)) {
             		system.out.println(aliasKey);
		}
	}

//passo o alias do certificado selecionado e a senha
System.setProperty("javax.net.ssl.keyStoreAlias", aliasKey);
System.setProperty("javax.net.ssl.keyStorePassword", "senha");

será q ajuda em alguma coisa???

att,

Não conhecia a variável javax.net.ssl.keyStoreAlias, porém tentei fazer com a keystore WINDOWS-MY, porém não funcionou.

System.setProperty("javax.net.ssl.keyStoreType", "Windows-MY");
System.setProperty("javax.net.ssl.keyStorePassword", ssenhaecnpj);
System.setProperty("javax.net.ssl.keyStoreAlias", "Alias do certificado a ser usado");				}

Não sei se internamente a sunmscapi, que é o driver que usa para ler os certificados do internet explorer acata esse parâmetro, pois ainda sim continua puxando o certificado errado (possui 3 tokens com senhas diferentes).

você esta utilizando apenas 1 keystore?

eu utilizo assim para certificados A1, tenta setar essas propriedades:

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", "PKCS12");
System.setProperty("javax.net.ssl.keyStore","C:\\certificado.pfx");
		
System.setProperty("javax.net.ssl.keyStoreAlias", aliaskey);
System.setProperty("javax.net.ssl.keyStorePassword", "senha");

System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore","C:\\keystore.keystore");

boa sorte!

Boa tarde,

Para o A1 funciona normal, o problema é A3 com integração no Windows-MY.

Consegui contornar o problema usando a biblioeca PKCS#11 do próprio fabricante da pronova. Aparentemente funcionou.

Driver: ngp11v211.dll

Obrigado pela ajuda.

q bom!

magina precisando hahaha,

só tem um detalhe…e se vc trocar de token que não seja da pronova???

p.s: se a dúvida/problema estiver solucionado coloca um [Resolvido] no titulo do tópico blz?

att,