e na autenticação de Webservice com um cartão A3 da Serasa, ele sempre dá o seguinte erro quando tento dar o load no Keystore:
sun.security.pkcs11.wrapper.PKCS11Exception: CKR_DEVICE_ERROR
java.io.IOException: load failed
at sun.security.pkcs11.P11KeyStore.engineLoad(P11KeyStore.java:766)
at java.security.KeyStore.load(Unknown Source)
at br.com.innersolutions.nfe.innernfewscli.InnerNFeWSCli4.nfeStatusServi
co(InnerNFeWSCli4.java:750)
at telas.TelaNfe$8.run(TelaNfe.java:544)
Caused by: javax.security.auth.login.LoginException
at sun.security.pkcs11.SunPKCS11.login(SunPKCS11.java:1238)
at sun.security.pkcs11.P11KeyStore.login(P11KeyStore.java:864)
at sun.security.pkcs11.P11KeyStore.engineLoad(P11KeyStore.java:753)
... 3 more
Caused by: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_DEVICE_ERROR
at sun.security.pkcs11.wrapper.PKCS11.C_Login(Native Method)
at sun.security.pkcs11.SunPKCS11.login(SunPKCS11.java:1222)
... 5 more
Quando tento usar o aplicativo testador de certificados da Serasa, ele fecha sem dar nenhum erro, já no meu código Java ele dá esse erro. Esse programa já roda em outro cliente, com o mesmo certificado A3 do Serasa, autentica normalmente.
O mistério vem de que quando acionamos o suporte da Serasa, eles “identificam” que o cartão está corrompido, e iniciam o processo de troca, só que essa troca já foi feita 4 vezes! 4 cartões com o mesmo problema???
Já tentamos usar o cartão usando outro leitor, já tentamos usar o mesmo em outro computador, e o erro é sempre o mesmo.
Um pouco de código:
Provider p = new
sun.security.pkcs11.SunPKCS11("C:/Inner/NFe/Certificados/SmartCard.cfg");
Security.addProvider(p);
try {
KeyStore ks = KeyStore.getInstance("PKCS11");
ks.load(null, senhaDoCertificado.toCharArray()); <-------------ERRO AQUI
} catch (IOException e) {
e.printStackTrace();
throw new Exception("Senha do Certificado Digital esta incorreta ou Certificado inválido.");
} catch (KeyStoreException e) {
JOptionPane.showMessageDialog(null, "Verifique se o certficado A3 está corretamente conectado á porta USB do computador");
}
O arquivo SmartCard.cfg
name=SmartCard
library=C:/Windows/System32/aetpkss1.dll
Informações adicionais
Keystore após getInstance do PKCS11:
SunPKCS11-SmartCard using library C:/Windows/System32/aetpkss1.dll
Informações do Assistente Serasa:
Assistente do CD Serasa Experian | Versão 3.6.1.3
Windows 7 64 bits Service Pack 1
IE 11.0.9600.19129
SafeSign 64-bits 3.0.87
Jair Padrão
Modelo do Cartão plugado na máquina do usuário - GD BURTI SCE 3.1 32k
Status do serviço de cartão inteligente iniciado automaticamente - Executando
Status da Configuração do ActiveX – Executada
Alguém tem alguma ideia do que pode estar acontecendo?